Momentum Mengikuti Strategi CCI


Tarikh penciptaan: 2023-10-25 17:37:39 Akhirnya diubah suai: 2023-10-25 17:37:39
Salin: 1 Bilangan klik: 762
1
fokus pada
1617
Pengikut

Momentum Mengikuti Strategi CCI

Gambaran keseluruhan

Strategi ini adalah berdasarkan kepada petunjuk CCI, yang bertujuan untuk melakukan lebih banyak jika oversold, dan mengambil lebih sedikit jika oversold. Ia juga boleh menggunakan penapis EMA untuk mengawal perdagangan hanya dalam arah trend. Strategi ini juga menawarkan hentian kerugian berdasarkan peratusan tetap atau purata jangkauan sebenar (ATR).

Prinsip Strategi

  1. Menggunakan Indeks CCI untuk Mengesan Trend Pasaran

    • CCI mengukur momentum dengan membandingkan harga semasa dengan harga purata dalam tempoh tertentu

    • CCI di atas 150 bermaksud terlalu beli, di bawah -100 bermaksud terlalu jual

  2. Pilihan menggunakan penapis EMA

    • Hanya buat lebih apabila harga lebih tinggi daripada EMA, buat kosong apabila harga lebih rendah daripada EMA

    • Menggunakan EMA untuk menentukan arah trend dan mengelakkan perdagangan berlawanan trend

  3. Dua cara untuk menghentikan kerosakan

    • Stop loss berdasarkan peratusan tetap: menggunakan peratusan tetap harga masuk untuk menetapkan stop loss

    • Stop loss berdasarkan ATR: Stop loss ditetapkan dengan menggunakan kelipatan ATR, dan stop loss dikira berdasarkan nisbah risiko / pulangan

  4. Syarat kemasukan

    • CCI melakukan lebih banyak semasa melalui talian 100

    • CCI di bawah kosong apabila melintasi garis 150

    • Jika EMA diaktifkan, hanya buat lebih apabila harga lebih tinggi daripada EMA, buat kosong apabila harga lebih rendah daripada EMA

  5. Syarat keluar

    • Harga menyentuh paras paras paras paras

    • CCI kembali ke zon jual beli

  6. Peta

    • Carta CCI, Warna Daerah

Analisis kelebihan

  1. Menggunakan CCI untuk menilai overbought dan oversold, kaedah klasik untuk menggunakan CCI

  2. EMA pilihan memastikan hanya berdagang ke arah trend dan mengelakkan pembalikan

  3. Terdapat dua jenis stop loss yang boleh disesuaikan mengikut pasaran

  4. Berpindah ke zon overbought dan oversold untuk melonggarkan pegangan dan mengunci keuntungan untuk membalikkan trend

  5. Peta yang menonjolkan isyarat CCI, mudah dibaca

  6. Logik strategi jelas, mudah difahami dan dioptimumkan

Analisis risiko

  1. Indeks CCI terlewat, mungkin terlewat atau menghasilkan isyarat palsu

  2. Tetapan parameter EMA yang tidak betul boleh kehilangan trend atau membatalkan strategi

  3. Peratusan Stop Loss Hanger sukar untuk menyesuaikan diri dengan perubahan pasaran, dengan parameter yang lebih luas

  4. ATR Stop Stop Stop adalah sensitif kepada kitaran selang dan harus disesuaikan dengan parameter yang optimum

  5. Risiko penarikan balik lebih tinggi, pengurusan kedudukan perlu diselaraskan dengan betul

  6. Kesan Parameter penunjuk harus dinilai mengikut perubahan keadaan pasaran

Arah pengoptimuman

  1. Menilai parameter CCI untuk tempoh yang berbeza untuk mencari kombinasi parameter terbaik

  2. Uji pelbagai kitaran EMA untuk menentukan kitaran penilaian trend yang paling sesuai

  3. Menyesuaikan parameter stop loss untuk mendapatkan nisbah risiko dan keuntungan yang optimum

  4. Menambah syarat penapis lain, seperti jumlah urus niaga, untuk menapis lebih lanjut isyarat palsu

  5. Menggabungkan garis trend atau grafik untuk membuat keputusan bentuk, meningkatkan keberkesanan

  6. Menambah strategi pengurusan kedudukan, seperti kedudukan tetap, untuk mengawal risiko penarikan balik

  7. Data keadaan pasaran yang berbeza, parameter penyesuaian dinamik

