Sistem perdagangan purata bergerak adaptif Donchian adalah strategi perdagangan kuantitatif yang mengesan trend harga. Strategi ini menggunakan penunjuk saluran Donchian digabungkan dengan purata bergerak jangka panjang dan jangka pendek untuk menilai dan mengesan trend harga dan menangkap trend harga jangka menengah hingga panjang untuk perdagangan trend.
Strategi ini pertama kali mengira julat turun naik sebenar. Julat turun naik sebenar merujuk kepada julat pergerakan harga dari harga penutupan lilin sebelumnya hingga harga tertinggi dan terendah lilin semasa. Kemudian ia mengira purata bergerak mudah julat turun naik sebenar sebagai lebar jalur saluran Donchian. Digabungkan dengan purata bergerak dua tempoh masa, ia menilai trend harga. Peraturan penghakiman khusus adalah seperti berikut:
Apabila harga memecahkan purata bergerak jangka panjang ditambah lebar jalur dan purata bergerak jangka pendek ditambah lebar jalur, pergi panjang; apabila harga jatuh di bawah purata bergerak jangka panjang dikurangkan lebar jalur dan purata bergerak jangka pendek dikurangkan lebar jalur, pergi pendek. Syarat penutupan adalah menutup kedudukan panjang apabila harga jatuh di bawah purata bergerak panjang dan pendek ditambah lebar jalur; menutup kedudukan pendek apabila harga naik di atas purata bergerak panjang dan pendek ditambah lebar jalur.
Oleh itu, dengan menyesuaikan lebar jalur Saluran Donchain secara dinamik berdasarkan turun naik sebenar dan menapis dengan purata bergerak berganda, strategi dapat dengan berkesan mengesan trend harga jangka sederhana hingga panjang, mengurangkan isyarat palsu, dan mendapatkan peluang perdagangan jangka panjang yang stabil.
Strategi ini mempunyai kelebihan berikut:
Menggunakan turun naik yang benar untuk menyesuaikan lebar jalur saluran secara dinamik mengelakkan parameter statik dan menyesuaikan diri dengan perubahan pasaran.
Gabungan purata bergerak berganda dapat menapis bunyi bising dengan berkesan dan mengurangkan isyarat palsu.
Mengesan trend jangka sederhana hingga panjang boleh mengurangkan perdagangan berulang dan kekerapan perdagangan yang lebih rendah untuk mendapatkan peluang keuntungan jangka panjang.
Logik strategi adalah mudah dan jelas, mudah dilaksanakan, toleransi ralat, dan sesuai untuk perdagangan algoritma automatik.
Strategi ini juga mempunyai beberapa risiko:
Ia adalah sukar untuk menangkap masa kemasukan yang terbaik untuk perdagangan jangka panjang semasa penyesuaian jangka pendek.
Parameter memerlukan pengoptimuman untuk sektor yang berbeza dan stok individu.
Titik-titik Stop Loss perlu dilengkapkan dengan betul terhadap perubahan trend yang ketara akibat kecemasan.
Ringkasnya, sistem perdagangan purata bergerak adaptif Donchian adalah strategi kuantitatif yang keseluruhan stabil, mudah dan mudah dilaksanakan. Dengan menggunakan saluran dinamik dan penapisan purata bergerak berganda, ia dapat dengan berkesan mengesan trend pasaran jangka menengah hingga panjang, mengurangkan kekerapan perdagangan, dan memperoleh keuntungan jangka panjang yang berterusan. Sementara itu, mengoptimumkan tetapan parameter, mencegah risiko, dan stop loss yang betul juga harus diperhatikan untuk menyesuaikan diri dengan kecemasan. Secara keseluruhan, strategi ini mempunyai prestasi yang cemerlang dan sesuai untuk pengesanan trend algoritma jangka menengah hingga panjang.
/*backtest start: 2023-02-14 00:00:00 end: 2024-02-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © dongyun //@version=4 strategy("唐齐安移动平均交易系统", overlay=true) longperiod = input(20,'长线') shortperiod = input(5,'短线') bandfactor = input(1.0,'') TrueHigh = 0.0 TrueLow = 0.0 TrueRange = 0.0 TrueHigh := close[1] > high ? close[1] : high TrueLow := close[1] < low ? close[1] : low TrueRange := TrueHigh - TrueLow AvgTrueRange = sma(TrueRange,longperiod) MAlong = sma(close,longperiod) MAshort = sma(close,shortperiod) band = AvgTrueRange * bandfactor if close > MAlong[1] + band[1] and close > MAshort[1] + band[1] strategy.entry("Long", strategy.long, when=strategy.position_size < 1) else if close < MAlong[1] - band[1] and close < MAshort[1] - band[1] strategy.entry("Short", strategy.short, when=strategy.position_size > -1) if close < MAlong[1] - band[1] or close < MAshort[1] - band[1] strategy.close("Long", when=strategy.position_size > 0) else if close > MAlong[1] + band[1] or close > MAshort[1] + band[1] strategy.close("Short", when=strategy.position_size < 0)