Estratégia de acompanhamento de supertendências de duplo período de tempo

Autora:ChaoZhang, Data: 22 de setembro de 2023 14:27:52
Tags:

Resumo

Esta é uma estratégia de rastreamento de Supertrend de quadro de tempo duplo. Aplica indicadores de Supertrend em dois períodos de tempo diferentes, um como o quadro de tempo principal para determinar a direção da tendência e outro como o quadro de tempo auxiliar para filtrar entradas.

Estratégia lógica

O indicador central desta estratégia é Supertrend. Supertrend determina a direção relativa da tendência dos preços calculando a volatilidade dos preços. A estratégia usa Supertrend em dois períodos de tempo, calculando as linhas de Supertrend para os prazos principais e auxiliares, respectivamente.

A lógica específica de negociação é a seguinte:

  1. Usar a direção do quadro temporal principal Supertrend como a direção geral da tendência.

  2. Insira quando o intervalo de tempo auxiliar Supertrend emitir um sinal na mesma direção.

  3. Configure o stop loss e tire pontos de lucro.

  4. Sair quando o período principal Supertrend voltar a girar.

Ao combinar dois indicadores de período, algumas divergências podem ser filtradas para uma entrada mais precisa.

Análise das vantagens

As vantagens desta estratégia incluem:

  1. A combinação de dois prazos permite um julgamento mais preciso da tendência.

  2. Supertrend é sensível a mudanças de tendência, com entrada precisa.

  3. Parar de perder e assumir o risco de controlar o lucro.

  4. Uma lógica estratégica simples e direta, fácil de entender.

  5. Os parâmetros podem ser personalizados para diferentes produtos.

Análise de riscos

Os principais riscos são:

  1. O atraso da super tendência pode causar sinais mal avaliados.

  2. A taxa de prejuízo e a taxa de prejuízo não adequados podem causar tendências de superação ou uma taxa de prejuízo prematura.

  3. O quadro de tempo duplo pode perder algumas reversões mais curtas.

  4. A otimização dos parâmetros baseia-se em dados históricos, existem riscos de sobreajuste.

  5. Sem consideração dos custos de transacção.

As soluções são:

  1. Ajustar parâmetros de indicadores, adicionar outros indicadores para verificação de combinação.

  2. Optimize dinamicamente o stop loss e o take profit com base nos resultados dos backtests.

  3. Teste prazos mais curtos como julgamento auxiliar.

  4. Expandir a gama de dados de backtest, verificação de backtest multi-mercado.

  5. Adicione custos de transação como comissão e deslizamento.

Orientações de otimização

A estratégia pode ser melhorada através de:

  1. Testando mais combinações de indicadores para encontrar a combinação ideal.

  2. Usando aprendizado de máquina para otimizar dinamicamente parâmetros.

  3. Otimizar o stop loss e o take profit para melhores rácios risco-recompensa.

  4. Estou a tentar combinar mais prazos.

  5. Ajuste das faixas de lucro e stop loss com base no número de transações.

  6. Adicionando comissão e lógica de deslizamento.

  7. Desenvolvimento de ferramentas de otimização de parâmetros gráficos.

Conclusão

Esta estratégia consegue um julgamento de tendência e entradas relativamente precisos usando indicadores de Supertrend de quadro de tempo duplo. Ele controla os riscos definindo stop loss e take profit. A lógica da estratégia é simples e clara, fácil de expandir e otimizar. Pode ser melhorada introduzindo mais indicadores, otimizando dinamicamente parâmetros, adicionando custos de transação etc. para torná-lo mais robusto.


/*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)



Mais.