Ini adalah strategi perdagangan kuantitatif silang EMA. Ia menggunakan dua EMA dengan tempoh yang berbeza sebagai isyarat perdagangan, pergi lama apabila EMA tempoh yang lebih pendek melintasi EMA tempoh yang lebih lama dan pergi pendek apabila EMA tempoh yang lebih pendek melintasi di bawah EMA tempoh yang lebih lama.
Strategi ini menggunakan salib emas dan salib kematian EMA sebagai isyarat dagangan. Secara khusus, ia mengira EMA tempoh pendek dan EMA tempoh panjang masing-masing. Apabila EMA tempoh pendek melintasi EMA tempoh panjang, ia menghasilkan isyarat beli untuk pergi lama. Apabila EMA tempoh pendek melintasi di bawah EMA tempoh panjang, ia menghasilkan isyarat jual untuk pergi pendek. Oleh itu, trend bergerak EMA menentukan arah dagangan.
Selepas memasuki kedudukan, strategi ini juga menetapkan stop loss dan mengambil keuntungan secara serentak. Stop loss adalah peratusan tertentu daripada harga kemasukan sebagai garisan stop loss. Jika harga menyentuh garisan stop loss, ia akan keluar dari kedudukan untuk stop loss. Take profit adalah peratusan tertentu daripada harga kemasukan sebagai garisan mengambil keuntungan. Jika harga menyentuh garisan mengambil keuntungan, ia akan keluar dari kedudukan untuk mengambil keuntungan.
Strategi ini juga membolehkan memilih hanya perdagangan intraday atau perdagangan kedudukan yang panjang, hanya pendek.
Strategi ini mempunyai kelebihan berikut:
Menggunakan penunjuk EMA untuk menapis bunyi bising dan menangkap trend pertengahan jangka panjang dengan lancar.
Mengambil crossover EMA antara tempoh yang lebih pendek dan lebih lama sebagai isyarat perdagangan untuk mengelakkan perdagangan berlebihan.
Menetapkan stop loss dan mengambil keuntungan untuk mengawal nisbah risiko-balasan setiap perdagangan, yang baik untuk pengurusan wang.
Membolehkan hanya perdagangan panjang, hanya pendek, intraday dan kedudukan sesuai dengan jenis peniaga yang berbeza.
Menyokong pelbagai aset perdagangan seperti saham, forex, cryptocurrency dan lain-lain
Strategi ini juga mempunyai beberapa risiko berpotensi:
Penunjuk EMA mempunyai kesan kelewatan dan mungkin terlepas beberapa titik perubahan trend jangka pendek.
Pilihan yang tidak sesuai untuk tempoh EMA yang lebih pendek dan lebih lama boleh menyebabkan isyarat perdagangan yang berantakan.
Memegang kedudukan terlalu lama boleh mengambil fluktuasi pasaran yang lebih besar.
Stop loss mekanikal dan mengambil keuntungan boleh keluar dari kedudukan terlalu awal atau mengurangkan keuntungan lebih awal.
Pengukuran pengurusan risiko yang sepadan:
Mengoptimumkan parameter EMA untuk mencari kombinasi tempoh terbaik.
Tambahkan penunjuk lain sebagai penilaian tambahan.
Sesuaikan stop loss dan ambil keuntungan secara dinamik.
Manual campur tangan keadaan pasaran yang luar biasa.
Strategi ini boleh dioptimumkan dalam aspek berikut:
Pengoptimuman terbaik parameter EMA untuk mencari kombinasi jangka pendek dan jangka panjang yang sesuai untuk aset dagangan yang berbeza.
Tambah penunjuk lain seperti MACD, KD untuk sinergi pelbagai penunjuk.
Tambah model pembelajaran mesin untuk menjana stop loss dinamik dan mengambil keuntungan.
Sambungkan penunjuk RISK yang lebih maju untuk kejuruteraan ciri.
Tambah komponen perdagangan adaptif untuk parameter pengoptimuman diri.
Ringkasnya, ini adalah trend yang sangat baik mengikuti templat strategi. Kekuatannya terletak pada menggunakan penunjuk EMA untuk menapis bunyi bising dan mencapai keuntungan yang stabil, sambil memiliki pengurusan risiko-balasan yang komprehensif. Melalui pengoptimuman berterusan, strategi ini boleh menjadi strategi kuantitatif sejagat di seluruh pasaran dan berbaloi bagi peniaga untuk belajar dan berlatih.
/*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("EMA Crossover Strategy by Vikrant Singh", overlay=true) // Input for EMA Lengths var bool runningPOS = false var float stopLossLevel = na var float targetLevel = na shortLength = input(11, title="Short EMA Length") longLength = input(21, title="Long EMA Length") // Input for Stop-Loss and Target stopLossPct = input(1, title="Stop-Loss (%)") targetPct = input(3, title="Target (%)") longOnly = input(true, title="Long Only") intraDay = input(true, title="intraday?") // Calculate EMAs emaShort = ta.ema(close, shortLength) emaLong = ta.ema(close, longLength) // Calculate crossover conditions crossoverCondition = ta.crossover(emaShort, emaLong) crossunderCondition = ta.crossunder(emaShort, emaLong) // Entry condition (long position just before crossover) if crossoverCondition and not runningPOS and longOnly and (hour <= 15) strategy.entry("Long", strategy.long) runningPOS := true stopLossLevel := close * (1 - stopLossPct / 100) targetLevel := close * (1 + targetPct / 100) //Entry condition (short position just before crossover) if crossunderCondition and not runningPOS and not longOnly and (hour <= 15) strategy.entry("Short", strategy.short) runningPOS := true stopLossLevel := close * (1 + stopLossPct / 100) targetLevel := close * (1 - targetPct / 100) // Exit conditions (square off on reverse crossover) //Exit long if (crossunderCondition or (low < stopLossLevel) or (high > targetLevel) ) and longOnly and runningPOS strategy.close("Long",comment = "Exit long")// ("Long", from_entry="Long",stop=stopLossLevel, limit=targetLevel) runningPOS := false //Exit short if (crossoverCondition or (high > stopLossLevel) or (low < targetLevel) ) and not longOnly and runningPOS strategy.close("Short", comment = "Exit Short") runningPOS := false if intraDay and runningPOS if (hour >= 15) strategy.close_all(comment = "Intraday square off") //strategy.close("Long",comment = "intraday square off") runningPOS := false // Plot EMAs plot(emaShort, color=color.blue, title="Short EMA") plot(emaLong, color=color.red, title="Long EMA")