EMA9/20 adalah strategi perdagangan kuantitatif berdasarkan persilangan dua purata bergerak eksponensial (EMA). Strategi ini menggunakan EMA 9 hari dan EMA 20 hari sebagai isyarat perdagangan, menjana isyarat beli atau jual apabila dua purata bergerak bersilang.
Prinsip utama strategi ini adalah untuk menangkap trend pasaran dengan menggunakan persilangan dua purata bergerak dengan tempoh yang berbeza. Apabila purata bergerak jangka pendek (9 hari EMA) melintasi di atas purata bergerak jangka panjang (20 hari EMA), ia menunjukkan trend menaik berpotensi di pasaran, dan strategi menghasilkan isyarat beli. Sebaliknya, apabila purata bergerak jangka pendek melintasi di bawah purata bergerak jangka panjang, ia mencadangkan trend penurunan berpotensi, dan strategi menghasilkan isyarat jual.
Di samping isyarat persilangan purata bergerak, strategi ini juga menggabungkan persilangan antara harga dan purata bergerak jangka pendek (9 hari EMA) sebagai isyarat tambahan. Apabila harga melintasi di atas EMA 9 hari, ia juga menghasilkan isyarat beli, dan apabila harga melintasi di bawah EMA 9 hari, ia menghasilkan isyarat jual.
Untuk mengawal risiko, strategi ini menggunakan mekanisme hentian. Setelah perdagangan memasuki keadaan menguntungkan, hentian hentian terus menyesuaikan kedudukan hentian kerugian mengikut pergerakan harga sehingga harga melanggar tahap hentian kerugian ke arah yang bertentangan, dengan itu mengunci keuntungan sambil mengehadkan potensi kerugian.
Kesederhanaan: Strategi ini berdasarkan prinsip klasik crossover purata bergerak, menjadikannya mudah difahami dan dilaksanakan.
Mengikuti trend: Dengan menggunakan persilangan dua purata bergerak dengan tempoh yang berbeza, strategi dapat menangkap trend utama di pasaran dengan berkesan.
Stop-loss tepat pada masanya: Pengenalan mekanisme trailing stop membolehkan penutupan kedudukan tepat pada masanya apabila trend berbalik, mengawal risiko penurunan.
Fleksibiliti parameter: Parameter strategi (seperti tempoh purata bergerak, titik stop-loss, dll.) boleh dioptimumkan dan diselaraskan mengikut pasaran dan instrumen yang berbeza untuk menyesuaikan diri dengan pelbagai keadaan pasaran.
Perdagangan kerap: Oleh kerana strategi menggunakan kedua-dua isyarat crossover purata bergerak dan isyarat crossover harga, ia boleh membawa kepada kekerapan perdagangan yang lebih tinggi, sehingga meningkatkan kos perdagangan.
Pasaran yang bergelora: Dalam pasaran yang bergelora atau terhad, strategi boleh menghasilkan lebih banyak isyarat palsu, yang mengakibatkan penurunan keuntungan.
Sensitiviti parameter: Prestasi strategi mungkin sensitif terhadap pemilihan parameter, dan parameter yang berbeza mungkin menghasilkan hasil yang berbeza secara ketara.
Penapisan isyarat: Sebagai tambahan kepada isyarat crossover purata bergerak dan isyarat crossover harga, masukkan penunjuk teknikal lain (seperti RSI, MACD, dll.) sebagai syarat penapisan untuk mengurangkan isyarat palsu.
Parameter dinamik: Sesuaikan parameter strategi secara dinamik (seperti tempoh purata bergerak, titik berhenti rugi, dll.) berdasarkan faktor seperti turun naik pasaran dan kekuatan trend untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
Ukuran kedudukan: Sesuaikan saiz kedudukan secara dinamik berdasarkan trend pasaran dan kekuatan isyarat, meningkatkan saiz kedudukan apabila kekuatan trend tinggi dan mengurangkan saiz kedudukan apabila trend tidak jelas atau isyarat lebih lemah.
Penyesuaian pelbagai instrumen: Memperluaskan strategi kepada pelbagai instrumen dan pasaran, dan melalui kepelbagaian dan analisis korelasi, mengurangkan risiko keseluruhan dan meningkatkan kestabilan pulangan.
Strategi Crossover Purata Bergerak Berganda - EMA9/20 adalah strategi perdagangan kuantitatif yang mudah dan praktikal yang menangkap trend pasaran melalui persilangan dua purata bergerak dengan tempoh yang berbeza dan persilangan harga, sambil menggunakan hentian penghujung untuk mengawal risiko. Strategi ini mempunyai logika yang jelas, mudah difahami dan dilaksanakan, menjadikannya sesuai untuk dipelajari dan digunakan oleh pemula. Walau bagaimanapun, strategi ini juga mempunyai beberapa batasan, seperti prestasi yang buruk di pasaran yang berbelit-belit dan kepekaan terhadap pemilihan parameter. Oleh itu, dalam aplikasi praktikal, adalah perlu untuk mengoptimumkan dan meningkatkan strategi mengikut ciri-ciri khusus pasaran dan instrumen, seperti memperkenalkan penapisan isyarat, penyesuaian parameter dinamik, ukuran kedudukan, dan kaedah lain untuk meningkatkan keuntungan dan kestabilan strategi perdagangan. Secara keseluruhan, Strategi Crossover Purata Bergerak Berganda - EMA9/20 menyediakan rangka kerja kuantitatif asas yang baik dan bernilai penyelidikan dan penerokaan lanjut.
/*backtest start: 2023-03-02 00:00:00 end: 2024-03-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title = "EMAs 9 / 20", shorttitle = '9/20 EMAs', initial_capital = 1000, overlay = true, default_qty_type = strategy.fixed, commission_type = strategy.commission.cash_per_contract, commission_value = 0.35, default_qty_value = 1) int trailOffset = 10 int trailPoints = 15 series float oEma9 = ta.ema(ohlc4, 9) series float oEma20 = ta.ema(ohlc4, 20) series bool closeCrossoverEma9 = ta.crossover(close, oEma9) series bool closeCrossunderEma9 = ta.crossover(close, oEma9) series bool nineCrossover20 = ta.crossover(oEma9, oEma20) series bool nineCrossunder20 = ta.crossunder(oEma9, oEma20) //Entry Exits if nineCrossover20 strategy.entry("Long 9Cross20", strategy.long, 2) else if closeCrossoverEma9 strategy.entry("Long 9CrossClose", strategy.long, 2) strategy.exit("Long 9CrossClose Exit", from_entry = "Long 9CrossClose", trail_points = trailPoints, trail_offset = trailOffset) else if nineCrossunder20 strategy.close("Long 9Cross20") if nineCrossunder20 strategy.entry("Short 9Cross20", strategy.short, 2) else if closeCrossunderEma9 strategy.entry("Short 9CrossClose", strategy.short, 2) strategy.exit("Short 9CrossClose Exit", from_entry = "Short 9CrossClose", trail_points = trailPoints, trail_offset = trailOffset) else if nineCrossover20 strategy.close("Short 9Cross20")