Strategi Crossover Purata Pergerakan CCI dengan Bollinger Bands RSI Indicator


Tarikh penciptaan: 2023-12-20 16:24:49 Akhirnya diubah suai: 2023-12-20 16:24:49
Salin: 0 Bilangan klik: 1107
1
fokus pada
1621
Pengikut

Strategi Crossover Purata Pergerakan CCI dengan Bollinger Bands RSI Indicator

Gambaran keseluruhan

Strategi ini menggabungkan penggunaan tiga petunjuk, iaitu Brin Belt, RSI (Relative Strength Index) dan CCI (Commodity Pathway Index), untuk mencari isyarat silang, mengeluarkan isyarat beli dan jual. Strategi ini bertujuan untuk mencari fenomena beli dan jual di pasaran, memasuki titik balik, dengan harapan mendapat pulangan pelaburan yang lebih baik.

Prinsip Strategi

Talian Brin

Beringkas Brin terdiri daripada rel tengah, rel atas dan rel bawah. Rel tengah biasanya menggunakan purata bergerak 20 hari. Rel atas dan rel bawah adalah dua perbezaan piawai di atas dan di bawah rel tengah.

Indeks RSI

Penunjuk RSI mencerminkan perubahan kadar kenaikan dan penurunan harga penutupan dalam jangka masa tertentu, digunakan untuk mengukur perbandingan kekuatan antara pembelian dan penjualan. Nilai RSI berada di kawasan oversold pada 0 hingga 30, dan di kawasan oversold pada 70 hingga 100. Apabila RSI turun dari kawasan oversold, ia boleh berfungsi sebagai isyarat jual, dan apabila RSI naik dari kawasan oversold, ia boleh berfungsi sebagai isyarat beli.

Indeks CCI

Indeks CCI digunakan untuk mengukur sejauh mana harga saham menyimpang dari harga purata. Di antaranya, + 100 mewakili harga yang jauh lebih tinggi daripada harga purata, sebagai overbuy; -100 mewakili harga yang jauh lebih rendah daripada harga purata, sebagai oversell.

Sinyal silang strategi

Strategi ini menggunakan Brinband untuk menilai sama ada harga melebihi jual beli dalam jangka pendek, menggunakan RSI untuk menilai keseimbangan kekuatan jual beli, menggunakan CCI untuk menilai tahap penyimpangan harga. Apabila Brinband, RSI dan CCI memberi isyarat membeli / menjual pada masa yang sama, mengeluarkan arahan perdagangan.

Kelebihan Strategik

  1. Menggabungkan pelbagai penilaian indikator, mengurangkan isyarat palsu, meningkatkan ketepatan isyarat
  2. Menemui Titik Peralihan Pasaran dan Menangkap Trend Berbalik
  3. Parameter boleh disesuaikan untuk menyesuaikan diri dengan keadaan pasaran yang berbeza
  4. Menggunakan penapis CCI yang seragam, mengurangkan bunyi bising dan meningkatkan kestabilan

Risiko dan Penyelesaian

  1. Blink, RSI, dan CCI boleh menyebabkan isyarat yang salah dan menyebabkan kerugian perdagangan. Parameter boleh dilonggarkan dengan sewajarnya, atau tambah petunjuk lain untuk pengesahan.
  2. Indeks CCI kurang sesuai untuk keadaan bengkok. Indeks garis rata-rata atau kadar turun naik boleh digunakan sebagai gantinya.
  3. Arahan perdagangan hanya berhenti kerugian, tidak ada stop stop. Anda boleh menambah stop stop bergerak untuk mengunci sebahagian keuntungan.

Arah pengoptimuman

  1. Ia juga boleh digunakan untuk menguji lebih banyak kombinasi parameter untuk mencari parameter yang terbaik.
  2. Menambah algoritma pembelajaran mesin untuk mengoptimumkan parameter dalam masa nyata;
  3. Menambah strategi penangguhan dan menetapkan sasaran keuntungan;
  4. Menggabungkan lebih banyak petunjuk, seperti MACD, KD dan lain-lain untuk menilai kebolehpercayaan isyarat.

ringkaskan

Strategi ini mengambil kira keadaan pasaran jangka pendek, sederhana dan jangka panjang, melalui tanda silang tiga indikator Brin, RSI dan CCI, untuk menentukan masa pembalikan pasaran, merupakan strategi pengesanan pembalikan yang lebih mantap. Ia boleh dioptimumkan lagi melalui penyesuaian parameter, cara berhenti, dan lain-lain, dan sesuai untuk pelbagai keadaan pasaran.

Kod 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)