Esta estratégia é uma estratégia de cruzamento de média móvel baseada em gráficos de velas Renko.
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.
As principais vantagens desta estratégia são:
Esta estratégia tem também alguns riscos:
Para mitigar estes riscos, pode adoptar-se um ajustamento adequado dos parâmetros, a definição de perdas de parada, etc.
As principais direcções de otimização para esta estratégia sã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))