Strategi Perdagangan Central Gap dan Trend Following


Tanggal Pembuatan: 2023-10-25 18:02:11 Akhirnya memodifikasi: 2023-10-25 18:02:11
menyalin: 1 Jumlah klik: 667
1
fokus pada
1617
Pengikut

Strategi Perdagangan Central Gap dan Trend Following

Ringkasan

Strategi ini menggunakan indikator CCI dan indikator momentum yang digabungkan dengan indikator RSI untuk mengidentifikasi tren pasar, masuk ke dalam pasar ketika overbought dan oversold area menemukan fenomena melompat, dan menggunakan Bollinger Bands untuk mengidentifikasi tren dan kembali ke pusat. Strategi ini dapat secara efektif mengidentifikasi terobosan dan regresi, masuk ke dalam pasar pada tahap awal tren, dan dapat dengan parameter menyesuaikan perdagangan dengan bebas untuk varietas yang berbeda.

Prinsip Strategi

Pertama, strategi ini menilai sinyal beli dan jual melalui CCI atau indikator momentum yang melewati nol dan nol. Pada saat yang sama, indikator RSI harus berada di zona overbought dan oversold, yaitu zona overbought jika RSI lebih tinggi dari 65 dan zona overbought jika RSI lebih rendah dari 35. Ini dapat menghindari sinyal yang salah di zona non-overbought dan oversold.

Selain itu, strategi dapat memilih apakah akan menilai RSI sebagai bullish divergence (sedikit naik) dan bearish divergence (sedikit turun) untuk memastikan sinyal jual beli lebih dapat diandalkan.

Ketika sesuai dengan sinyal beli CCI atau momentum, dan RSI berada di zona oversold, strategi akan menilai apakah tinggi dan rendah sebelumnya berada di atas pusat Bollinger Bands, dan jika demikian, menghasilkan sinyal beli. Sebaliknya, ketika sesuai dengan sinyal jual, dan tinggi dan rendah sebelumnya berada di bawah pusat Bollinger Bands, menghasilkan sinyal jual.

Dengan cara ini, strategi dapat menggunakan indeks tren dan indeks getaran secara bersamaan untuk menangkap pada saat tren dimulai, dan menggunakan penilaian sentral untuk menghindari false breakout. Ketika harga keluar dari Brin band ke arah bawah, strategi akan benar-benar meratakan untuk mengunci keuntungan dan mencegah penarikan mundur dari perluasan.

Analisis Keunggulan

  1. Kombinasi indeks tren dan indeks guncangan, dapat masuk pada awal tren, sekaligus menghindari posisi yang tidak perlu di pasar guncangan

  2. Menggunakan hub-coupled jumper di sabuk Brin sebagai sinyal masuk, dapat secara efektif memfilter penembusan palsu

  3. Perhatikan sejarah pergerakan RSI untuk menghindari sinyal perdagangan yang salah

  4. Perdagangan otomatis, tidak memerlukan intervensi manusia, cocok untuk perdagangan algoritmik

  5. Parameter strategi dapat disesuaikan dengan berbagai jenis perdagangan

  6. Mengatur Stop Loss dan Mengontrol Risiko

Analisis risiko

  1. Setelan parameter Brin yang tidak tepat dapat menyebabkan kegagalan penilaian pusat

  2. Parameter indikator yang tidak tepat dapat menyebabkan terlalu banyak sinyal yang salah

  3. Penembusan gagal, harga perlu berhenti tepat waktu saat kembali ke pusat Brin

  4. Jika tidak ada liquiditas dalam varietas yang diperdagangkan, penembusan mungkin tidak efektif.

  5. Sebelum melakukan transaksi, periksa apakah data historis cukup untuk menghindari kecocokan kurva yang buruk.

  6. Perhatikan waktu transaksi untuk menghindari terobosan palsu

Arah optimasi

  1. Optimalkan parameter Brin untuk membuat pusat lebih stabil

  2. Uji efek parameter indikator yang berbeda pada varietas yang berbeda

  3. Meningkatkan kontrol volume transaksi untuk menghindari terlalu banyak posisi tunggal

  4. Meningkatkan penilaian pada periode waktu, beroperasi pada jam perdagangan utama

  5. Menambahkan algoritma pembelajaran mesin untuk menghasilkan sinyal yang lebih cerdas

  6. Akses ke lebih banyak sumber data untuk menilai tren pasar secara keseluruhan

  7. Meningkatkan integrasi dari lebih banyak indikator untuk membentuk portofolio indikator

Meringkaskan

Strategi ini mengintegrasikan indeks tren dan indeks getaran, yang dapat masuk ke pasar ketika tren dimulai. Pada saat yang sama, menggunakan hub hub di Brin Belt sebagai sinyal masuk, dapat secara efektif mencegah terobosan palsu. Parameter strategi dapat disesuaikan secara fleksibel, beradaptasi dengan berbagai varietas, dan pengembalian yang optimal.

Kode Sumber Strategi
/*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)