
A estratégia é uma estratégia de cruzamento de médias móveis baseada no gráfico de Renko. Ela usa o indicador TEMA para construir sinais de cruzamento e filtragem em combinação com a média de longo prazo, com o objetivo de identificar tendências no gráfico de Renko e emitir sinais de compra e venda.
A principal fonte de sinais da estratégia são os indicadores TEMA de curto prazo e os indicadores SMA. A lógica específica é:
Quando o TEMA curto atravessa o SMA curto, faça mais; quando o TEMA curto atravessa o SMA curto, faça zero.
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 de parada:
Quando avg_protection > 0, só se compra quando o preço de fechamento é inferior ao preço médio da posição atual, o que reduz o custo da posição;
Quando gain_protection > 0, só é vendido o stop loss quando o preço de fechamento excede uma determinada porcentagem do preço de entrada, bloqueando assim o lucro.
Finalmente, a estratégia também usa um indicador de SMMA de longo prazo como um filtro de tendência. O sinal de multiplicação é emitido somente quando o preço de fechamento está abaixo do SMMA.
A estratégia tem as seguintes vantagens:
A estratégia também apresenta alguns riscos:
Estes riscos podem ser evitados por meio de ajustes adequados de parâmetros, como a configuração de posições de stop loss.
A estratégia pode ser melhorada em vários aspectos:
A estratégia em geral é uma estratégia de cruzamento de linha de média móvel simples, mas muito prática. Ela se baseia principalmente no excelente efeito de eliminação de ruído da linha Renko K e na alta sensibilidade do indicador TEMA para geração de sinais.
/*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))