Momentum Mengikuti Strategi CCI


Tanggal Pembuatan: 2023-10-25 17:37:39 Akhirnya memodifikasi: 2023-10-25 17:37:39
menyalin: 1 Jumlah klik: 762
1
fokus pada
1617
Pengikut

Momentum Mengikuti Strategi CCI

Ringkasan

Strategi ini didasarkan pada indikator Commodity Channel Index (CCI) yang dirancang untuk melakukan overbought dan underbought. Strategi ini juga secara opsional menggunakan filter EMA untuk mengendalikan perdagangan hanya di arah tren. Strategi ini juga menawarkan stop loss yang didasarkan pada persentase tetap atau rentang rata-rata nyata (ATR).

Prinsip Strategi

  1. Menggunakan indikator CCI untuk menilai tren pasar

    • CCI mengukur momentum dengan membandingkan harga saat ini dengan harga rata-rata dalam periode tertentu

    • CCI di atas 150 adalah overbought, di bawah -100 adalah oversold

  2. Opsional menggunakan EMA filter

    • Hanya melakukan over jika harga lebih tinggi dari EMA, melakukan short jika harga lebih rendah dari EMA

    • Menggunakan EMA untuk menentukan arah tren dan menghindari perdagangan kontra-tren

  3. Ada dua cara untuk menghentikan kerugian

    • Stop loss berdasarkan persentase tetap: menggunakan persentase tetap dari harga masuk untuk mengatur stop loss

    • Stop loss berdasarkan ATR: Stop loss ditetapkan dengan menggunakan kelipatan ATR, kemudian stop loss dihitung berdasarkan RRR

  4. Syarat masuk

    • CCI melakukan lebih banyak saat melewati garis 100.

    • Di bawah CCI, kosong saat melewati garis 150

    • Jika EMA diaktifkan, hanya melakukan over jika harga lebih tinggi dari EMA, dan melakukan over jika harga lebih rendah dari EMA

  5. Kondisi pertandingan

    • Harga mencapai level stop loss

    • CCI kembali ke zona overbought dan oversold

  6. Peta

    • Menggambar indikator CCI, warna daerah

Analisis Keunggulan

  1. Menggunakan CCI untuk menilai overbought dan oversold, ini adalah penggunaan klasik dari indikator CCI

  2. Opsional EMA memastikan hanya berdagang di arah tren dan menghindari pembalikan

  3. Dua mode stop loss yang tersedia, parameter stop loss dapat disesuaikan dengan pasar

  4. Dengan masuk kembali ke zona overbought dan oversold berdasarkan indikator CCI, Anda dapat mengunci keuntungan untuk membalikkan tren.

  5. Peta yang menonjolkan sinyal CCI, mudah dibaca

  6. Strategi logis yang jelas dan sederhana, mudah dipahami dan dioptimalkan

Analisis risiko

  1. Indikator CCI terlambat, mungkin terjadi pembalikan yang terlewatkan atau menghasilkan sinyal palsu

  2. Setting parameter EMA yang tidak tepat dapat melewatkan tren atau membatalkan strategi

  3. Persentase stop loss yang sulit untuk beradaptasi dengan perubahan pasar, dengan parameter yang lebih luas

  4. ATR Stop Stop Stop adalah sensitif terhadap siklus interval dan harus disesuaikan dengan parameter optimal

  5. Risiko penarikan lebih tinggi, manajemen posisi harus disesuaikan

  6. Efek Parameter indikator harus dinilai sesuai dengan perubahan lingkungan pasar

Arah optimasi

  1. Evaluasi parameter CCI dari berbagai periode untuk menemukan kombinasi optimal

  2. Uji siklus EMA yang berbeda untuk menentukan siklus penilaian tren yang paling sesuai

  3. Menyesuaikan parameter stop loss dan stop loss untuk mendapatkan RRR optimal

  4. Menambahkan kondisi filter lainnya, seperti volume transaksi, untuk lebih memfilter sinyal palsu

  5. Menggabungkan garis tren atau grafik untuk penilaian bentuk, meningkatkan efektivitas

  6. Menambahkan strategi manajemen posisi, seperti posisi tetap, untuk mengendalikan risiko penarikan

  7. Data lingkungan pasar yang berbeda, parameter penyesuaian dinamis

Meringkaskan

Strategi ini menggunakan prinsip overbought dan oversold klasik dari indikator CCI untuk memulai. Anda dapat mengontrol arah tren dengan menambahkan filter EMA. Anda dapat dengan mudah menyesuaikan dengan dua cara stop loss dan stop loss.

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