
Strategi Reversal Momentum Breakout adalah strategi perdagangan kuantitatif yang menggunakan perubahan harga dan indikator momentum untuk menghasilkan isyarat perdagangan. Strategi ini didasarkan pada teori pergerakan yang lebih awal, dengan mengesan harga tertinggi dan terendah dalam tempoh tertentu, untuk menentukan sama ada pasaran berada di titik-titik penting untuk berbalik, untuk menangkap peluang berbalik.
Strategi ini terutamanya dengan mengira harga tertinggi dan terendah dalam tempoh yang ditetapkan (seperti 20 hari) untuk menentukan sama ada pasaran berada di titik perubahan penting. Logik khusus adalah seperti berikut:
Menghitung harga tertinggi (window_high) dan harga terendah (window_low) dalam 20 hari terakhir.
Jika harga tertinggi K semasa lebih tinggi daripada harga tertinggi dalam 20 hari yang lalu (iaitu munculnya tinggi baru), maka memasuki tempoh pemantauan pembalikan puncak, dan penghitungnya diletakkan pada 5 hari.
Jika harga tertinggi tidak mencipta yang baru tinggi, setiap hari penghitung dikurangkan 1 ≠. Apabila penghitung dikurangkan kepada 0, tempoh pemantauan berbalik tinggi berakhir ≠.
Logik penghakiman untuk harga terendah adalah sama, jika terdapat rendah baru, ia memasuki tempoh pemantauan pembalikan rendah.
Dalam tempoh pemantauan pembalikan, lakukan lebih banyak atau lebih sedikit operasi. Jika terdapat isyarat pembalikan berhampiran titik kritikal pembalikan, anda boleh menangkap keadaan yang lebih besar.
Strategi ini juga menetapkan masa untuk memulakan perdagangan dan mengelakkan isyarat perdagangan dalam data sejarah.
Strategi penembusan tingkap reversal mempunyai kelebihan utama berikut:
Menangkap peluang berbalik, sesuai untuk keadaan berbalik. Apabila pasaran terus naik atau turun, seringkali terdapat beberapa tahap berbalik. Strategi ini dapat menangkap titik-titik perubahan ini.
Dinamika lebih awal, lebih sensitif. Mengira harga tertinggi dan terendah dalam satu kitaran, dapat menilai dengan lebih sensitif mengenai trend dan masa pembalikan harga.
Tetapkan tempoh pemantauan pembalikan untuk mengelakkan isyarat palsu. Isyarat hanya keluar berhampiran titik kritikal pembalikan, boleh menyaring sebahagian daripada kebisingan.
Dibolehkan melakukan beberapa operasi short-term. Operasi long-short-head alternate boleh dilakukan mengikut arah pasaran.
Peraturan-peraturan ini agak mudah dan mudah dilaksanakan. Strategi ini bergantung kepada harga yang mudah dan indikator momentum yang mudah diterjemahkan ke dalam pelaksanaan kod.
Strategi penembusan tingkap reverse-rotational juga mempunyai risiko utama:
Strategi ini boleh menyebabkan kerugian apabila pasaran terus berarah.
Tidak dapat mempertimbangkan pergerakan pasaran besar secara menyeluruh. Pertukaran saham individu tidak semestinya mewakili perubahan pasaran besar, perlu digabungkan dengan analisis pasaran besar.
Pembalikan mungkin lebih besar. Apabila pembalikan tidak berlaku, NetDevice mungkin berkembang.
Risiko penyesuaian data. Strategi mungkin terlalu bergantung pada data sejarah, dan mungkin kurang berkesan di lapangan.
Parameter sensitif. Tetapan parameter seperti tempoh tetingkap dan penghitung balik akan mempengaruhi kestabilan strategi.
Penyelesaian untuk menghadapi risiko termasuk: mengoptimumkan strategi berhenti kerugian, mempertimbangkan faktor risiko besar, menyesuaikan kombinasi parameter untuk ujian kestabilan dan sebagainya.
Kaedah utama untuk mengoptimumkan strategi ini ialah:
Gabungan dengan petunjuk saham besar. Berbanding saham besar yang lemah, mengelakkan pembalikan dalam keadaan yang tidak menguntungkan saham besar.
Penyaringan pelbagai faktor. Pilih saham yang mempunyai keadaan kewangan yang baik, asas yang baik, dan harga yang terlalu tinggi.
Mengoptimumkan kombinasi parameter. Sesuaikan tempoh tetingkap, ubah parameter kaunter, cari kombinasi parameter yang optimum.
Tambah strategi hentian kerugian. Seperti hentian jenis pengesanan, hentian amplitudo, dan lain-lain, mengawal pengunduran maksimum.
Menambah pembelajaran mesin. Menggunakan model AI untuk meramalkan kebarangkalian perubahan harga, meningkatkan ketepatan isyarat.
Strategi penembusan tingkap reversal dengan mengesan harga dan indikator momentum, mencari peluang untuk berbalik. Ia bertindak balas dengan sensitif, boleh mengenal pasti trend dan masa berbalik. Tetapi ada juga tahap risiko yang memerlukan pengoptimuman dan kawalan risiko yang sesuai. Secara keseluruhan, setelah menguasai prinsip strategi dan melakukan pengoptimuman, ia boleh menjadi 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)