Estratégia de duplo impulso baseada na SMA

Autora:ChaoZhang, Data: 2023-11-22 15:42:29
Tags:

img

Resumo

Esta estratégia constrói uma simples estratégia de duplo impulso baseada no indicador SMA. Ele vai longo quando o preço cruza acima da SMA mais alta de 20 períodos e vai curto quando o preço cruza abaixo da SMA mais baixa de 20 períodos. As saídas de stop loss também são definidas.

Estratégia lógica

Esta estratégia usa a SMA de 20 períodos do preço mais alto e do preço mais baixo para determinar a direção para a negociação. Quando o preço cruza acima da SMA mais alta, ele é considerado uma tendência de alta, então vá longo. Quando o preço cruza abaixo da SMA mais baixa, ele é considerado uma tendência de queda, então vá curto.

Especificamente, a estratégia calcula primeiro a SMA de 20 períodos dos preços mais altos e mais baixos, e traça as linhas do indicador.

Entrada longa: fechamento do preço cruza acima da SMA mais elevada
Saída longa: Fechar o preço cruza abaixo de 0,99 * SMA mais alta

Entrada curta: O preço de fechamento cruza abaixo da SMA mais baixa
Saída curta: fechar o preço cruza acima de 1,01 * SMA mais baixa

Assim, uma tendência de seguir a estratégia de duplo impulso é construída.

Análise das vantagens

Esta estratégia tem as seguintes vantagens:

  1. Usar a SMA para determinar a direcção da tendência é simples e prático
  2. A SMA mais elevada e a SMA mais baixa atuam como linhas de suporte/resistência
  3. Projeto razoável de stop loss para maximizar a proteção contra perdas enormes
  4. Boa adaptabilidade, pode ser utilizada em diferentes produtos e prazos

Análise de riscos

Há também alguns riscos com esta estratégia:

  1. A SMA tem efeito de atraso, pode perder pontos de virada da tendência
  2. Nenhuma protecção contra eventos repentinos do mercado
  3. Impacto sobre os custos de negociação não considerado

Estes riscos podem ser controlados e reduzidos através da combinação de outros indicadores, da definição de stop loss, do ajuste dos parâmetros, etc.

Orientações para melhorias

Esta estratégia pode também ser melhorada nos seguintes aspectos:

  1. Combine outros indicadores como MACD, KDJ para determinar a tendência
  2. Adicionar proteção para eventos repentinos como suspensão, limitação de preços, etc.
  3. Otimizar os períodos SMA, encontrar a melhor combinação de parâmetros
  4. Encontrar os melhores parâmetros para diferentes produtos e prazos
  5. Estimar o impacto dos custos de negociação, definir o stop loss e o take profit ideais

Conclusão

A lógica geral desta estratégia é clara e fácil de implementar. Usando SMA para determinar a direção da tendência e estabelecendo regras razoáveis de entrada / saída, bons resultados podem ser alcançados. Há espaço para otimização adicional e, combinando-se com outras técnicas, pode se tornar uma estratégia promissora que vale a pena rastrear a longo prazo.


/*backtest
start: 2023-11-14 00:00:00
end: 2023-11-21 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © AlanAntony

//@version=4


strategy("ma 20 high-low",overlay=true)

//compute the indicators

smaH = sma(high, 20)
smaL = sma(low, 20)


//plot the indicators
plot(smaH,title="smaHigh", color=color.green, linewidth=2)


plot(smaL,title="smaLow", color=color.red, linewidth=2)


//trading logic
enterlong = crossover(close,smaH) //positive ema crossover
exitlong = crossunder(close,0.99*smaH)  //exiting long


entershort = crossunder(close,smaL) //negative EMA Crossover
exitshort = crossover(close,1.01*smaH) //exiting shorts


notintrade = strategy.position_size<=0
bgcolor(notintrade ? color.red:color.green)

//execution logic

start = timestamp(2015,6,1,0,0)
//end = timestamp(2022,6,1,0,0)

if time >= start
    strategy.entry( "long", strategy.long,1, when = enterlong)
    strategy.entry( "short", strategy.short,1, when = entershort) 
    
    strategy.close("long", when = exitlong)
    strategy.close("short", when = exitshort)

//if time >= end
   // strategy.close_all()

Mais.