Idea utama strategi ini adalah menggunakan purata bergerak yang halus untuk mengira Heiken Ashi yang halus untuk mengenal pasti trend harga, dan pergi panjang apabila harga mempunyai salib emas dengan Heiken Ashi yang halus, dan pergi pendek apabila terdapat salib kematian.
Strategi ini pertama-tama menentukan fungsi smoothedMovingAvg untuk mengira purata bergerak yang halus, yang menggunakan nilai purata bergerak tempoh sebelumnya dan harga terbaru untuk mengira purata bergerak yang halus tempoh semasa berdasarkan berat tertentu.
Kemudian ia mentakrifkan fungsi getHAClose untuk mengira harga penutupan Heiken Ashi berdasarkan harga terbuka, tinggi, rendah dan dekat.
Dalam logik strategi utama, ia pertama mendapat harga asal dari tempoh yang berbeza, kemudian menggunakan fungsi smoothedMovingAvg untuk mengira purata bergerak yang halus, dan kemudian mengira harga penutupan Heiken Ashi yang halus melalui fungsi getHAClose.
Akhirnya, ia pergi lama apabila harga melintasi di atas harga penutupan Heiken Ashi yang dilencangkan, dan menutup kedudukan apabila harga melintasi di bawahnya. Ia pergi pendek apabila harga melintasi di bawah harga penutupan Heiken Ashi yang dilencangkan, dan menutup kedudukan apabila harga melintasi di atasnya.
Kelebihan terbesar strategi ini ialah dengan menggunakan purata bergerak yang halus untuk mengira Heiken Ashi yang halus, ia dapat menentukan trend harga dengan lebih tepat dan menapis beberapa bunyi bising untuk mengelakkan menghasilkan isyarat yang salah semasa tempoh yang bergolak.
Risiko utama yang dihadapi oleh strategi ini adalah:
Tetapan parameter yang tidak betul dari pelunturan boleh menyebabkan strategi melewatkan peluang pembalikan harga atau menghasilkan isyarat yang salah. Parameter optimum perlu dijumpai melalui pengujian dan pengoptimuman berulang.
Apabila harga turun naik dengan ketara, purata bergerak yang dilancangkan mungkin tertinggal dari perubahan harga, mengakibatkan pemicu stop loss atau kehilangan peluang pembalikan.
Untuk menangani risiko di atas, kaedah seperti menyesuaikan parameter penyelarasan, memperkenalkan mekanisme stop loss, mengurangkan saiz kedudukan setiap perdagangan boleh digunakan untuk mengurangkan risiko dan meningkatkan kestabilan strategi.
Strategi ini juga boleh dioptimumkan dalam aspek berikut:
Memperkenalkan parameter penyelarasan adaptif untuk menyesuaikan parameter secara automatik apabila turun naik pasaran meningkat.
Gabungkan dengan penunjuk lain sebagai penapis untuk mengelakkan mengeluarkan isyarat yang salah semasa penyatuan harga.
Tambah mekanisme stop loss untuk mengawal setiap kerugian perdagangan.
Mengoptimumkan produk dagangan, sesi dagangan dan sebagainya untuk memberi tumpuan kepada produk dan sesi dengan kelebihan yang paling banyak.
Melalui pengoptimuman di atas, risiko pemasangan kurva strategi dapat dikurangkan lagi dan kebolehan penyesuaian dan kestabilan strategi dapat ditingkatkan.
Logik keseluruhan strategi ini jelas dan mudah difahami. Dengan mengira Heiken Ashi yang halus untuk menentukan trend harga dan membuat kedudukan panjang dan pendek dengan sewajarnya. Kelebihannya yang terbesar adalah dapat menapis beberapa bunyi bising dan meningkatkan ketepatan penghakiman isyarat. Tetapi terdapat juga kesukaran tertentu dalam pengoptimuman parameter dan risiko kehilangan pembalikan pantas. Pengoptimuman lanjut boleh dilakukan melalui pengenalan mekanisme adaptif, memperluaskan kombinasi penunjuk dan lain-lain untuk menjadikannya bernilai penyelidikan 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)