Estratégia de negociação de interpolação percentual de Heikin Ashi

Autora:ChaoZhang, Data: 2023-12-25 11:02:25
Tags:

img

Resumo

Especificamente, os sinais de compra e venda são considerados com base no cruzamento do preço de fechamento de Heikin Ashi e do nível de preço do 75o percentil, bem como o preço de fechamento de Heikin Ashi estar acima de certas médias móveis.

Estratégia lógica

A estratégia usa velas Heikin Ashi em vez de velas regulares para análise. A natureza suavizada das velas Heikin Ashi ajuda a identificar tendências e reversões com mais clareza. Especificamente, a estratégia combina canais percentil e médias móveis para gerar sinais de negociação:

  1. Um sinal longo é gerado quando o fechamento de Heikin Ashi cruza acima do nível do 75o percentil.
  2. Um sinal de venda é desencadeado quando o fechamento de Heikin Ashi cruza abaixo da média móvel de 5 períodos.

O stop loss e o trailing stop também são utilizados para controlar o risco de queda por transação.

Vantagens

  1. As velas Heikin Ashi identificam claramente as tendências e rapidamente detectam reversões.
  2. Os canais percentais ajudam a determinar as condições de sobrecompra/supervenda de entradas e saídas de tempo.
  3. O uso de stop loss e trailing stop controla proativamente o risco.

Riscos

  1. As velas Heikin Ashi têm um atraso por design, o que pode resultar na falta dos melhores preços de entrada/saída.
  2. Os canais percentais não identificam completamente as inversões de tendência, levando a possíveis desacelerações.
  3. A colocação inadequada de stop loss pode reduzir os lucros prematuramente ou permitir perdas inaceitáveis.

Para mitigar os riscos, podem ser necessários ajustamentos de parâmetros como os períodos de média móvel e as percentagens de stop loss.

Melhorias

  1. Teste diferentes combinações de médias móveis para encontrar parâmetros ótimos.
  2. Ajustar bem os comprimentos dos canais percentil para melhor identificar os preços zonas quentes.
  3. Incorporar indicadores adicionais para confirmar sinais e evitar falsos sinais.
  4. Implementar distâncias de stop loss dinâmicas.

Conclusão

Esta estratégia combina velas Heikin Ashi, canais percentil e médias móveis para formar uma abordagem sistemática, capaz de identificar tendências e controlar o risco através de stop loss.


/*backtest
start: 2023-12-17 00:00:00
end: 2023-12-24 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("HK Percentile Interpolation One",shorttitle = "HKPIO", overlay=false, default_qty_type = strategy.cash, default_qty_value = 5000, calc_on_order_fills = true, calc_on_every_tick = true)

// Input parameters
stopLossPercentage = input(3, title="Stop Loss (%)") // User can set Stop Loss as a percentage
trailStopPercentage = input(1.5, title="Trailing Stop (%)") // User can set Trailing Stop as a percentage
lookback = input.int(14, title="Lookback Period", minval=1) // User can set the lookback period for percentile calculation
yellowLine_length = input.int(5, "Yellow", minval=1) // User can set the length for Yellow EMA
purplLine_length = input.int(10, "Purple", minval=1) // User can set the length for Purple EMA
holdPeriod = input.int(200, title="Minimum Holding Period", minval=10) // User can set the minimum holding period
startDate = timestamp("2021 01 01")  // User can set the start date for the strategy

// Calculate Heikin Ashi values
haClose = ohlc4
var float haOpen = na
haOpen := na(haOpen[1]) ? (open + close) / 2 : (haOpen[1] + haClose[1]) / 2
haHigh = math.max(nz(haOpen, high), nz(haClose, high), high)
haLow = math.min(nz(haOpen, low), nz(haClose, low), low)

// Calculate Moving Averages
yellowLine = ta.ema(haClose, yellowLine_length)
purplLine = ta.ema(haClose, purplLine_length)

// Calculate 25th and 75th percentiles
p25 = ta.percentile_linear_interpolation(haClose, lookback, 28)
p75 = ta.percentile_linear_interpolation(haClose, lookback, 78)

// Generate buy/sell signals
longSignal = ta.crossover(haClose, p75) and haClose > yellowLine
sellSignal = ta.crossunder(haClose, yellowLine)
longSignal1 = ta.crossover(haClose, p75) and haClose > purplLine
sellSignal1 = ta.crossunder(haClose, purplLine)

// Set start time and trade conditions
if(time >= startDate)
    // When longSignal is true, enter a long trade and set stop loss and trailing stop conditions
    if (longSignal)
        strategy.entry("Long", strategy.long, 1)
        strategy.exit("Sell", "Long", stop=close*(1-stopLossPercentage/100), trail_points=close*trailStopPercentage/100, trail_offset=close*trailStopPercentage/100)
    // When sellSignal is true, close the long trade
    if (sellSignal)
        strategy.close("Long")
    // When sellSignal1 is true, enter a short trade
    if (sellSignal1)
        strategy.entry("Short", strategy.short, 1)
    // When longSignal1 is true, close the short trade
    if (longSignal1)
        strategy.close("Short")

// Plot Heikin Ashi candles
plotcandle(haOpen, haHigh, haLow, haClose, title="Heikin Ashi", color=(haClose >= haOpen ? color.rgb(1, 168, 6) : color.rgb(176, 0, 0)))

// Plot 25th and 75th percentile levels
plot(p25, title="25th Percentile", color=color.green, linewidth=1, style=plot.style_circles)
plot(p75, title="75th Percentile", color=color.red, linewidth=1, style=plot.style_circles)

// Plot Moving Averages
plot(yellowLine, color = color.rgb(254, 242, 73, 2), linewidth = 2, style = plot.style_stepline)
plot(purplLine, color = color.rgb(255, 77, 234, 2), linewidth = 2, style = plot.style_stepline)


Mais.