Strategi ini tergolong dalam strategi pengesanan pembalikan dua faktor dalam bidang perdagangan kuantitatif. Ia mengintegrasikan strategi pembalikan 123 dan strategi saluran Keltner dengan dua faktor, bertujuan untuk menemui isyarat pembalikan dan merealisasikan idea perdagangan membeli rendah dan menjual tinggi.
Strategi ini terdiri daripada dua sub-strategi. Sub-strategi pertama adalah strategi pembalikan 123. Ia menilai sama ada pasaran berada di titik pembalikan dengan mengira perubahan harga penutupan selama dua hari perdagangan sebelumnya dan menggabungkan penunjuk Stochastic. Khususnya, apabila harga penutupan meningkat selama dua hari berturut-turut dan penunjuk Stochastic di bawah 50, isyarat beli dikeluarkan; Apabila harga penutupan jatuh selama dua hari berturut-turut dan penunjuk Stochastic di atas 50, isyarat jual dikeluarkan.
Strategi sub kedua adalah strategi saluran Keltner. Strategi ini mengira purata pergerakan harga biasa dan julat turun naik selama n hari perdagangan yang paling baru. Apabila harga mendekati rel atas atau bawah, isyarat perdagangan terbalik dikeluarkan. Apabila harga berada di bawah rel bawah, pergi pendek; apabila di atas rel atas, pergi panjang.
Akhirnya, dengan menilai arah isyarat kedua-dua sub-strategi, strategi mengira isyarat kedudukan akhir. Apabila isyarat kedua-dua sub-strategi konsisten, pesanan dagangan sebenar dikeluarkan, jika tidak, tiada transaksi dibuat untuk mencapai tujuan pengesahan faktor dua.
Kelebihan terbesar dari strategi pengesanan pembalikan purata faktor dua ini adalah bahawa ia dapat merebut peluang pada waktunya apabila pasaran berbalik dan merealisasikan idea perdagangan membeli rendah dan menjual tinggi. Pada masa yang sama, mekanisme pengesahan faktor dua dapat mengurangkan isyarat palsu hingga tahap tertentu dan meningkatkan kualiti isyarat.
Secara khusus, tetapan parameter penunjuk Stochastic dalam strategi pembalikan 123 agak konservatif, yang dapat menapis pembalikan palsu dalam pasaran yang berayun. Dan idea saluran Keltner yang mengesan pita Bollinger juga dapat merebut peluang pembalikan apabila harga memecahkan rel atas dan bawah. Kedua-duanya saling melengkapi untuk mengurangkan transaksi yang tidak perlu dan dengan itu mendapatkan kadar kemenangan yang lebih tinggi.
Risiko utama strategi ini adalah bahawa masa isyarat pembalikan adalah penting. Jika pembalikan palsu berterusan berlaku atau masa isyarat pembalikan tidak dipilih dengan betul, ia akan menyebabkan kegagalan untuk mengekalkan trend yang lengkap, dengan itu mempengaruhi pulangan akhir.
Di samping itu, strategi faktor dua mempunyai kesukaran yang lebih besar dalam pemilihan parameter dan pengoptimuman daripada strategi faktor tunggal. Ujian dan penilaian komprehensif parameter kedua-dua sub-strategi diperlukan, jika tidak, kegagalan juga sangat mungkin.
Akhirnya, perdagangan terbalik itu sendiri mempunyai nisbah risiko-balasan yang tidak seimbang. Keadaan pasaran yang tidak normal dapat dengan mudah membawa kepada pembubaran. Ini perlu dielakkan dengan stop loss yang ketat.
Menurut analisis risiko di atas, strategi ini boleh dioptimumkan dalam aspek berikut:
Sebagai strategi pengesanan pembalikan purata dua faktor yang tipikal, dengan mengintegrasikan pembalikan 123 dan sub-strategi saluran Keltner, strategi ini bertujuan untuk menangkap dengan lebih tepat masa membeli rendah dan menjual tinggi pada titik pembalikan pasaran. Dengan pengoptimuman parameter dan kawalan risiko yang betul, strategi sedemikian dapat memperoleh alpha yang agak besar. Tetapi peniaga masih perlu memberi perhatian kepada keunikan perdagangan terbalik dan mencegah pengembangan kerugian yang disebabkan oleh keadaan pasaran yang tidak normal.
/*backtest start: 2023-11-18 00:00:00 end: 2023-12-18 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 09/12/2020 // This is combo strategies for get a cumulative signal. // // First strategy // This System was created from the Book "How I Tripled My Money In The // Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies. // The strategy buys at market, if close price is higher than the previous close // during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. // The strategy sells at market, if close price is lower than the previous close price // during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50. // // Second strategy // The Keltner Channel, a classic indicator // of technical analysis developed by Chester Keltner in 1960. // The indicator is a bit like Bollinger Bands and Envelopes. // // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// Reversal123(Length, KSmoothing, DLength, Level) => vFast = sma(stoch(close, high, low, Length), KSmoothing) vSlow = sma(vFast, DLength) pos = 0.0 pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1, iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) pos KeltnerChn(nPeriod) => pos = 0.0 xPrice = sma(hlc3, nPeriod) xMove = sma(high - low, nPeriod) reverse = input(false, title="Trade reverse") xUpper = xPrice + xMove xLower = xPrice - xMove pos := iff(close < xLower, -1, iff(close > xUpper, 1, nz(pos[1], 0))) pos strategy(title="Combo Backtest 123 Reversal & Keltner Channel", shorttitle="Combo", overlay = true) Length = input(14, minval=1) KSmoothing = input(1, minval=1) DLength = input(3, minval=1) Level = input(50, minval=1) //------------------------- nPeriod = input(title="Period", defval=10, minval=1) reverse = input(false, title="Trade reverse") posReversal123 = Reversal123(Length, KSmoothing, DLength, Level) posKeltnerChn = KeltnerChn(nPeriod) pos = iff(posReversal123 == 1 and posKeltnerChn == 1 , 1, iff(posReversal123 == -1 and posKeltnerChn == -1, -1, 0)) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1 , 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) if (possig == 0) strategy.close_all() barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )