A estratégia é uma estratégia de acompanhamento de supertrend em dois quadros de tempo. Aplica simultaneamente dois indicadores de supertrend de diferentes períodos, um como o principal para determinar a direção da tendência e outro como o auxiliar para filtrar a entrada.
O indicador central da estratégia é o indicador de tendência ultra. O indicador de tendência ultra determina a direção da tendência relativa dos preços através do cálculo da dispersão de preços. A estratégia usa indicadores de tendência ultra de dois períodos de tempo, calculados em um quadro de tempo principal e um quadro de tempo auxiliar.
A lógica da transação é a seguinte:
A direção da linha de tendência de um marco de tempo principal é julgada como a direção da grande tendência.
Aguarde a entrada do quadro de tempo auxiliar quando a linha de tendência ultrapassa o sinal de equilíbrio de posição.
Configure o ponto de parada de perda.
A linha de tendência ultrapassada do marco de tempo principal está no ponto zero quando a linha de tendência ultrapassa a linha de tendência.
Ao combinar os dois indicadores de ciclo, é possível filtrar alguns sinais de desvio, o que torna a entrada mais precisa.
A estratégia tem as seguintes vantagens:
A combinação de dois quadros de tempo permite uma avaliação mais precisa das tendências.
Os indicadores de tendência ultra são sensíveis a mudanças de tendência e precisos para entrada.
Configure o ponto de parada de perda para controlar o risco.
A lógica da estratégia é simples, direta e fácil de entender.
Os parâmetros podem ser personalizados para diferentes variedades.
Os principais riscos desta estratégia são:
O indicador de tendência ultra está atrasado e pode ter um sinal de erro.
A parada de danos pode ser mal configurada, causando excesso de atrito ou dano intencional.
A combinação de dois quadros de tempo pode perder uma oportunidade de reversão mais curta.
A otimização de parâmetros depende de dados históricos, existindo o risco de sobreajuste.
Não tem em conta os custos de transação.
Resolução:
Ajustar adequadamente os parâmetros do indicador, introduzindo outras combinações de indicadores de verificação.
Optimizar a posição do stop loss de acordo com a dinâmica dos dados de retrospecção.
O ciclo de testes é mais curto para auxiliar no julgamento.
Ampliação da área de rastreamento de dados, verificação de rastreamento em vários mercados.
Os custos de transação são calculados, incluindo comissões e pontos de deslizamento.
A estratégia pode ser melhorada em:
Teste a combinação de mais indicadores para encontrar a combinação ideal.
Introduzir métodos de aprendizagem de máquina para otimizar dinamicamente os parâmetros.
Optimizar a estratégia de stop loss e melhorar a relação de ganhos e perdas.
Tentar um efeito combinado de vários períodos de tempo.
Ajustar o intervalo de stop-loss de acordo com o número de transações.
A lógica de cálculo das taxas de inscrição e dos pontos de deslizamento.
Desenvolvimento de ferramentas de otimização de parâmetros gráficos.
A estratégia permite um julgamento de tendências e entradas mais precisos por meio de indicadores de tendência acima de dois quadros temporais. A lógica da estratégia é simples, clara e fácil de expandir e otimizar.
/*backtest
start: 2023-08-22 00:00:00
end: 2023-09-21 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//Supertrend Strategy by breizh29 using *rajandran.r* Supertrend Indicator
// strategy("Super Trend 2", overlay=true, default_qty_value=100)
TrendUp = 0.0
TrendDown = 0.0
Trend = 0.0
MTrendUp = 0.0
MTrendDown = 0.0
MTrend = 0.0
res = input(title="Main SuperTrend Time Frame", defval="120")
Factor=input(1, minval=1,maxval = 100)
Pd=input(1, minval=1,maxval = 100)
tp = input(500,title="Take Profit")
sl = input(400,title="Stop Loss")
Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
MUp=security(syminfo.tickerid,res,hl2-(Factor*atr(Pd)))
MDn=security(syminfo.tickerid,res,hl2+(Factor*atr(Pd)))
Mclose=security(syminfo.tickerid,res,close)
TrendUp:=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up
TrendDown:=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn
MTrendUp:=Mclose[1]>MTrendUp[1]? max(MUp,MTrendUp[1]) : MUp
MTrendDown:=Mclose[1]<MTrendDown[1]? min(MDn,MTrendDown[1]) : MDn
Trend := close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1)
Tsl = Trend==1? TrendUp: TrendDown
MTrend := Mclose > MTrendDown[1] ? 1: Mclose< MTrendUp[1]? -1: nz(MTrend[1],1)
MTsl = MTrend==1? MTrendUp: MTrendDown
linecolor = Trend == 1 ? green : red
plot(Tsl, color = linecolor , style = line , linewidth = 2,title = "SuperTrend")
Mlinecolor = MTrend == 1 ? blue : orange
plot(MTsl, color = Mlinecolor , style = line , linewidth = 2,title = "Main SuperTrend")
plotshape(cross(close,Tsl) and close>Tsl , "Up Arrow", shape.triangleup,location.belowbar,green,0,0)
plotshape(cross(Tsl,close) and close<Tsl , "Down Arrow", shape.triangledown , location.abovebar, red,0,0)
up = Trend == 1 and Trend[1] == -1 and MTrend == 1
down = Trend == -1 and Trend[1] == 1 and MTrend == -1
plotarrow(up ? Trend : na, title="Up Entry Arrow", colorup=lime, maxheight=60, minheight=50, transp=0)
plotarrow(down ? Trend : na, title="Down Entry Arrow", colordown=red, maxheight=60, minheight=50, transp=0)
golong = Trend == 1 and Trend[1] == -1 and MTrend == 1
goshort = Trend == -1 and Trend[1] == 1 and MTrend == -1
strategy.entry("Buy", strategy.long,when=golong)
strategy.exit("Close Buy","Buy",profit=tp,loss=sl)
strategy.entry("Sell", strategy.short,when=goshort)
strategy.exit("Close Sell","Sell",profit=tp,loss=sl)