Esta estratégia baseia-se no indicador de amplitude real média (Average True Range, ATR) para construir o canal SuperTrend, gerando sinais de compra e venda com base no preço de ruptura do canal SuperTrend. A estratégia combina os benefícios do acompanhamento de tendências e do gerenciamento de stop loss para acompanhar efetivamente a direção da tendência.
O trajeto ascendente e descendente do canal de super-tendência é calculado pela seguinte fórmula:
A trajetória ascendente = (preço máximo + preço mínimo) / 2 + ATR (n) * fator Subtração = (preço máximo + preço mínimo) / 2 - ATR (n) * fator
Dentre eles, ATR ((n) representa a amplitude real média de n dias, cujo fator é um parâmetro ajustável, assumindo 3 ◦.
Quando o preço de fechamento está acima do algarismo, é um sinal de otimismo, quando o preço de fechamento está abaixo do algarismo, é um sinal de baixa. A estratégia determina a entrada e a saída do mercado com base nos sinais de otimismo e baixa.
A solução para o risco:
Esta estratégia usa o canal de hipertrend para realizar o acompanhamento de tendências e o gerenciamento de perdas. A correspondência dos parâmetros do ciclo ATR e do fator é fundamental para a eficácia da estratégia. O próximo passo será otimizar ainda mais a estratégia em termos de otimização de parâmetros, filtragem de sinais e outros aspectos, para que ela possa se adaptar a um ambiente de mercado mais complexo.
/*backtest
start: 2023-01-11 00:00:00
end: 2024-01-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Supertrend Backtest", shorttitle="STBT", overlay=true)
// Input for ATR Length
atrLength = input.int(10, title="ATR Length", minval=1)
atrFactor = input.float(3.0, title="Factor", minval=0.01, step=0.01)
// Calculate SuperTrend
[supertrend, direction] = ta.supertrend(atrFactor, atrLength)
supertrend := barstate.isfirst ? na : supertrend
// Define entry and exit conditions
longCondition = ta.crossover(close, supertrend)
shortCondition = ta.crossunder(close, supertrend)
// Plot the SuperTrend
plot(supertrend, color=color.new(color.blue, 0), title="SuperTrend")
// Plot Buy and Sell signals
plotshape(series=longCondition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")
plotshape(series=shortCondition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")
// Strategy Entry and Exit
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)