Strategi kuantitatif penyaringan tren berdasarkan saluran Keltner dan indikator CCI


Tanggal Pembuatan: 2024-02-27 15:47:20 Akhirnya memodifikasi: 2024-02-27 15:47:20
menyalin: 0 Jumlah klik: 715
1
fokus pada
1617
Pengikut

Strategi kuantitatif penyaringan tren berdasarkan saluran Keltner dan indikator CCI

Ringkasan

Strategi ini menggabungkan kondisi Kenner Channel, CCI, dan RSI dan volume perdagangan untuk mencapai strategi perdagangan yang lebih lengkap. Strategi ini dapat menghasilkan sinyal beli dan jual ketika penembusan wilayah harga kunci, sinyal perdagangan, dan volume perdagangan besar terjadi. Strategi ini juga menambahkan penilaian tren rata-rata untuk menghindari perdagangan tanpa tren yang jelas.

Prinsip Strategi

Strategi ini didasarkan pada beberapa indikator dan kondisi untuk membuat keputusan perdagangan:

  1. Saluran Kentner: berdasarkan harga khas dalam periode tertentu dan ATR yang dihitung naik turun, menilai apakah harga berada di dalam area saluran.

  2. Indikator CCI: digunakan untuk menilai apakah harga overbought atau oversold.

  3. Indikator RSI: membantu menentukan apakah harga overbought atau oversold.

  4. Volume transaksi: Volume transaksi diperlukan untuk mencapai nilai rata-rata tertentu untuk menghasilkan transaksi.

  5. Filter tren rata-rata: menggabungkan indikator rata-rata seperti SMA, EMA, dan lain-lain untuk menentukan arah tren harga secara keseluruhan.

Dalam kondisi yang sesuai dengan arah tren, sinyal beli dan jual dihasilkan jika harga menerobos saluran Kentner ke atas dan ke bawah, dan indikator CCI dan RSI mengirimkan sinyal, sementara volume perdagangan meningkat secara signifikan.

Keunggulan Strategis

Strategi ini menggabungkan berbagai indikator dan kondisi yang dapat secara efektif menghilangkan beberapa sinyal perdagangan yang tidak pasti, membuat keputusan perdagangan lebih stabil dan dapat diandalkan. Keuntungan utama adalah:

  1. Mekanisme penyaringan tren dapat menghindari pasar yang tidak jelas.

  2. Harga di Kintner Pass telah mencapai titik kritis.

  3. CCI dan RSI memberikan sinyal overbought dan oversold pada waktu yang lebih tepat.

  4. Kondisi volume transaksi yang besar dapat menghindari beberapa terobosan palsu.

Risiko Strategis

Strategi ini memiliki beberapa risiko utama:

  1. Mekanisme penilaian tren tidak sempurna, mungkin kehilangan peluang tren yang lebih kuat. Anda dapat menguji parameter garis rata-rata yang berbeda.

  2. Parameter indikator tidak disetel dengan benar, dapat melewatkan waktu perdagangan penting atau menghasilkan sinyal yang salah. Parameter dapat dioptimalkan.

  3. Ketika efek pembesaran volume transaksi tidak jelas, ada risiko tertentu untuk terobosan palsu. Anda dapat menguji beberapa perkalian pembesaran volume transaksi yang berbeda.

Arah optimasi strategi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Uji garis rata-rata dari berbagai jenis dan panjang untuk menemukan parameter penyaringan tren yang lebih sesuai.

  2. Mengoptimalkan parameter dari indikator seperti Kentner Channel, CCI, RSI, dan lain-lain untuk membuat sinyal lebih akurat.

  3. Uji volume transaksi yang berbeda untuk mendapatkan multiplier yang lebih cocok.

  4. Anda dapat mempertimbangkan untuk memasukkan strategi stop loss untuk mengontrol kerugian maksimum dalam satu transaksi.

Meringkaskan

