
Gagasan utama dari strategi ini adalah menggunakan rata-rata bergerak yang halus untuk menghitung rata-rata pembukaan yang halus untuk menemukan tren harga, dan melakukan lebih banyak ketika harga bercabang dengan rata-rata pembukaan yang halus dan melakukan kosong ketika bercabang mati.
Strategi ini pertama-tama mendefinisikan sebuah fungsi untuk menghitung rata-rata bergerak yang halus, smoothedMovingAvg, yang mengambil nilai rata-rata bergerak dari periode sebelumnya dan harga terbaru untuk menghitung rata-rata bergerak yang halus dari periode saat ini dengan berat tertentu.
Fungsi getHAClose kemudian didefinisikan untuk menghitung harga tutup dengan menggunakan harga buka, harga tertinggi, harga terendah, dan harga tutup.
Dalam logika strategi utama, pertama-tama mendapatkan harga awal dari berbagai periode, kemudian menggunakan fungsi SmoothedMovingAvg untuk menghitung rata-rata bergerak yang halus, kemudian menggunakan fungsi getHAClose untuk menghitung harga penutupan awal yang halus.
Akhirnya, ketika harga di atas bergeser untuk menandai harga tutup, lakukan lebih banyak, turun saat posisi kosong; ketika harga di bawah bergeser untuk menandai harga tutup, kosongkan, naik saat posisi kosong.
Keuntungan terbesar dari strategi ini adalah bahwa menggunakan rata-rata bergerak yang halus untuk menghitung rata-rata pengungkapan yang halus, dapat menilai tren harga dengan lebih akurat, menyaring sebagian dari kebisingan, dan menghindari sinyal yang salah dalam getaran. Selain itu, rata-rata pengungkapan itu sendiri memiliki keuntungan dari tren yang menonjol, yang digunakan dalam kombinasi dengan harga, dapat meningkatkan akurasi penilaian lebih lanjut.
Strategi ini menghadapi risiko utama sebagai berikut:
Untuk menghadapi risiko tersebut, kita dapat mengurangi risiko dan meningkatkan stabilitas strategi dengan cara seperti menyesuaikan parameter smoothing, memperkenalkan mekanisme stop loss, dan mengurangi posisi perdagangan tunggal.
Strategi ini juga dapat dioptimalkan dalam beberapa hal:
Dengan mengoptimalkan beberapa poin di atas, Anda dapat mengurangi risiko penyesuaian kurva strategi lebih lanjut dan meningkatkan fleksibilitas dan stabilitas strategi.
Strategi ini secara keseluruhan ide yang jelas dan mudah dimengerti, dengan menghitung rata-rata cahaya untuk menilai tren harga, dan dengan demikian melakukan pendekatan panjang dan pendek. Keuntungan terbesar adalah dapat menyaring sebagian dari kebisingan, meningkatkan akurasi penilaian sinyal. Tapi ada juga beberapa parameter optimasi sulit dan mungkin kehilangan risiko cepat berbalik.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Smoothed Heiken Ashi Strategy", overlay=true)
// Inputs
g_TimeframeSettings = 'Display & Timeframe Settings'
time_frame = input.timeframe(title='Timeframe for HA candle calculation', defval='', group=g_TimeframeSettings)
g_SmoothedHASettings = 'Smoothed HA Settings'
smoothedHALength = input.int(title='HA Price Input Smoothing Length', minval=1, maxval=500, step=1, defval=10, group=g_SmoothedHASettings)
// Define a function for calculating the smoothed moving average
smoothedMovingAvg(src, len) =>
smma = 0.0
smma := na(smma[1]) ? ta.sma(src, len) : (smma[1] * (len - 1) + src) / len
smma
// Function to get Heiken Ashi close
getHAClose(o, h, l, c) =>
((o + h + l + c) / 4)
// Calculate smoothed HA candles
smoothedHAOpen = request.security(syminfo.tickerid, time_frame, open)
smoothedMA1close = smoothedMovingAvg(request.security(syminfo.tickerid, time_frame, close), smoothedHALength)
smoothedHAClose = getHAClose(smoothedHAOpen, smoothedHAOpen, smoothedHAOpen, smoothedMA1close)
// Plot Smoothed Heiken Ashi candles
plotcandle(open=smoothedHAOpen, high=smoothedHAOpen, low=smoothedHAOpen, close=smoothedHAClose, color=color.new(color.blue, 0), wickcolor=color.new(color.blue, 0))
// Strategy logic
longCondition = close > smoothedHAClose
shortCondition = close < smoothedHAClose
strategy.entry("Buy", strategy.long, when=longCondition)
strategy.close("Buy", when=shortCondition)
plotshape(series=longCondition, title="Buy Signal", color=color.green, style=shape.labelup, location=location.belowbar)
plotshape(series=shortCondition, title="Sell Signal", color=color.red, style=shape.labeldown, location=location.abovebar)