StratCraftStratCraftPortuguês

Bollinger Bands (BBANDS)

API StratForge C++23 verificada, cálculo e inicialização.

Route: /indicators/bbands/

Média móvel simples fixa e desvio padrão populacional (divisão por n, não n - 1). As três bandas têm a unidade dos preços de entrada. Este construtor não oferece movav.

mid = SMA(period)

top = mid + devfactor * sqrt(sum((price - mid)^2) / period)

bottom = mid - devfactor * sqrt(sum((price - mid)^2) / period)

Parâmetros

  • period = 20
  • devfactor = 2.0

Exemplo numérico

Com period = 4 e preços [2, 4, 6, 8]: média 5, desvios quadráticos [9, 1, 1, 9], variância 5, desvio sqrt(5). Para devfactor = 2: mid = 5, top = 9.472136, bottom = 0.527864 (seis casas decimais). As três primeiras barras dão NaN; a quarta é válida. Por predefinição são necessárias 20 barras.

Usar preços finitos e period/lookback positivos. Esta versão normaliza zero para 1, não valida valores de segurança personalizados nem garante resultados úteis para preços não finitos. Os exemplos não são sinais de negociação nem provas de retorno.

C++23 API — StratForge

#include <stratforge/indicators/bollinger.hpp>
#include <cassert>
#include <cmath>
#include <iomanip>
#include <iostream>

int main() {
    stratforge::Line<double> close;
    stratforge::BollingerBands bands(close, 4, 2.0);
    assert(bands.minimum_period() == 4);
    for (double price : {2.0, 4.0, 6.0, 8.0}) {
        close.forward(price);
        bands.next();
        if (close.size() < 4) {
            assert(std::isnan(bands.mid()[0]));
            assert(std::isnan(bands.top()[0]));
            assert(std::isnan(bands.bottom()[0]));
        }
    }
    assert(std::abs(bands.mid()[0] - 5.0) < 1e-9);
    assert(std::abs(bands.top()[0] - 9.472135955) < 1e-9);
    assert(std::abs(bands.bottom()[0] - 0.527864045) < 1e-9);
    std::cout << std::fixed << std::setprecision(6)
              << bands.mid()[0] << " " << bands.top()[0] << " "
              << bands.bottom()[0] << "\n";
}

Reproduzir

StratForge d25404dcf2c3842ba304ddc60ac19cfec1f8aa37 (2026-08-28); GCC 14, C++23; scalar build, no xsimd dependency.

git clone https://github.com/StratCraftsAI/StratForge.git StratForge
git -C StratForge checkout --detach d25404dcf2c3842ba304ddc60ac19cfec1f8aa37
g++-14 -std=c++23 -O2 -Wall -Wextra -pedantic -IStratForge/include example.cpp -o example
./example

example.cpp: C++23 API. stdout:

5.000000 9.472136 0.527864

Fontes