Estratégia de acompanhamento de tendências do K-algo

ATR supertrend GANN HEIKIN-ASHI EMA
Data de criação: 2025-08-26 11:23:33 última modificação: 2025-08-26 11:23:33
cópia: 0 Cliques: 288
2
focar em
319
Seguidores

Estratégia de acompanhamento de tendências do K-algo Estratégia de acompanhamento de tendências do K-algo

Não é uma Super Tendência comum, mas um caçador de tendências multidimensional.

Não se deixe enganar pelo nome, o K-algo trail não é uma simples estratégia de rastreamento de ATR. Este sistema combina habilmente os três principais sistemas de tecnologia SuperTrend, Gann Nine-Sided Graph e Heikin Ashi Smooth, formando uma estrutura de identificação de tendências tridimensional. O ATR de 10 ciclos é projetado com um multiplicador de 3 vezes, garantindo sensibilidade à tendência e filtrando efetivamente o ruído do mercado.

O Heikin Ashi, com sua dupla EMA, é o verdadeiro filtro de sinais

A inovação central da estratégia reside no Heikin Ashi Diagrama, que é processado com a suavização do EMA de 11 ciclos duplos. O Heikin Ashi tradicional é propenso a produzir falsos sinais, mas a qualidade do sinal é significativamente melhorada após duas rodadas de suavização do EMA. Quando o preço de abertura após a suavização é inferior ao preço de fechamento e o SuperTrend mostra uma tendência ascendente, o sinal de confirmação múltipla é confirmado; o oposto é o sinal de cabeça vazia.

1.7:2.5:3.0 O lucro e o prejuízo comparados com o projeto mostram o nível de profissionalismo

A configuração de stop loss é diretamente baseada na linha de SuperTrend, o que é a solução de stop loss mais razoável. O design de stop loss de três níveis é ainda mais emocionante: 1,7x, 2,5x e 3,0x a distância de risco. Este stop loss progressivo garante ganhos básicos e deixa espaço para a tendência.

A inclusão de nove quadros de Gann não é uma decoração, mas uma resistência fundamental

O cálculo do quadrado de Gann de 9 no código parece simples, mas é muito útil. Os pontos de resistência de suporte ascendente e descendente, calculados pela raiz quadrada do preço atual, fornecem pontos de resistência adicionais para a estratégia. Embora a lógica principal da estratégia não use essas posições diretamente, elas fornecem uma referência importante para ajustes manuais e avaliação de risco.

Aplica-se a tendências de médio e longo prazo, ao desempenho geral de mercados turbulentos

Esta estratégia funciona muito bem em mercados de tendência unilateral, especialmente em variedades com maior volatilidade, como criptomoedas e futuros de índices de ações. Mas é preciso ser claro: em um cenário de volatilidade horizontal, brechas falsas frequentes podem levar a pequenos prejuízos consecutivos. Recomenda-se o uso em períodos de alta volatilidade e tendência do mercado, evitando a operação em períodos de incerteza após o lançamento de dados econômicos importantes.

DISCUSSO: O histórico não representa o futuro

Qualquer estratégia quantitativa tem risco de perda, e esta estratégia não é exceção. Embora os dados de retrospectiva mostrem um bom desempenho de lucro ajustado ao risco, ainda é possível enfrentar perdas consecutivas em negociações reais. É recomendado controlar rigorosamente as posições individuais em não mais de 2% do capital total e suspender a negociação após três paradas consecutivas e reavaliar o ambiente de mercado.

