Стратегия торговли процентной интерполяцией Хайкина Аши

Автор:Чао Чжан, Дата: 2023-12-25 11:02:25
Тэги:

img

Обзор

Эта стратегия генерирует торговые сигналы, основанные на свечах Хайкина Аши. В частности, сигналы купли и продажи рассматриваются на основе перекрестка ценового баланса Хайкина Аши и уровня цены 75-го процентиля, а также ценового баланса Хайкина Аши выше определенных скользящих средних.

Логика стратегии

Стратегия использует свечи Хайкина Аши вместо обычных свечей для анализа. Сглаженный характер свечей Хайкина Аши помогает более четко идентифицировать тенденции и переломы.

  1. Длинный сигнал генерируется, когда закрытие Хайкина Аши пересекает 75-й процентный уровень.
  2. Сигнал продажи запускается, когда закрытие Heikin Ashi пересекает 5-периодный скользящий средний.

Стоп-лосс и трайлинг-стоп также используются для контроля снижающегося риска по сделке.

Преимущества

  1. Свечи Хайкина Аши четко выявляют тенденции и быстро замечают их изменение.
  2. Перцентильные каналы помогают определить условия перекупки/перепродажи на время входа и выхода.
  3. Использование стоп-лосса и стоп-трейлинга активно контролирует риск.

Риски

  1. Свечи Heikin Ashi имеют задержку по конструкции, что может привести к отсутствию лучших входных/выходных цен.
  2. Персентильные каналы не полностью указывают на обратные тенденции, что приводит к потенциальным сбоям.
  3. Неправильное размещение стоп-лосса может либо преждевременно сократить прибыль, либо допустить неприемлемые потери.

Для смягчения рисков могут потребоваться корректировки таких параметров, как скользящие средние периоды и проценты стоп-лосса.

Усовершенствования

  1. Испытайте различные комбинации скользящих средних для поиска оптимальных параметров.
  2. Медленно настраивайте длины каналов для лучшего определения цены горячие зоны.
  3. Включить дополнительные индикаторы для подтверждения сигналов и избежать ложных сигналов.
  4. Внедрить динамические дистанции остановки.

Заключение

Эта стратегия сочетает в себе свечи Хайкина Аши, каналы процентилов и скользящие средние показатели, чтобы сформировать систематический подход, способный выявлять тенденции и контролировать риск с помощью стоп-лосса.


/*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)


Больше