Ide utama dari strategi ini adalah menggunakan rata-rata bergerak halus untuk menghitung Heiken Ashi halus untuk mengidentifikasi tren harga, dan pergi panjang ketika harga memiliki salib emas dengan Heiken Ashi halus, dan pergi pendek ketika ada salib kematian.
Strategi ini pertama-tama mendefinisikan fungsi smoothedMovingAvg untuk menghitung rata-rata bergerak halus, yang menggunakan nilai rata-rata bergerak periode sebelumnya dan harga terbaru untuk menghitung rata-rata bergerak halus periode saat ini berdasarkan bobot tertentu.
Kemudian ia mendefinisikan fungsi getHAClose untuk menghitung harga penutupan Heiken Ashi berdasarkan harga buka, tinggi, rendah dan dekat.
Dalam logika strategi utama, pertama-tama mendapatkan harga asli dari periode yang berbeda, kemudian menggunakan fungsi smoothedMovingAvg untuk menghitung rata-rata bergerak yang halus, dan kemudian menghitung harga penutupan Heiken Ashi yang halus melalui fungsi getHAClose.
Akhirnya, ia pergi panjang ketika harga melintasi di atas harga penutupan Heiken Ashi yang dihaluskan, dan menutup posisi ketika harga melintasi di bawahnya.
Keuntungan terbesar dari strategi ini adalah bahwa dengan menggunakan rata-rata bergerak halus untuk menghitung Heiken Ashi halus, dapat lebih akurat menentukan tren harga dan menyaring beberapa kebisingan untuk menghindari menghasilkan sinyal yang salah selama periode bergolak.
Risiko utama yang dihadapi strategi ini adalah:
Pengaturan parameter yang tidak benar dari smoothing dapat menyebabkan strategi kehilangan peluang pembalikan harga atau menghasilkan sinyal yang salah. Parameter optimal perlu ditemukan melalui pengujian dan optimalisasi yang berulang.
Ketika harga berfluktuasi tajam, rata-rata bergerak yang dihaluskan dapat tertinggal dari perubahan harga, sehingga memicu stop loss atau kehilangan peluang pembalikan.
Untuk mengatasi risiko di atas, metode seperti menyesuaikan parameter smoothing, memperkenalkan mekanisme stop loss, mengurangi ukuran posisi per perdagangan dapat digunakan untuk mengurangi risiko dan meningkatkan stabilitas strategi.
Strategi ini juga dapat dioptimalkan dalam aspek berikut:
Memperkenalkan parameter perataan adaptif untuk menyesuaikan parameter secara otomatis ketika volatilitas pasar meningkat.
Menggabungkan dengan indikator lain sebagai filter untuk menghindari mengeluarkan sinyal yang salah selama konsolidasi harga.
Tambahkan mekanisme stop loss untuk mengendalikan per trade loss.
Mengoptimalkan produk perdagangan, sesi perdagangan dll untuk fokus pada produk dan sesi dengan keuntungan yang paling banyak.
Melalui optimalisasi di atas, risiko penyesuaian kurva strategi dapat dikurangi lebih lanjut dan kemampuan beradaptasi dan stabilitas strategi dapat ditingkatkan.
Logika keseluruhan dari strategi ini jelas dan mudah dipahami. Dengan menghitung Heiken Ashi yang halus untuk menentukan tren harga dan membuat posisi panjang dan pendek sesuai. Keuntungannya yang terbesar adalah mampu menyaring beberapa kebisingan dan meningkatkan akurasi penilaian sinyal. Tetapi ada juga kesulitan tertentu dalam optimasi parameter dan risiko kehilangan pembalikan cepat. Optimasi lebih lanjut dapat dilakukan melalui pengenalan mekanisme adaptif, memperluas kombinasi indikator dll untuk membuatnya layak penelitian mendalam.
/*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)