Esta estratégia é desenvolvida com base no indicador Supertrend, que combina a ação do preço e a direção do canal Supertrend para julgar as tendências do mercado e gerar sinais de negociação quando a direção do canal muda.
Quando o preço atravessa o canal Supertrend, vá longo; quando o preço quebra abaixo do canal inferior do Supertrend, vá curto.
O canal Supertrend consiste de um trilho superior e um trilho inferior. A área dentro do canal é a área de consolidação e a área fora é a área de tendência. Ele usa a faixa média verdadeira multiplicada por um fator para determinar a largura do canal.
Quando o preço atravessa o trilho superior da parte inferior, é um sinal de compra. Isso significa que uma nova tendência de alta está começando. Quando o preço atravessa o trilho inferior da parte superior, é um sinal de venda. Isso significa que uma nova tendência de queda está começando.
A estratégia usa o indicador Supertrend para julgar a direção da tendência principal. Quando a direção do canal muda, ou seja, quando o preço quebra os trilhos do canal, são gerados sinais de negociação.
Esta é uma estratégia de fuga relativamente simples e intuitiva.
Utilize os canais de Supertrend para determinar a direção da tendência principal e evitar o ruído da negociação.
Ir com a tendência, julgar oportunidades longas e curtas com base na relação do preço com o canal.
Dispõe de um mecanismo de stop loss claro para controlar eficazmente os riscos.
O método de stop loss é o rastreamento da tendência stop loss, que pode maximizar o bloqueio de lucro.
Esta estratégia apresenta também alguns riscos, nomeadamente:
A configuração incorreta dos parâmetros do Supertrend pode conduzir a sinais falsos.
Os sinais de ruptura podem ser sinais de reversão a curto prazo, resultando em perdas.
O método de stop loss consiste apenas no rastreamento da tendência, o que pode impedir a perda prematuramente.
As medidas de melhoria correspondentes incluem:
Testar dados de diferentes mercados e otimizar parâmetros.
Os sinais de filtragem em combinação com outros indicadores.
Julgar a fiabilidade dos sinais de ruptura combinados com a estrutura de preços.
Aumentar a perda de parada de fundo para controlar ainda mais os riscos.
Em geral, esta estratégia é uma estratégia de tendência relativamente simples e intuitiva. Ele usa canais Supertrend para determinar claramente a direção da tendência e gera sinais quando o canal muda de direção.
Em comparação com outros indicadores, o canal Supertrend tem uma melhor tolerância às flutuações de preços. Mas ainda há espaço para lucro para esta estratégia. Pode ser otimizado em termos de filtragem de sinal e métodos de stop loss para melhorar ainda mais a estabilidade.
/*backtest start: 2023-02-11 00:00:00 end: 2024-02-17 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Supertrend TEST Strategy", overlay = true, format=format.price, precision=2) Periods = input(title="ATR Period", type=input.integer, defval=4) src = input(hlc3, title="Source") Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=4.7) changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true) showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=true) highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true) tp=close sl=close atr2 = sma(tr, Periods) atr= changeATR ? atr(Periods) : atr2 up=src-(Multiplier*atr) up1 = nz(up[1],up) up := close[1] > up1 ? max(up,up1) : up dn=src+(Multiplier*atr) dn1 = nz(dn[1], dn) dn := close[1] < dn1 ? min(dn, dn1) : dn trend = 1 trend := nz(trend[1], trend) trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green) buySignal = trend == 1 and trend[1] == -1 plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green ) plotshape(buySignal and showsignals ? up : na, title="Лонг", text="Лонг", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white ) dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red) sellSignal = trend == -1 and trend[1] == 1 plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red ) plotshape(sellSignal and showsignals ? dn : na, title="Шорт", text="Шорт", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white ) mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0) longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white if (strategy.position_size > 0) tp:=tp[1] sl:=up strategy.exit("Long_TP/SL","Long",limit=tp, stop=sl) if (strategy.position_size < 0) tp:=tp[1] sl:=dn strategy.exit("Short_TP/SL","Short",limit=tp, stop=sl) if buySignal tp:=close+(close-up)*0.382 strategy.entry("Long", strategy.long, limit=tp, comment=tostring(round(tp))) if sellSignal tp:=close-(dn-close)*0.382 strategy.entry("Short", strategy.short, limit=tp, comment=tostring(round(tp)))