Esta estratégia é um sistema de seguimento de tendências baseado em velas Heikin-Ashi suavizadas e crossovers de média móvel simples (SMA). Identifica mudanças de tendência através da interseção de velas Heikin-Ashi suavizadas pela EMA com uma SMA de 44 períodos para capturar as principais oportunidades de tendência no mercado. A estratégia incorpora um mecanismo dinâmico de gerenciamento de posição que fecha automaticamente posições quando os preços estão muito próximos da média móvel de longo prazo, evitando os riscos de oscilação nos mercados de consolidação.
A lógica principal consiste em três elementos-chave: primeiro, converter velas tradicionais em velas Heikin-Ashi, calculadora da média aritmética dos preços abertos, altos, baixos e fechados para filtrar o ruído do mercado; segundo, usar uma EMA de 6 períodos para suavizar o Heikin-Ashi, melhorando ainda mais a confiabilidade do sinal; finalmente, combinar o preço de fechamento suavizado de Heikin-Ashi com uma SMA de 44 períodos, gerando sinais longos em cruzamentos ascendentes e sinais curtos em cruzamentos descendentes.
A estratégia constrói um robusto sistema de negociação de tendência seguindo combinando velas Heikin-Ashi com sistemas SMA. Ele possui mecanismos abrangentes de geração de sinal e controle de risco razoável, particularmente adequado para mercados com características de tendência distintas. A eficácia prática da estratégia pode ser ainda melhorada através das direções de otimização sugeridas.
/*backtest start: 2024-10-01 00:00:00 end: 2024-10-31 23:59:59 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Smoothed Heikin Ashi with SMA Strategy", overlay=true) // Input parameters for SMAs s1 = input.int(11, title="Short SMA Period") s2 = input.int(44, title="Long SMA Period") noPositionThreshold = input.float(0.001, title="No Position Threshold", step=0.0001) // Calculate the original Heikin-Ashi values haClose = (open + high + low + close) / 4 var float haOpen = na haOpen := na(haOpen[1]) ? (open + close) / 2 : (haOpen[1] + haClose[1]) / 2 haHigh = math.max(high, math.max(haOpen, haClose)) haLow = math.min(low, math.min(haOpen, haClose)) // Smoothing using exponential moving averages smoothLength = input.int(6, title="Smoothing Length") smoothedHaClose = ta.ema(haClose, smoothLength) smoothedHaOpen = ta.ema(haOpen, smoothLength) smoothedHaHigh = ta.ema(haHigh, smoothLength) smoothedHaLow = ta.ema(haLow, smoothLength) // Calculate SMAs smaShort = ta.sma(close, s1) smaLong = ta.sma(close, s2) // Plotting the smoothed Heikin-Ashi values plotcandle(smoothedHaOpen, smoothedHaHigh, smoothedHaLow, smoothedHaClose, color=(smoothedHaClose >= smoothedHaOpen ? color.green : color.red), title="Smoothed Heikin Ashi") plot(smaShort, color=color.blue, title="SMA Short") plot(smaLong, color=color.red, title="SMA Long") // Generate buy/sell signals based on SHA crossing 44 SMA longCondition = ta.crossover(smoothedHaClose, smaLong) shortCondition = ta.crossunder(smoothedHaClose, smaLong) noPositionCondition = math.abs(smoothedHaClose - smaLong) < noPositionThreshold // Strategy logic if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) if (noPositionCondition and strategy.position_size != 0) strategy.close_all("No Position") // Plot buy/sell signals plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.small) plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.small) plotshape(series=noPositionCondition and strategy.position_size != 0, location=location.belowbar, color=color.yellow, style=shape.labeldown, text="EXIT", size=size.small)