Reverse Mean Breakthrough Strategy adalah strategi pembalikan tren multi-faktor. Strategi ini menggabungkan moving average, Bollinger Bands, CCI, RSI dan indikator teknis lainnya untuk menangkap peluang pembalikan harga dari area overbought dan oversold. Strategi ini juga menggabungkan analisis divergensi reguler untuk mendeteksi inkonsistensi antara tren saat ini dan yang sebelumnya, sehingga menghindari breakout palsu.
Logika inti dari strategi ini adalah untuk mengambil posisi pendek atau panjang yang tepat ketika harga berbalik dari zona overbought atau oversold.
Indikator CCI atau indikator momentum mengeluarkan sinyal golden cross dead cross untuk menentukan status overbought atau oversold.
Indikator RSI menilai apakah itu berada di zona overbought atau oversold.
Menggunakan Bollinger Bands rel atas dan bawah untuk menentukan apakah harga menyimpang dari kisaran normal. Harga mungkin terbalik ketika kembali ke kisaran normal.
Mendeteksi divergensi reguler dari indikator RSI untuk menghindari mengejar kebocoran palsu.
Ketika kondisi di atas terpenuhi, strategi akan mengambil arah masuk terbalik dan mengatur stop loss untuk mengendalikan risiko.
Keuntungan terbesar dari strategi ini adalah bahwa ia menggabungkan beberapa indikator untuk menentukan peluang pembalikan dengan tingkat kemenangan yang relatif tinggi.
Keandalan lebih tinggi dengan menggunakan beberapa faktor. Hindari hanya mengandalkan satu indikator sehingga mengurangi penilaian yang salah.
Pembalikan tren memiliki probabilitas menang yang lebih besar.
Deteksi divergensi menghindari mengejar kebocoran palsu dan mengurangi risiko sistemik.
Mekanisme stop loss mengontrol risiko. dapat meminimalkan kerugian tiket tunggal sebanyak mungkin.
Ada juga beberapa risiko dengan strategi ini:
Kesalahan penilaian pada titik waktu pembalikan. Stop loss dapat dipicu. Perluas rentang stop loss dengan tepat.
Bollinger Bands parameter diatur tidak tepat, mengambil tindakan harga normal sebagai abnormal. parameter harus melayani volatilitas pasar.
Jumlah perdagangan bisa relatif tinggi. memperluas CCI dll penilaian rentang dengan benar untuk mengurangi frekuensi perdagangan.
Periksa apakah parameter sesuai dengan data historis.
Strategi dapat dioptimalkan dalam aspek berikut:
Gunakan algoritma pembelajaran mesin untuk mengoptimalkan parameter secara otomatis. Hindari kesalahan empiris buatan.
Meningkatkan indeks shale, indeks amplitudo dll untuk menentukan kekuatan overbought & oversold.
Tambahkan indikator volume perdagangan untuk menentukan keandalan pembalikan, misalnya volume, bunga terbuka dll.
Menggabungkan data blockchain untuk mengukur sentimen pasar.
Memperkenalkan mekanisme stop loss adaptif berdasarkan volatilitas pasar.
Strategi terbalik rata-rata terobosan mengintegrasikan beberapa indikator untuk menentukan perdagangan pembalikan. Dengan kontrol risiko yang tepat, ia memiliki tingkat kemenangan yang relatif besar. Strategi ini praktis dengan ruang untuk optimasi lebih lanjut. Dengan penyesuaian parameter yang tepat, itu harus menghasilkan hasil yang cukup ideal.
/*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)