
Strategi ini menggunakan indikator CCI dan indikator momentum yang digabungkan dengan indikator RSI untuk mengenal pasti trend pasaran, masuk ke dalam pasaran apabila terdapat fenomena melompat di kawasan overbought dan oversold, dan menggunakan Bolling untuk mengenal pasti trend dan kembali ke pusat. Strategi ini dapat mengenal pasti dengan cekap penembusan dan penyesuaian, masuk ke dalam pasaran pada peringkat permulaan trend, dan dapat menyesuaikan perdagangan dengan bebas untuk pelbagai jenis melalui parameter.
Pertama, strategi ini menilai isyarat membeli dan menjual melalui CCI atau isyarat momentum yang bergerak di atas dan di bawah sumbu sifar. Pada masa yang sama, isyarat RSI diminta berada di kawasan overbought dan oversold, iaitu RSI lebih tinggi daripada 65 adalah kawasan overbought dan lebih rendah daripada 35 adalah kawasan oversold. Ini dapat mengelakkan isyarat yang salah di kawasan yang tidak terlalu banyak.
Selain itu, strategi boleh memilih sama ada untuk menilai perbezaan bullish RSI dan perbezaan bearish untuk memastikan isyarat jual beli lebih dipercayai.
Apabila sepadan dengan isyarat beli CCI atau momentum, dan RSI berada di kawasan oversold, strategi akan menilai sama ada tinggi dan rendah terdahulu berada di atas pusat Bollinger Bands, dan jika ya, menghasilkan isyarat beli. Sebaliknya, apabila sepadan dengan isyarat jual, dan tinggi dan rendah terdahulu berada di bawah pusat Bollinger Bands, menghasilkan isyarat jual.
Dengan cara ini, strategi menggunakan indeks trend dan indeks goyah pada masa yang sama, dapat menangkap pada masa permulaan trend, dan menggunakan kebijaksanaan pusat untuk mengelakkan pecah palsu. Apabila harga keluar dari Brin Belt ke bawah, strategi akan rata untuk mengunci keuntungan dan mencegah penarikan balik berkembang.
Gabungan indeks trend dan indeks goyah, yang membolehkan anda masuk pada permulaan trend, dan mengelakkan mengambil kedudukan yang tidak perlu di pasaran goyah
Menggunakan hub hubung di Brin Belt untuk melompat sebagai isyarat masuk, untuk menyaring penembusan palsu dengan berkesan
Lihat semula sejarah RSI untuk mengelakkan isyarat perdagangan yang salah
Perdagangan automatik sepenuhnya, tidak memerlukan campur tangan manusia, sesuai untuk perdagangan algoritma
Parameter strategi boleh disesuaikan dengan pelbagai jenis perdagangan
Mampu menetapkan stop loss dan mengawal risiko dengan berkesan
Peraturan parameter Brin yang tidak betul boleh menyebabkan keputusan pusat gagal
Parameter penunjuk yang tidak betul boleh menyebabkan terlalu banyak isyarat yang salah
Penembusan gagal, harga perlu berhenti tepat pada masanya untuk kembali ke pusat Burin
Penembusan mungkin kurang berkesan apabila aliran perdagangan kurang lancar
Memeriksa data sejarah sebelum berdagang untuk mengelakkan kecocokan kurva yang buruk
Perhatian perlu diberikan kepada masa transaksi untuk mengelakkan penembusan palsu
Optimumkan parameter Brin untuk menjadikan pusat lebih stabil
Uji kesan parameter penunjuk yang berbeza pada varieti yang berbeza
Meningkatkan kawalan jumlah dagangan untuk mengelakkan terlalu banyak kedudukan tunggal
Tambah penghakiman pada masa, beroperasi pada masa perdagangan utama
Menambah algoritma pembelajaran mesin untuk menghasilkan isyarat yang lebih pintar
Akses kepada lebih banyak sumber data untuk menilai pergerakan pasaran secara keseluruhan
Menambah integrasi kepada lebih banyak indikator untuk membentuk kumpulan indikator
Strategi ini mengintegrasikan indeks trend dan indeks goyah, yang boleh masuk ke pasaran ketika trend bermula. Pada masa yang sama, menggunakan hub hubung dalam Brin Belt sebagai isyarat masuk, dapat menghalang penembusan palsu dengan berkesan. Parameter strategi dapat disesuaikan secara fleksibel, menyesuaikan diri dengan pelbagai jenis, dan pengembalian yang baik. Langkah seterusnya akan menjadikan strategi lebih kuat dan boleh dipercayai dengan mengoptimumkan tetapan parameter dan penggabungan model, untuk mendapatkan keuntungan tambahan yang stabil dalam jangka panjang.
/*backtest
start: 2022-10-18 00:00:00
end: 2023-10-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title='BroTheJo Strategy', shorttitle='BTJ', overlay=true)
// Input settings
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)
longEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition) and (prevHigh >= meanReversion) and (prevLow >= meanReversion)
shortEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition) and (prevHigh <= meanReversion) and (prevLow <= meanReversion)
// Plotting
oldLongEntryCondition = ccimomCrossUp and oversoldAgo and (not useDivergence or bullishDivergenceCondition)
oldShortEntryCondition = ccimomCrossDown and overboughtAgo and (not useDivergence or bearishDivergenceCondition)
plotshape(oldLongEntryCondition, title='BUY', style=shape.triangleup, 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, location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny)
// Strategy logic
if (longEntryCondition)
strategy.entry("Buy", strategy.long)
if (shortEntryCondition)
strategy.entry("Sell", strategy.short)
// 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)