Strategi kuantitatif penapisan aliran berdasarkan saluran Keltner dan penunjuk CCI


Tarikh penciptaan: 2024-02-27 15:47:20 Akhirnya diubah suai: 2024-02-27 15:47:20
Salin: 0 Bilangan klik: 715
1
fokus pada
1617
Pengikut

Strategi kuantitatif penapisan aliran berdasarkan saluran Keltner dan penunjuk CCI

Gambaran keseluruhan

Strategi ini menggabungkan saluran Kentner, indikator CCI dan indikator RSI dan syarat jumlah perdagangan, untuk mencapai strategi perdagangan yang lebih lengkap. Strategi ini dapat menghasilkan isyarat beli dan jual apabila menerobos kawasan harga kritikal, isyarat perdagangan dan jumlah perdagangan yang besar.

Prinsip Strategi

Strategi ini mengambil keputusan perdagangan berdasarkan beberapa petunjuk dan syarat berikut:

  1. Saluran Kentner: Berdasarkan harga tipikal dalam tempoh tertentu dan ATR dikira naik dan turun, untuk menentukan sama ada harga berada di dalam kawasan saluran.

  2. Indeks CCI: digunakan untuk menentukan sama ada harga terlalu tinggi atau terlalu tinggi.

  3. Indeks RSI: membantu menentukan sama ada harga terlalu tinggi atau terlalu tinggi.

  4. Jumlah urus niaga: memerlukan jumlah urus niaga yang melampaui nilai purata tertentu untuk menghasilkan urus niaga.

  5. Penapis trend rata-rata: menggabungkan indikator rata-rata seperti SMA, EMA, dan lain-lain untuk menentukan arah trend keseluruhan harga.

Dalam keadaan yang sesuai dengan arah trend, isyarat beli dan jual dihasilkan jika harga menembusi saluran Kentner dan turun, dan CCI dan RSI memberi isyarat, sementara jumlah perdagangan meningkat dengan ketara.

Kelebihan Strategik

Strategi ini menggabungkan pelbagai petunjuk dan syarat, yang dapat menghapuskan beberapa isyarat perdagangan yang tidak pasti, menjadikan keputusan perdagangan lebih stabil dan boleh dipercayai. Kelebihan utama adalah:

  1. Mekanisme penapisan trend dapat mengelakkan pasaran yang tidak menentu.

  2. Harga di Kettner Corridor mendedahkan kawasan kritikal.

  3. CCI dan RSI mengeluarkan isyarat jual beli lebih tepat.

  4. Ia adalah satu daripada beberapa perkara yang boleh mengelakkan penembusan palsu.

Risiko Strategik

Strategi ini mempunyai beberapa risiko utama:

  1. Mekanisme penghakiman trend tidak sempurna dan mungkin terlepas peluang trend yang lebih kuat. Anda boleh menguji parameter garis purata yang berbeza.

  2. Parameter penunjuk tidak ditetapkan dengan betul, mungkin terlepas masa perdagangan penting atau menghasilkan isyarat yang salah. Parameter boleh dioptimumkan.

  3. Terdapat risiko tertentu untuk penembusan palsu apabila kesan pembesaran jumlah transaksi tidak jelas. Anda boleh menguji pelbagai jumlah pembesaran jumlah transaksi.

Arah pengoptimuman strategi

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Uji garis purata pelbagai jenis dan panjang untuk mencari parameter penapis trend yang lebih sesuai.

  2. Mengoptimumkan parameter untuk tanda-tanda seperti saluran Kentner, CCI, RSI, dan lain-lain untuk membuat isyarat lebih tepat.

  3. Uji jumlah transaksi yang berbeza untuk mencari pengganda yang lebih sesuai.

  4. Anda boleh mempertimbangkan untuk menggunakan strategi berhenti kerugian untuk mengawal kerugian maksimum dalam satu perdagangan.

ringkaskan

Secara keseluruhannya, strategi ini menggabungkan Keltner Channel, CCI, RSI dan keadaan jumlah dagangan, untuk mewujudkan strategi perdagangan yang agak lengkap untuk penapisan trend. Apabila harga menembusi kawasan penting, indikator memberi isyarat perdagangan, dan jumlah dagangan yang besar muncul, ia boleh menghasilkan isyarat beli dan jual. Pada masa yang sama, menggunakan purata bergerak untuk membuat penilaian trend untuk mengelakkan perdagangan yang tidak mempunyai trend yang jelas.

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