Reversal Momentum Breakout Strategy adalah strategi perdagangan kuantitatif yang menghasilkan isyarat perdagangan menggunakan pembalikan harga dan penunjuk momentum. Berdasarkan teori
Logik teras strategi ini adalah untuk mengenal pasti titik pembalikan pasaran dengan mengira harga tertinggi dan terendah dalam tetingkap belakang tertentu (contohnya 20 hari).
Mengira harga tertinggi (window_high) dan harga terendah (window_low) dalam tempoh 20 hari yang lalu.
Jika paras tertinggi hari ini lebih tinggi daripada maksimum 20 hari yang lalu (atas 20 hari baru), masukkan tempoh pemantauan pembalikan tinggi dan atur kaunter kepada 5 hari.
Jika tiada tinggi baru berlaku, kurangkan kiraan dengan 1 setiap hari. Apabila kiraan mencapai 0, tempoh pemantauan pembalikan tinggi berakhir.
Logik penghakiman untuk harga terendah adalah sama. Jika terendah baru berlaku, masukkan tempoh pemantauan pembalikan rendah.
Posisi panjang dan pendek diambil dalam tempoh pemantauan pembalikan. Isyarat pembalikan berhampiran titik pembalikan utama membolehkan menangkap pergerakan yang lebih besar.
Strategi ini juga menetapkan masa permulaan perdagangan untuk mengelakkan penjanaan isyarat pada data sejarah.
Strategi Penembusan Momentum Pembalikan mempunyai kelebihan utama berikut:
Menangkap peluang pembalikan, sesuai untuk trend pembalikan. Pasaran sering menunjukkan beberapa tahap pembalikan selepas aliran naik atau penurunan yang berterusan. Strategi ini bertujuan untuk menangkap titik perubahan ini.
Pemandu momentum, agak sensitif. Mengesan harga tertinggi dan terendah melalui tetingkap dapat dengan sensitif mengenal pasti trend pembalikan harga dan masa.
Tempoh pemantauan pembalikan mengelakkan isyarat palsu. Isyarat dihasilkan hanya di sekitar titik pembalikan utama, menapis beberapa bunyi.
Membolehkan kedudukan panjang dan pendek. Bergantian antara panjang dan pendek mengikuti arah pasaran.
Logik yang agak mudah, mudah dilaksanakan, bergantung pada harga dan petunjuk momentum yang mudah, mudah dikodkan.
Risiko utama strategi ini termasuk:
Ramalan pembalikan yang tidak tepat. Strategi boleh menimbulkan kerugian jika pasaran cenderung ke arah.
Tren pasaran secara keseluruhan tidak dipertimbangkan. Pembalikan saham individu tidak semestinya mewakili pembalikan pasaran. Analisis pasaran harus digabungkan.
Pengeluaran yang berpotensi besar. Pengeluaran boleh berkembang tanpa pembalikan sebenar.
Data yang sesuai bias. prestasi boleh berbeza dengan ketara daripada backtests.
Sensitiviti parameter. Tempoh tetingkap, parameter kaunter dll mempengaruhi kestabilan.
Kaedah kawalan risiko yang sepadan termasuk mengoptimumkan stop loss, menggabungkan faktor pasaran, menyesuaikan kombinasi parameter dan mengesahkan kestabilan.
Arah pengoptimuman utama termasuk:
Menggabungkan penunjuk pasaran. Menilai kekuatan pasaran untuk mengelakkan persekitaran gambaran besar yang tidak baik.
Pilihan saham pelbagai faktor. Pilih saham dengan asas yang kuat dan overvaluation.
Pengoptimuman parameter. Sesuaikan tempoh tetingkap dan parameter kira untuk mencari kombinasi parameter optimum.
Tambah strategi stop loss e.g. trailing stop, volatility stop untuk mengawal drawdown maksimum.
Meningkatkan ketepatan ramalan pembelajaran mesin pembalikan harga.
Strategi Breakout Momentum Pembalikan mengenal pasti peluang pembalikan dengan mengesan harga dan momentum. Ia bertindak balas dengan sensitif dan mengenal pasti trend pembalikan dan masa. Tetapi ia mempunyai risiko yang memerlukan pengoptimuman dan kawalan risiko yang betul. Secara keseluruhan, apabila difahami dan dioptimumkan dengan teliti, ia boleh membentuk komponen yang berkesan dalam sistem perdagangan kuantitatif.
/*backtest start: 2023-02-16 00:00:00 end: 2024-02-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("New Highs and Lows Momentum Strategy", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) window = input.int(20, title="New Highs and Lows Window", minval=1) decay = input.int(5, title="Decay", minval=1) startDate = input(timestamp("1 Jan 2023"), title = "Start Date") allowShort = input.bool(false, title = "Allow shorting") var int highDecayCounter = 0 var bool isHighPeriod = false var int lowDecayCounter = 0 var bool isLowPeriod = false inTradeWindow = true window_high = ta.highest(close, window) window_low = ta.lowest(low, window) // Logic for Highs if window_high > ta.highest(close, window)[1] highDecayCounter := decay isHighPeriod := true else if highDecayCounter > 0 highDecayCounter := highDecayCounter - 1 else isHighPeriod := false // Logic for Lows if window_low < ta.lowest(low, window)[1] lowDecayCounter := decay isLowPeriod := true else if lowDecayCounter > 0 lowDecayCounter := lowDecayCounter - 1 else isLowPeriod := false // Strategy Execution if inTradeWindow if isHighPeriod and highDecayCounter == decay strategy.entry("Long", strategy.long) if isHighPeriod and highDecayCounter == 0 strategy.close("Long") if isLowPeriod and lowDecayCounter == decay and allowShort strategy.entry("Short", strategy.short) if isLowPeriod and lowDecayCounter == 0 and allowShort strategy.close("Short") // Plotting plot(window_high, color=color.green) plot(window_low, color=color.red)