ringkaskan

Strategi ini menggunakan prinsip overbought dan oversold klasik dalam penunjuk CCI sebagai permulaan. Anda boleh mengawal arah trend dengan menambahkan penapis EMA.

Kod sumber strategi
/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © alifer123

//@version=5
// strategy("CCI+EMA Strategy with Percentage or ATR TP/SL [Alifer]", shorttitle = "CCI_EMA_%/ATR_TP/SL", overlay=false,
//      initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.045)

length = input(14, "CCI Length")
overbought = input.int(150, step = 10, title = "Overbought")
oversold = input.int(-140, step = 10, title = "Oversold")
src = hlc3
ma = ta.sma(src, length)
cci = (src - ma) / (0.015 * ta.dev(src, length))

// EMA
useEMA = input(true, "Use EMA", tooltip = "Only enters long when price is above the EMA, only enters short when price is below the EMA")
emaLength = input(55, "EMA Length")
var float ema = na
if useEMA
    ema := ta.ema(src, emaLength)

// Take Profit and Stop Loss Method
tpSlMethod_percentage = input(true, "Percentage TP/SL", group="TP/SL Method")
tpSlMethod_atr = input(false, "ATR TP/SL", group="TP/SL Method")

// Percentage-based Take Profit and Stop Loss
tp_percentage = input.float(10.0, title="Take Profit (%)", step=0.1, group="TP/SL Method")
sl_percentage = input.float(10.0, title="Stop Loss (%)", step=0.1, group="TP/SL Method")

// ATR-based Take Profit and Stop Loss
atrLength = input(20, title="ATR Length", group="TP/SL Method")
atrMultiplier = input(4, title="ATR SL Multiplier", group="TP/SL Method")
riskRewardRatio = input(2, title="Risk Reward Ratio", group="TP/SL Method")

// Calculate TP/SL levels based on the selected method, or leave them undefined if neither method is selected
longTP = tpSlMethod_percentage ? strategy.position_avg_price * (1 + tp_percentage / 100) : na
longSL = tpSlMethod_percentage ? strategy.position_avg_price * (1 - sl_percentage / 100) : na
shortTP = tpSlMethod_percentage ? strategy.position_avg_price * (1 - tp_percentage / 100) : na
shortSL = tpSlMethod_percentage ? strategy.position_avg_price * (1 + sl_percentage / 100) : na

if tpSlMethod_atr
    longSL := strategy.position_avg_price - ta.atr(atrLength) * atrMultiplier
    longTP := ((strategy.position_avg_price - longSL) * riskRewardRatio) + strategy.position_avg_price
    shortSL := strategy.position_avg_price + ta.atr(atrLength) * atrMultiplier
    shortTP := ((strategy.position_avg_price - shortSL) * riskRewardRatio) - strategy.position_avg_price

// Enter long position when CCI crosses below oversold level and price is above EMA
longCondition = ta.crossover(cci, oversold) and (not useEMA or close > ema)
if longCondition
    strategy.entry("Buy", strategy.long)

// Enter short position when CCI crosses above overbought level and price is below EMA
shortCondition = ta.crossunder(cci, overbought) and (not useEMA or close < ema)
if shortCondition
    strategy.entry("Sell", strategy.short)

// Close long positions with Take Profit or Stop Loss
if strategy.position_size > 0
    strategy.exit("Long Exit", "Buy", limit=longTP, stop=longSL)

// Close short positions with Take Profit or Stop Loss
if strategy.position_size < 0
    strategy.exit("Short Exit", "Sell", limit=shortTP, stop=shortSL)

// Close positions when CCI crosses back above oversold level in long positions or below overbought level in short positions
if ta.crossover(cci, overbought)
    strategy.close("Buy")
if ta.crossunder(cci, oversold)
    strategy.close("Sell")

// Plotting
color_c = cci > overbought ? color.red : (cci < oversold ? color.green : color.white)
plot(cci, "CCI", color=color_c)
hline(0, "Middle Band", color=color.new(#787B86, 50))
obband = hline(overbought, "OB Band", color=color.new(#78867a, 50))
osband = hline(oversold, "OS Band", color=color.new(#867878, 50))
fill(obband, osband, color=color.new(#787B86, 90))