Strategi Terbalik Mean Terobosan

Penulis:ChaoZhang, Tanggal: 2023-12-20 14:48:57
Tag:

img

Gambaran umum

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.

Prinsip Strategi

Logika inti dari strategi ini adalah untuk mengambil posisi pendek atau panjang yang tepat ketika harga berbalik dari zona overbought atau oversold.

  1. Indikator CCI atau indikator momentum mengeluarkan sinyal golden cross dead cross untuk menentukan status overbought atau oversold.

  2. Indikator RSI menilai apakah itu berada di zona overbought atau oversold.

  3. Menggunakan Bollinger Bands rel atas dan bawah untuk menentukan apakah harga menyimpang dari kisaran normal. Harga mungkin terbalik ketika kembali ke kisaran normal.

  4. 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.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah bahwa ia menggabungkan beberapa indikator untuk menentukan peluang pembalikan dengan tingkat kemenangan yang relatif tinggi.

  1. Keandalan lebih tinggi dengan menggunakan beberapa faktor. Hindari hanya mengandalkan satu indikator sehingga mengurangi penilaian yang salah.

  2. Pembalikan tren memiliki probabilitas menang yang lebih besar.

  3. Deteksi divergensi menghindari mengejar kebocoran palsu dan mengurangi risiko sistemik.

  4. Mekanisme stop loss mengontrol risiko. dapat meminimalkan kerugian tiket tunggal sebanyak mungkin.

Analisis Risiko

Ada juga beberapa risiko dengan strategi ini:

  1. Kesalahan penilaian pada titik waktu pembalikan. Stop loss dapat dipicu. Perluas rentang stop loss dengan tepat.

  2. Bollinger Bands parameter diatur tidak tepat, mengambil tindakan harga normal sebagai abnormal. parameter harus melayani volatilitas pasar.

  3. Jumlah perdagangan bisa relatif tinggi. memperluas CCI dll penilaian rentang dengan benar untuk mengurangi frekuensi perdagangan.

  4. Periksa apakah parameter sesuai dengan data historis.

Optimalisasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Gunakan algoritma pembelajaran mesin untuk mengoptimalkan parameter secara otomatis. Hindari kesalahan empiris buatan.

  2. Meningkatkan indeks shale, indeks amplitudo dll untuk menentukan kekuatan overbought & oversold.

  3. Tambahkan indikator volume perdagangan untuk menentukan keandalan pembalikan, misalnya volume, bunga terbuka dll.

  4. Menggabungkan data blockchain untuk mengukur sentimen pasar.

  5. Memperkenalkan mekanisme stop loss adaptif berdasarkan volatilitas pasar.

Ringkasan

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)


Lebih banyak