Código-fonte da estratégia
/*backtest
start: 2025-06-11 00:00:00
end: 2025-08-25 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy('K-algo trail', overlay=true)
// ===== INPUTS =====
Periods = input(title='ATR Period', defval=10)
src = input(hl2, title='Source')
Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=3)
changeATR = input(title='Change ATR Calculation Method ?', defval=true)
showsignals = input(title='Show Buy/Sell Signals ?', defval=true)
// ===== ATR & SUPER TREND (K-TREND) CALCULATION =====
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - Multiplier * atr
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + Multiplier * atr
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
// Plot SuperTrend
upPlot = plot(trend == 1 ? up : na, title='Up Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title='UpTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
dnPlot = plot(trend == 1 ? na : dn, title='Down Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title='DownTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
// ===== GANN SQUARE OF 9 =====
normalise_squareRootCurrentClose = math.floor(math.sqrt(close))
upperGannLevel_1 = (normalise_squareRootCurrentClose + 1) * (normalise_squareRootCurrentClose + 1)
upperGannLevel_2 = (normalise_squareRootCurrentClose + 2) * (normalise_squareRootCurrentClose + 2)
zeroGannLevel = normalise_squareRootCurrentClose * normalise_squareRootCurrentClose
lowerGannLevel_1 = (normalise_squareRootCurrentClose - 1) * (normalise_squareRootCurrentClose - 1)
lowerGannLevel_2 = (normalise_squareRootCurrentClose - 2) * (normalise_squareRootCurrentClose - 2)
// ===== SMOOTHED HEIKIN ASHI CALCULATION =====
ma1_len = input.int(title='MA1', defval=11, minval=1, maxval=100, step=1)
ma2_len = input.int(title='MA2', defval=11, minval=1, maxval=100, step=1)
// First Smoothing (11,11)
o = ta.ema(open, ma1_len)
c = ta.ema(close, ma1_len)
h = ta.ema(high, ma1_len)
l = ta.ema(low, ma1_len)
ha_t = ticker.heikinashi(syminfo.tickerid)
ha_o = request.security(ha_t, timeframe.period, o)
ha_c = request.security(ha_t, timeframe.period, c)
ha_h = request.security(ha_t, timeframe.period, h)
ha_l = request.security(ha_t, timeframe.period, l)
o2 = ta.ema(ha_o, ma2_len)
c2 = ta.ema(ha_c, ma2_len)
h2 = ta.ema(ha_h, ma2_len)
l2 = ta.ema(ha_l, ma2_len)
ha_col = o2 > c2 ? color.orange : color.blue
plotcandle(o2, h2, l2, c2, title='Heikin Ashi Smoothed', color=ha_col, wickcolor=#00000000)
// ===== STRATEGY LOGIC =====
// Final Combined Long Condition
longCondition = (o2 < c2 and trend == 1) and barstate.isconfirmed
// Final Combined Short Condition
shortCondition = (o2 > c2 and trend == -1) and barstate.isconfirmed
// ===== STRATEGY EXECUTION =====
if longCondition
    SL = math.round(up, 2)
    range_1 = math.abs(close - SL)
    TARGET1 = close + range_1 * 1.7
    TARGET2 = close + range_1 * 2.5
    TARGET3 = close + range_1 * 3.0
    strategy.entry('BUY', strategy.long)
    strategy.exit('BUY T1', 'BUY', qty=1, limit=TARGET1)
    strategy.exit('BUY T2', 'BUY', qty=1, limit=TARGET2)
    strategy.exit('BUY T3', 'BUY', qty=1, limit=TARGET3)
    strategy.exit('BUY SL', 'BUY', stop=SL)
if shortCondition
    SL = math.round(dn, 2)
    range_2 = math.abs(close - SL)
    TARGET1 = close - range_2 * 1.7
    TARGET2 = close - range_2 * 2.5
    TARGET3 = close - range_2 * 3.0
    strategy.entry('SELL', strategy.short)
    strategy.exit('SELL T1', 'SELL', qty=1, limit=TARGET1)
    strategy.exit('SELL T2', 'SELL', qty=1, limit=TARGET2)
    strategy.exit('SELL T3', 'SELL', qty=1, limit=TARGET3)
    strategy.exit('SELL SL', 'SELL', stop=SL)
// Plot entry signals
plotshape(longCondition ? close : na, title='Buy', text='BUY', location=location.belowbar, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.new(color.white, 0))
plotshape(shortCondition ? close : na, title='Sell', text='SELL', location=location.abovebar, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0))