O recurso está a ser carregado... Carregamento...

Estratégia Renko de cruzamento da média móvel a longo prazo

Autora:ChaoZhang, Data: 2024-01-24 10:55:57
Tags:

img

Resumo

Esta estratégia é uma estratégia de cruzamento de média móvel baseada em gráficos de velas Renko.

Estratégia lógica

A principal fonte de sinal desta estratégia provém da cruz de ouro e cruz da morte do indicador TEMA de curto prazo e do indicador SMA.

Quando o TEMA de curto prazo cruzar a SMA de curto prazo, negociar; quando o TEMA de curto prazo cruzar abaixo da SMA de curto prazo, fechar posições.

Além disso, a estratégia também define dois parâmetros opcionais avg_protection e gain_protection para ajustar a lógica de entrada e stop loss:

  • Quando avg_protection>0, comprar apenas quando o preço de fechamento for inferior ao preço médio de detenção corrente, o que pode reduzir a base de custo;

  • Quando gain_protection>0, venda apenas quando o preço de fechamento exceder o preço de entrada por uma certa porcentagem para bloquear os lucros.

Por último, a estratégia utiliza também um indicador SMMA a longo prazo como filtro de tendência.

Análise das vantagens

As principais vantagens desta estratégia são:

  1. Com base nos gráficos de velas Renko, pode filtrar efetivamente o ruído e identificar tendências;
  2. Usar o indicador TEMA para construir sinais com elevada sensibilidade e capacidade de localização;
  3. Os parâmetros ajustáveis são ricos para controlar a estratégia de entrada;
  4. A combinação de médias móveis de longo prazo e de curto prazo pode captar oportunidades nas tendências.

Análise de riscos

Esta estratégia tem também alguns riscos:

  1. O Renko tem uma linha de tempo desigual que não pode controlar os tempos de intervalo.
  2. A alta sensibilidade do TEMA também leva a mais falsos sinais;
  3. Configurações de parâmetros incorretas podem levar a transações perdidas.

Para mitigar estes riscos, pode adoptar-se um ajustamento adequado dos parâmetros, a definição de perdas de parada, etc.

Orientações de otimização

As principais direcções de otimização para esta estratégia são:

  1. Ensaiar diferentes combinações de parâmetros para encontrar os parâmetros ideais;
  2. Adicionar estratégias de stop loss, tais como stop loss de trailing, range stop loss, etc., para reduzir o DD;
  3. Combinar outros indicadores de filtragem de sinais para reduzir os falsos sinais;
  4. Eficácia dos parâmetros de ensaio em diferentes produtos.

Conclusão

Em geral, esta é uma estratégia de cruzamento de média móvel básica, simples, mas altamente prática. Ela depende principalmente do excelente efeito de redução de ruído das barras Renko e da alta sensibilidade do indicador TEMA para gerar sinais. Enquanto isso, a colaboração entre médias móveis de longo prazo e de curto prazo também melhora sua capacidade de seguir tendências. Com ajuste de parâmetros e otimização adequada, essa estratégia pode se tornar uma escolha eficaz para negociação quantitativa.


/*backtest
start: 2023-01-17 00:00:00
end: 2024-01-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("TEMA Cross", overlay = true)

tema(src, len) =>
    3*ema(src, len) - 3*ema(ema(src, len), len) + ema(ema(ema(src, len),len),len)

smma(src, len) =>
    sa = 0.0
    sa := na(sa[1]) ? sma(src, len) : (sa[1] * (len - 1) + src) / len
    sa

temaLength = input(5)
smaLength = input(3)
smmaLength = input(30)
tema1 = tema(close, temaLength)
sma1 = sma(tema1, smaLength)
smma1 = smma(close,smmaLength)


plot(tema1, color = green, title = "TEMA")
plot(sma1, color = orange, title = "SMA")
plot(smma1, color = red, title = "SMMA")
minGainPercent = input(2)
gainMultiplier = minGainPercent * 0.01 + 1

avg_protection = input(1)
gain_protection = input(1)

longCondition = crossover(tema1, sma1) and tema1 < smma1
shortCondition = crossunder(tema1, sma1)

strategy.entry("Buy", strategy.long, when = longCondition and (avg_protection >= 1 ? (na(strategy.position_avg_price) ? true : close <= strategy.position_avg_price) : true))
strategy.close_all(when = shortCondition and (gain_protection >=1 ? (close >= gainMultiplier * strategy.position_avg_price) : true))

Mais.