Heikin Ashi Percentile Interpolation Trading Strategy

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

img

Gambaran umum

Strategi ini menghasilkan sinyal perdagangan berdasarkan lilin Heikin Ashi. Secara khusus, sinyal beli dan jual dianggap berdasarkan persilangan harga penutupan Heikin Ashi dan tingkat harga persentil ke-75, serta harga penutupan Heikin Ashi berada di atas rata-rata bergerak tertentu.

Logika Strategi

Strategi ini menggunakan lilin Heikin Ashi bukan lilin biasa untuk analisis. Sifat halus lilin Heikin Ashi membantu mengidentifikasi tren dan pembalikan dengan lebih jelas. Secara khusus, strategi ini menggabungkan saluran persentil dan rata-rata bergerak untuk menghasilkan sinyal perdagangan:

  1. Sinyal panjang dihasilkan ketika penutupan Heikin Ashi melintasi di atas tingkat persentil ke-75.
  2. Sinyal jual dipicu ketika penutupan Heikin Ashi melintasi di bawah rata-rata bergerak 5 periode.

Stop loss dan trailing stop juga digunakan untuk mengendalikan risiko penurunan per perdagangan.

Keuntungan

  1. Lilin Heikin Ashi dengan jelas mengidentifikasi tren dan segera melihat perubahan.
  2. Saluran persentil membantu menentukan kondisi overbought/oversold untuk waktu masuk dan keluar.
  3. Penggunaan stop loss dan trailing stop secara proaktif mengendalikan risiko.

Risiko

  1. Lilin Heikin Ashi memiliki keterlambatan oleh desain, yang dapat mengakibatkan hilangnya harga masuk / keluar terbaik.
  2. Saluran persentil tidak sepenuhnya menentukan pembalikan tren, yang mengarah pada potensi whipsaws.
  3. Penempatan stop loss yang tidak tepat dapat mengurangi keuntungan secara prematur atau memungkinkan kerugian yang tidak dapat diterima.

Untuk mengurangi risiko, parameter seperti periode rata-rata bergerak dan persentase stop loss mungkin perlu disesuaikan.

Peningkatan

  1. Uji kombinasi rata-rata bergerak yang berbeda untuk menemukan parameter optimal.
  2. Perbaiki panjang saluran persentil untuk lebih mengidentifikasi harga zona panas.
  3. Masukkan indikator tambahan untuk mengkonfirmasi sinyal dan menghindari sinyal palsu.
  4. Mengimplementasikan jarak stop loss yang dinamis.

Kesimpulan

Strategi ini menggabungkan lilin Heikin Ashi, saluran persentil dan rata-rata bergerak untuk membentuk pendekatan sistematis, mampu mengidentifikasi tren dan mengendalikan risiko melalui 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)


Lebih banyak