Strategi Perdagangan Interpolasi Persentil Heikin Ashi

Penulis:ChaoZhang, Tarikh: 2023-12-25 11:02:25
Tag:

img

Ringkasan

Strategi ini menjana isyarat perdagangan berdasarkan lilin Heikin Ashi. Khususnya, isyarat beli dan jual dianggap berdasarkan persilangan harga penutupan Heikin Ashi dan tahap harga persentil ke-75, serta harga penutupan Heikin Ashi berada di atas purata bergerak tertentu.

Logika Strategi

Strategi ini menggunakan lilin Heikin Ashi bukannya lilin biasa untuk analisis. Sifat lilin Heikin Ashi yang halus membantu mengenal pasti trend dan pembalikan dengan lebih jelas. Secara khusus, strategi ini menggabungkan saluran persentil dan purata bergerak untuk menghasilkan isyarat perdagangan:

  1. Isyarat panjang dihasilkan apabila penutupan Heikin Ashi melintasi di atas paras persentil ke-75.
  2. Isyarat jual diaktifkan apabila penutupan Heikin Ashi melintasi di bawah purata bergerak 5 tempoh.

Stop loss dan trailing stop juga digunakan untuk mengawal risiko penurunan setiap perdagangan.

Kelebihan

  1. Lilin Heikin Ashi dengan jelas mengenal pasti trend dan dengan cepat mengesan perubahan.
  2. Saluran percentile membantu menentukan keadaan overbought / oversold untuk masuk dan keluar masa.
  3. Penggunaan stop loss dan trailing stop secara proaktif mengawal risiko.

Risiko

  1. Lilin Heikin Ashi mempunyai kelewatan oleh reka bentuk, yang boleh mengakibatkan kehilangan harga masuk / keluar terbaik.
  2. Saluran percentile tidak sepenuhnya menentukan pembalikan trend, yang membawa kepada kemungkinan whipsaws.
  3. Penempatan stop loss yang tidak betul boleh mengurangkan keuntungan lebih awal atau membolehkan kerugian yang tidak dapat diterima.

Untuk mengurangkan risiko, parameter seperti tempoh purata bergerak dan peratusan stop loss mungkin perlu diselaraskan.

Peningkatan

  1. Uji kombinasi purata bergerak yang berbeza untuk mencari parameter optimum.
  2. Perbetulkan panjang saluran persentil untuk mengenal pasti harga zona panas.
  3. Sertakan penunjuk tambahan untuk mengesahkan isyarat dan mengelakkan isyarat palsu.
  4. Melaksanakan jarak stop loss dinamik.

Kesimpulan

Strategi ini menggabungkan lilin Heikin Ashi, saluran persentil dan purata bergerak untuk membentuk pendekatan sistematik, yang mampu mengenal pasti trend dan mengawal risiko melalui stop loss. Penambahbaikan prestasi yang lebih lanjut dapat dijangka dengan mengoptimumkan parameter dan menggabungkan penunjuk pelengkap.


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


Lebih lanjut