Strategi Crossover CCI Moving Average dengan Indikator RSI Bollinger Bands


Tanggal Pembuatan: 2023-12-20 16:24:49 Akhirnya memodifikasi: 2023-12-20 16:24:49
menyalin: 0 Jumlah klik: 1107
1
fokus pada
1621
Pengikut

Strategi Crossover CCI Moving Average dengan Indikator RSI Bollinger Bands

Ringkasan

Strategi ini menggabungkan tiga indikator, yaitu Brinks, Relative Strength Index (RSI) dan Commodity Path Index (CCI), untuk mencari sinyal silang, mengirim sinyal beli dan jual. Strategi ini bertujuan untuk menemukan fenomena overbought dan oversold di pasar, dan masuk ke pasar pada titik balik untuk mendapatkan laba atas investasi yang lebih baik.

Prinsip Strategi

Beringin

Beringin terdiri dari rel tengah, rel atas, dan rel bawah. rel tengah biasanya menggunakan rata-rata bergerak 20 hari. rel atas dan rel bawah masing-masing berada di atas dan di bawah rel tengah. Jika harga mendekati rel bawah, dianggap sebagai sinyal oversell.

Indikator RSI

Indikator RSI mencerminkan perubahan kecepatan kenaikan dan penurunan harga penutupan dalam jangka waktu tertentu, digunakan untuk mengukur kontras kekuatan antara posisi beli dan jual. Nilai RSI berada di zona oversold saat 0 hingga 30, dan zona overbought saat 70 hingga 100. RSI dapat digunakan sebagai sinyal jual ketika turun dari zona overbought, dan sebagai sinyal beli ketika RSI naik dari zona overbought.

Indikator CCI

Indeks CCI digunakan untuk mengukur seberapa jauh harga saham menyimpang dari harga rata-rata. Di antaranya, + 100 mewakili harga jauh lebih tinggi dari harga rata-rata, yang merupakan overbought; -100 mewakili harga jauh lebih rendah dari harga rata-rata, yang merupakan oversold.

Strategi sinyal silang

Strategi ini menggunakan Brinband untuk menilai apakah harga akan melampaui jual beli dalam waktu dekat, menggunakan indikator RSI untuk menilai keseimbangan kekuatan perdagangan, menggunakan indikator CCI untuk menilai tingkat penyimpangan harga. Brinband, RSI dan indikator CCI secara bersamaan memberikan sinyal beli / jual, mengeluarkan instruksi perdagangan.

Keunggulan Strategis

  1. Kombinasi berbagai penilaian indikator, mengurangi sinyal palsu, meningkatkan akurasi sinyal
  2. Menemukan titik balik pasar dan menangkap peluang untuk membalikkan tren
  3. Parameter dapat disesuaikan untuk menyesuaikan dengan kondisi pasar yang berbeda
  4. Filter CCI linear untuk mengurangi kebisingan dan meningkatkan stabilitas

Risiko dan Solusi

  1. Bollinger Bands, RSI, dan CCI dapat menghasilkan sinyal yang salah, yang menyebabkan kerugian perdagangan. Parameter dapat dilonggarkan sesuai, atau menambahkan indikator lain untuk verifikasi.
  2. Indikator CCI tidak terlalu cocok untuk tren curvature. Indikator rata-rata atau fluktuasi dapat digunakan sebagai pengganti.
  3. Instruksi perdagangan hanya stop loss, tidak ada stop loss. Anda dapat menambahkan stop loss bergerak untuk mengunci sebagian dari keuntungan.

Arah optimasi

  1. Ini adalah salah satu cara yang paling efektif untuk mengevaluasi hasil yang diperoleh.
  2. Menambahkan algoritma pembelajaran mesin, optimasi parameter secara real-time;
  3. Meningkatkan strategi penangguhan dan menetapkan target keuntungan;
  4. Kombinasi dengan indikator lain seperti MACD, KD dan lain-lain untuk menilai keandalan sinyal.

Meringkaskan

Strategi ini secara komprehensif mempertimbangkan kondisi pasar jangka pendek, menengah dan panjang, dengan sinyal silang dari tiga indikator Brin, RSI dan CCI, untuk menilai waktu berbaliknya pasar, merupakan strategi pelacakan berbalik yang lebih kuat. Dapat dioptimalkan lebih lanjut melalui penyesuaian parameter, metode stop, dan lain-lain.

Kode Sumber Strategi
/*backtest
start: 2023-11-19 00:00:00
end: 2023-12-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(shorttitle="BBRSIstr", title="Bollinger Bands", overlay=true)
length = input.int(20, minval=1)
maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")

ma(source, length, _type) =>
    switch _type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

basis = ma(src, length, maType)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))

//RSI
rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
maTypeInput = input.string("SMA", title="MA Type", options=["SMA", "Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings")
maLengthInput = input.int(14, title="MA Length", group="MA Settings")
bbMultInput = input.float(2.0, minval=0.001, maxval=50, title="BB StdDev", group="MA Settings")
showDivergence = input.bool(false, title="Show Divergence", group="RSI Settings")

up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput)
down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsiMA = ma(rsi, maLengthInput, maTypeInput)
isBB = maTypeInput == "Bollinger Bands"

rsiPlot = plot(rsi, "RSI", color=#7E57C2)
plot(rsiMA, "RSI-based MA", color=color.yellow)
rsiUpperBand = hline(70, "RSI Upper Band", color=#787B86)
midline = hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
rsiLowerBand = hline(30, "RSI Lower Band", color=#787B86)
fill(rsiUpperBand, rsiLowerBand, color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")

//cci
ma = ta.sma(src, length)
cci = (src - ma) / (0.015 * ta.dev(src, length))
plot(cci, "CCI", color=#2962FF)
band1 = hline(100, "Upper Band", color=#787B86, linestyle=hline.style_dashed)
hline(0, "Middle Band", color=color.new(#787B86, 50))
band0 = hline(-100, "Lower Band", color=#787B86, linestyle=hline.style_dashed)
fill(band1, band0, color=color.rgb(33, 150, 243, 90), title="Background")

typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title = "Length", defval = 5, minval = 1, maxval = 100, group="Smoothing")

smoothingLine = ma(cci, smoothingLength, typeMA)
plot(smoothingLine, title="Smoothing Line", color=#f37f20, display=display.none)


longCBB= close < lower
shortCBB = close>upper
longBRSI = rsi < 33
shortBRSI = rsi > 70
longcci = cci < -215
shortcci = cci > 250

strategy.entry("LONG", strategy.long, when = longCBB and longBRSI and longcci)
strategy.exit("Exit ", profit = 600)
strategy.entry("SHORT", strategy.short, when = shortCBB and shortBRSI and shortcci)
strategy.exit("Exit ", profit = 600)