Secara keseluruhan, strategi ini menggabungkan saluran Keltner, indikator CCI, RSI, dan kondisi volume perdagangan untuk menciptakan strategi perdagangan over-quantitative tren yang relatif lengkap. Ini dapat menghasilkan sinyal beli dan jual ketika harga menembus area kunci, indikator memberi sinyal perdagangan, dan volume perdagangan besar muncul.

Kode Sumber Strategi
/*backtest
start: 2024-01-27 00:00:00
end: 2024-02-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Custom Keltner CCI Strategy with Trend Filter", overlay=true )
// Input Parameters for allowing long and short trades
allowLong = input(true, title="Allow Long Trades")
allowShort = input(true, title="Allow Short Trades")
// Trend Filter Inputs
maType = input(title="MA Type", options=["OFF", "SMA", "EMA", "SMMA", "CMA", "TMA"], defval="OFF")
trendFilterMethod = input(title="Trend Filter Method", options=["OFF", "Normal", "Reversed"], defval="OFF")
maLength = input(14, title="MA Length")
// Other Input Parameters
lengthKC = input(30, title="Keltner Channels Length")
multKC = input(0.7, title="Keltner Channels Multiplier")
lengthCCI = input(5, title="CCI Length")
overboughtCCI = input(75, title="CCI Overbought Level")
oversoldCCI = input(-75, title="CCI Oversold Level")
rsiPeriod = input(30, title="RSI Period")
rsiOverbought = input(60, title="RSI Overbought Level")
rsiOversold = input(60, title="RSI Oversold Level")
volumeMultiplier = input(0, title="Volume Multiplier", type=input.float, step=0.1, minval=0)
// Define Moving Averages
var float maValue = na
if (maType == "SMA")
    maValue := sma(close, maLength)
else if (maType == "EMA")
    maValue := ema(close, maLength)
else if (maType == "SMMA")
    maValue := na(maValue[1]) ? sma(close, maLength) : (maValue[1] * (maLength - 1) + close) / maLength
else if (maType == "CMA")
    maValue := na(maValue[1]) ? sma(close, maLength) : (sma(close, maLength) + (sma(close, maLength) - maValue[1])) / 2
else if (maType == "TMA")
    maValue := sma(sma(close, round(maLength/2)), round(maLength/2)+1)
// Entry Conditions with Trend Filter
longCondition = allowLong and (trendFilterMethod == "OFF" or (trendFilterMethod == "Normal" and close > maValue) or (trendFilterMethod == "Reversed" and close < maValue))
shortCondition = allowShort and (trendFilterMethod == "OFF" or (trendFilterMethod == "Normal" and close < maValue) or (trendFilterMethod == "Reversed" and close > maValue))
// Keltner Channels
typicalPrice = hlc3
middleLine = sma(typicalPrice, lengthKC)
range = multKC * atr(lengthKC)
upperChannel = middleLine + range
lowerChannel = middleLine - range
// CCI
cci = cci(close, lengthCCI)
// RSI
rsi = rsi(close, rsiPeriod)
// Volume
volCondition = volume > sma(volume, 50) * volumeMultiplier
// Combined Entry Conditions with Trend Filter
longCondition := longCondition and cci < oversoldCCI and low < lowerChannel and rsi < rsiOversold and volCondition
shortCondition := shortCondition and cci > overboughtCCI and high > upperChannel and rsi > rsiOverbought and volCondition
// Execute orders at the open of the new bar after conditions are met
if (longCondition)
    strategy.entry("Long", strategy.long)
if (shortCondition)
    strategy.entry("Short", strategy.short)
// Exit Conditions
strategy.close("Long", when = cci > 0)
strategy.close("Short", when = cci < 0)
// Plotting
plot(upperChannel, color=color.red, linewidth=1)
plot(lowerChannel, color=color.green, linewidth=1)
hline(overboughtCCI, "Overbought", color=color.red)
hline(oversoldCCI, "Oversold", color=color.green)