Strategi Crossover Purata Bergerak Berganda Perbandingan Harga Penutupan adalah strategi perdagangan kuantitatif yang agak mudah. Ia mengira harga penutupan purata 7 lilin baru-baru ini dan harga penutupan purata 20 lilin. Apabila purata bergerak jangka pendek melintasi purata bergerak jangka panjang dari bawah, ia menandakan kedudukan panjang. Apabila purata bergerak jangka pendek melintasi di bawah purata bergerak jangka panjang, ia menandakan kedudukan pendek. Ini membolehkan strategi untuk menangkap titik perubahan dalam trend jangka pertengahan pasaran.
Logik teras strategi ini adalah untuk mengira harga penutupan purata 7 lilin terkini (tidak termasuk lilin semasa) sebagai purata bergerak jangka pendek, dan harga penutupan purata 20 lilin (tidak termasuk 7 lilin terkini) sebagai purata bergerak jangka panjang. Apabila purata bergerak jangka pendek melintasi purata bergerak jangka panjang dari bawah, ia menunjukkan pasaran beralih dari penurunan ke kenaikan, menandakan kedudukan panjang. Apabila purata bergerak jangka pendek melintasi di bawah purata bergerak jangka panjang dari atas, ia menunjukkan pasaran beralih dari kenaikan ke penurunan, menandakan kedudukan pendek.
Pada isyarat panjang, kedudukan panjang akan dibuka menggunakan keseluruhan modal akaun. Pada isyarat pendek, kedudukan panjang yang sedia ada akan ditutup terlebih dahulu sebelum membuka kedudukan pendek menggunakan jumlah yang sama. Setiap kedudukan yang dibuka akan dipegang selama 20-25 lilin. Selama tempoh ini, jika kerugian berlaku, 50% kedudukan akan dihentikan kerugian. Jika keuntungan yang mencukupi berlaku, 50% kedudukan akan diambil keuntungan.
Kelebihan strategi crossover purata bergerak berganda yang mudah ini adalah:
Sebagai satu trend yang mudah mengikut strategi, ia juga menghadapi beberapa risiko yang berpotensi:
Pengoptimuman untuk menangani risiko ini adalah:
Sebagai strategi silang purata bergerak berganda yang mudah, pengoptimuman utama adalah:
Mengoptimumkan parameter MA, menguji kombinasi MA jangka pendek dan jangka panjang yang berbeza untuk parameter terbaik;
Tambah penapis lain seperti jumlah, indeks turun naik dan lain-lain untuk mengelakkan isyarat yang salah dalam pasaran yang bergolak;
Mengoptimumkan strategi stop loss dan mengambil keuntungan, menguji nisbah yang berbeza untuk mencari yang optimum;
Uji keberkesanan dalam kitaran pasaran yang berbeza dan optimumkan tempoh tahan;
Tambah algoritma pembelajaran mesin, terus mengoptimumkan parameter melalui back-testing untuk lebih kukuh.
Ringkasnya, ini adalah strategi crossover purata bergerak berganda yang mudah, menggunakan crossover MA dalam tempoh yang berbeza untuk menentukan titik perubahan trend jangka pertengahan. Ia mempunyai kepraktisan yang tinggi dan mudah dikendalikan. Tetapi ia juga mempunyai batasan dalam menentukan titik pembalikan pasaran yang benar. Pengoptimuman lanjut pada penambahan penapis, penyesuaian parameter, pembelajaran mesin dll diperlukan untuk menjadikannya lebih mantap di seluruh keadaan pasaran yang berbeza untuk alfa yang konsisten.
/*backtest start: 2024-01-05 00:00:00 end: 2024-02-04 00:00:00 period: 2h basePeriod: 15m 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/ // © nrathi2211 //@version=5 strategy("Closing Prices", overlay=true) //variables closingB7 = ta.highest(close, 7)[7] closingB14 = ta.highest(close, 7)[20] highB14 = ta.highest(low, 50)[7] capital = 50000 //functions qty_find(float price) => capital / int(price) profit_take() => profit = strategy.opentrades.profit(strategy.opentrades - 1) profit*.95 if(closingB7 < closingB14) if(ta.crossover(close, closingB7)) strategy.entry("long_buy", strategy.long, qty_find(close)) current_profit = strategy.opentrades.profit(strategy.opentrades - 1) if(current_profit < 0) strategy.close("Exit long_buy SL", "long_buy", qty_percent = 50) else if(current_profit < profit_take()) strategy.close("Exit long_buy TP", "long_buy", qty_percent = 50) if(ta.crossunder(close, closingB7)) strategy.exit("long_sell", from_entry = "long_buy", stop = closingB7) plot(closingB7, "cl", color.green, 2) //plot(closingB14, "cl", color.red, 2) plot(highB14, "cl", color.purple, 2)