Strategi crossover purata bergerak berganda adalah strategi trend-mengikuti klasik. Strategi ini menggunakan dua purata bergerak dengan tempoh yang berbeza untuk menangkap trend pasaran. Apabila purata bergerak pantas melintasi di atas purata bergerak perlahan, ia menghasilkan isyarat panjang. Apabila purata bergerak pantas melintasi di bawah purata bergerak perlahan, ia menghasilkan isyarat pendek. Idea teras strategi ini adalah bahawa purata bergerak pantas lebih sensitif terhadap perubahan harga dan dapat bertindak balas dengan lebih cepat terhadap perubahan dalam trend pasaran, sementara purata bergerak perlahan mencerminkan trend jangka panjang pasaran. Dengan menganalisis persilangan kedua purata bergerak, kita dapat menentukan titik perubahan trend pasaran dan membuat perdagangan dengan sewajarnya.
Dalam kod strategi ini, dua purata bergerak digunakan: purata bergerak pantas (default 14 tempoh) dan purata bergerak perlahan (default 28 tempoh).
Logik utama strategi adalah seperti berikut:
Melalui logik ini, strategi boleh mengesan trend utama pasaran, memegang kedudukan panjang dalam trend menaik dan kedudukan pendek atau tidak ada kedudukan dalam trend menurun.
Untuk menangani risiko ini, langkah-langkah berikut boleh diambil:
Pengoptimuman ini boleh meningkatkan daya adaptasi dan kestabilan strategi untuk menyesuaikan diri dengan keadaan pasaran yang berbeza. Walau bagaimanapun, perlu juga diperhatikan bahawa pengoptimuman berlebihan boleh menyebabkan terlalu banyak strategi dan prestasi yang buruk dalam perdagangan langsung. Pengesahan lanjut pada data luar sampel diperlukan.
Strategi crossover purata bergerak berganda adalah strategi trend-mengikuti klasik yang menjana isyarat perdagangan melalui persilangan dua purata bergerak dengan tempoh yang berbeza. Ia mempunyai logik yang mudah, mudah dilaksanakan, dan sesuai untuk pasaran trend. Walau bagaimanapun, di pasaran terhad, ia mungkin mengalami perdagangan yang kerap dan kerugian berturut-turut. Oleh itu, apabila menggunakan strategi ini, adalah perlu untuk mengoptimumkan parameter purata bergerak berdasarkan ciri pasaran dan menetapkan paras stop-loss dan mengambil keuntungan yang munasabah. Di samping itu, fleksibiliti dan kestabilan strategi boleh ditingkatkan dengan memperkenalkan lebih banyak penunjuk teknikal, mengoptimumkan pengurusan kedudukan, penentuan trend, dll. Walau bagaimanapun, pengoptimuman berlebihan boleh menyebabkan terlalu banyak dan harus dirawat dengan berhati-hati. Secara keseluruhan, Strategi crossover purata bergerak berganda adalah strategi klasik yang bernilai belajar dan penyelidikan. Melalui pengoptimuman dan peningkatan berterusan, ia boleh menjadi alat perdagangan yang berkesan.
/*backtest start: 2024-02-09 00:00:00 end: 2024-03-10 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © z4011 //@version=5 strategy("#2idagos", overlay=true, margin_long=100, margin_short=100) allowShorting = input.bool(true, "Allow Shorting") fastMALength = input.int(14, "Fast MA Length") slowMALength = input.int(28, "Slow MA Length") fastMAType = input.string("Simple", "Fast MA Type", ["Simple", "Exponential", "Weighted", "Relative"]) slowMAType = input.string("Simple", "Fast MA Type", ["Simple", "Exponential", "Weighted", "Relative"]) float fastMA = switch fastMAType "Simple" => ta.sma(close, fastMALength) "Exponential" => ta.ema(close, fastMALength) "Weighted" => ta.wma(close, fastMALength) "Relative" => ta.rma(close, fastMALength) plot(fastMA, color = color.aqua, linewidth = 2) float slowMA = switch slowMAType "Simple" => ta.sma(close, slowMALength) "Exponential" => ta.ema(close, slowMALength) "Weighted" => ta.wma(close, slowMALength) "Relative" => ta.rma(close, slowMALength) plot(slowMA, color = color.blue, linewidth = 2) longCondition = ta.crossover(fastMA, slowMA) if (longCondition) strategy.entry("Long", strategy.long) shortCondition = ta.crossunder(fastMA, slowMA) and allowShorting if (shortCondition) strategy.entry("Short", strategy.short) closeCondition = ta.crossunder(fastMA, slowMA) and not allowShorting if (closeCondition) strategy.close("Long", "Close")