
Strategi reversal breakout adalah strategi reversal trend yang terdiri daripada pelbagai faktor. Ia menggabungkan pelbagai petunjuk teknikal seperti purata bergerak, Brinband, CCI, RSI, dan lain-lain untuk menangkap peluang untuk membalikkan harga dari kawasan overbought dan oversold. Strategi ini juga menggabungkan analisis regangan normal untuk mengesan sama ada trend semasa selaras dengan yang sebelumnya, dan dengan itu mengelakkan perdagangan palsu.
Logik utama strategi ini adalah untuk mengambil peluang yang sesuai untuk melakukan shorting apabila harga berbalik dari kawasan overbought ke oversold. Secara khusus, strategi ini menilai peluang untuk berbalik dari empat aspek:
Indeks CCI atau Indeks Momentum menghantar isyarat Gold Fork Dead Fork untuk menilai overbought dan oversold.
Indeks RSI menilai sama ada berada di kawasan overbought atau oversold. Ia menetapkan bahawa RSI lebih tinggi daripada 65 adalah kawasan overbought dan lebih rendah daripada 35 adalah kawasan oversold.
Menggunakan tali pinggang Brin ke bawah untuk menentukan sama ada harga menyimpang dari kawasan normal. Apabila harga kembali ke kawasan normal, ia mungkin berbalik.
Mengesan penyebaran RSI yang betul untuk mengelakkan penembusan palsu.
Apabila syarat-syarat di atas dipenuhi, strategi akan mengambil jalan masuk ke arah yang berlawanan.
Kelebihan utama strategi ini ialah ia menggabungkan pelbagai petunjuk untuk menilai peluang untuk berbalik, dengan kadar kemenangan yang lebih tinggi secara purata. Secara khusus, ia terdiri daripada beberapa perkara:
Keputusan berbilang faktor, kebolehpercayaan yang lebih tinggi. Tidak hanya bergantung pada satu petunjuk, mengurangkan kemungkinan kesalahan.
Perdagangan berbalik mempunyai kebarangkalian besar untuk menang. Perdagangan berbalik adalah cara perdagangan yang lebih dipercayai.
Menyedari kerosakan, mengelakkan mengejar penembusan palsu dan mengurangkan risiko sistematik.
Kaedah kawalan risiko. Keupayaan untuk mengelakkan kerugian tunggal yang berlebihan.
Strategi ini juga mempunyai beberapa risiko, yang tertumpu kepada beberapa perkara berikut:
Penghakiman titik masa pembalikan tidak sah. menyebabkan kemusnahan tercetus. Dapat meluaskan ruang kemusnahan dengan sewajarnya.
Tetapan parameter Brin tidak betul, harga normal dianggap sebagai luar biasa. Ia harus disesuaikan dengan parameter tetapan kadar turun naik pasaran.
Jumlah dagangan mungkin lebih banyak. Perluasan parameter penghakiman seperti CCI dengan sewajarnya, mengurangkan kekerapan perdagangan.
Keseimbangan multi ruang mungkin berbeza-beza. Parameter penunjuk harus dinilai berdasarkan data sejarah.
Strategi ini boleh dioptimumkan dengan cara berikut:
Menggunakan algoritma pembelajaran mesin untuk mengoptimumkan parameter penunjuk secara automatik.
Menambah Indeks Shale, Indeks Amplitud dan lain-lain untuk menilai kekuatan overbought dan oversold.
Meningkatkan kebolehpercayaan pembalikan berdasarkan jumlah dagangan.
Menggabungkan data blockchain untuk menilai sentimen pasaran. Meningkatkan kesesuaian strategi
Memperkenalkan mekanisme penangguhan yang beradaptasi. Mengubah kedudukan penangguhan mengikut perubahan kadar turun naik pasaran.
Strategi reversal mean breakthrough menggunakan pelbagai indikator untuk menilai peluang untuk berbalik. Dengan risiko yang terkawal, kebarangkalian kemenangannya lebih besar. Strategi ini mempunyai kepraktisan yang kuat dan ruang untuk pengoptimuman lebih lanjut.
/*backtest
start: 2023-12-12 00:00:00
end: 2023-12-19 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title='BroTheJo Strategy', shorttitle='BTJ INV', overlay=true)
// Input settings
stopLossInPips = input.int(10, minval=0, title='Stop Loss (in Pips)')
ccimomCross = input.string('CCI', 'Entry Signal Source', options=['CCI', 'Momentum'])
ccimomLength = input.int(10, minval=1, title='CCI/Momentum Length')
useDivergence = input.bool(false, title='Find Regular Bullish/Bearish Divergence')
rsiOverbought = input.int(65, minval=1, title='RSI Overbought Level')
rsiOversold = input.int(35, minval=1, title='RSI Oversold Level')
rsiLength = input.int(14, minval=1, title='RSI Length')
plotMeanReversion = input.bool(true, 'Plot Mean Reversion Bands on the chart')
emaPeriod = input(200, title='Lookback Period (EMA)')
bandMultiplier = input.float(1.6, title='Outer Bands Multiplier')
// CCI and Momentum calculation
momLength = ccimomCross == 'Momentum' ? ccimomLength : 10
mom = close - close[momLength]
cci = ta.cci(close, ccimomLength)
ccimomCrossUp = ccimomCross == 'Momentum' ? ta.cross(mom, 0) : ta.cross(cci, 0)
ccimomCrossDown = ccimomCross == 'Momentum' ? ta.cross(0, mom) : ta.cross(0, cci)
// RSI calculation
src = close
up = ta.rma(math.max(ta.change(src), 0), rsiLength)
down = ta.rma(-math.min(ta.change(src), 0), rsiLength)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)
oversoldAgo = rsi[0] <= rsiOversold or rsi[1] <= rsiOversold or rsi[2] <= rsiOversold or rsi[3] <= rsiOversold
overboughtAgo = rsi[0] >= rsiOverbought or rsi[1] >= rsiOverbought or rsi[2] >= rsiOverbought or rsi[3] >= rsiOverbought
// Regular Divergence Conditions
bullishDivergenceCondition = rsi[0] > rsi[1] and rsi[1] < rsi[2]
bearishDivergenceCondition = rsi[0] < rsi[1] and rsi[1] > rsi[2]
// Mean Reversion Indicator
meanReversion = plotMeanReversion ? ta.ema(close, emaPeriod) : na
stdDev = plotMeanReversion ? ta.stdev(close, emaPeriod) : na
upperBand = plotMeanReversion ? meanReversion + stdDev * bandMultiplier : na
lowerBand = plotMeanReversion ? meanReversion - stdDev * bandMultiplier : na
// Entry Conditions
prevHigh = ta.highest(high, 1)
prevLow = ta.lowest(low, 1)
shortEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition) and (prevHigh >= meanReversion) and (prevLow >= meanReversion)
longEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition) and (prevHigh <= meanReversion) and (prevLow <= meanReversion)
// Plotting
oldShortEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition)
oldLongEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition)
plotshape(oldLongEntryCondition, title='BUY', style=shape.triangleup, text='B', location=location.belowbar, color=color.new(color.lime, 0), textcolor=color.new(color.white, 0), size=size.tiny)
plotshape(oldShortEntryCondition, title='SELL', style=shape.triangledown, text='S', location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny)
// Strategy logic
if (longEntryCondition)
stopLoss = close - stopLossInPips
strategy.entry("Buy", strategy.long)
strategy.exit("exit", "Buy", stop=stopLoss)
if (shortEntryCondition)
stopLoss = close + stopLossInPips
strategy.entry("Sell", strategy.short)
strategy.exit("exit", "Sell", stop=stopLoss)
// Close all open positions when outside of bands
closeAll = (high >= upperBand) or (low <= lowerBand)
if (closeAll)
strategy.close_all("Take Profit/Cut Loss")
// Plotting
plot(upperBand, title='Upper Band', color=color.fuchsia, linewidth=1)
plot(meanReversion, title='Mean', color=color.gray, linewidth=1)
plot(lowerBand, title='Lower Band', color=color.blue, linewidth=1)