Sumber daya yang dimuat... Pemuatan...

CCI + MA Crossover Pullback Buy Strategi

Penulis:ChaoZhang, Tanggal: 2024-05-24 17:45:49
Tag:CCIMA

img

Gambaran umum

CCI + MA Crossover Pullback Buy Strategy adalah strategi perdagangan kuantitatif yang menggabungkan Commodity Channel Index (CCI) dan sinyal crossover rata-rata bergerak ganda. Strategi ini membeli ketika harga menarik kembali ke rata-rata bergerak cepat dan CCI menunjukkan kondisi oversold setelah crossover bullish. Strategi ini menjual ketika harga naik ke rata-rata bergerak cepat dan CCI menunjukkan kondisi overbought setelah crossover bearish. Dengan menggabungkan CCI dan sinyal crossover rata-rata bergerak ganda, strategi ini dapat lebih baik menangkap peluang tren sambil mencapai titik masuk dan keluar yang lebih baik melalui pembelian pullback dan penjualan rally, sehingga meningkatkan rasio risiko-manfaat.

Logika Strategi

  1. Menghitung indikator CCI berdasarkan parameter CCI yang didefinisikan pengguna (sumber, periode, jenis rata-rata bergerak, ambang overbought/oversold).
  2. Tentukan kondisi CCI overbought/oversold. Tetapkan warna latar belakang menjadi merah ketika CCI berada di atas ambang overbought dan hijau ketika di bawah ambang oversold.
  3. Menghitung rata-rata bergerak cepat dan lambat berdasarkan parameter yang ditentukan pengguna (sumber, periode, jenis rata-rata bergerak).
  4. Mengidentifikasi persilangan bullish dan bearish. Menggambar sinyal bullish ketika MA cepat melintasi di atas MA lambat, dan sinyal bearish ketika MA cepat melintasi di bawah MA lambat.
  5. Membuat keputusan perdagangan:
    • Masuk panjang: Ketika MA cepat berada di atas MA lambat, lilin sebelumnya ditutup di bawah MA cepat, lilin saat ini bullish, dan CCI berada di bawah ambang oversold, beli untuk membuka posisi panjang.
    • Entry pendek: Ketika MA cepat berada di bawah MA lambat, lilin sebelumnya ditutup di atas MA cepat, lilin saat ini menurun, dan CCI berada di atas ambang overbought, jual untuk membuka posisi pendek.

Keuntungan Strategi

  1. Mengikuti tren: Sinyal silang rata-rata bergerak ganda membantu mengidentifikasi arah tren dan lebih selaras dengan tren pasar.
  2. Entry counter-trend: Menunggu kenaikan harga untuk membeli atau kenaikan harga untuk menjual setelah konfirmasi tren dapat menyebabkan harga masuk yang lebih baik dan meningkatkan rasio risiko-manfaat.
  3. Mengurangi sinyal palsu: Menggabungkan CCI dengan sinyal crossover rata-rata bergerak dapat secara efektif mengurangi sinyal palsu yang dihasilkan oleh satu indikator.
  4. Parameter fleksibel: Pengguna dapat mengatur CCI dan parameter rata-rata bergerak secara fleksibel sesuai preferensi mereka untuk mengoptimalkan kinerja strategi.

Risiko Strategi

  1. Risiko pasar bergolak: Dalam pasar bergolak, persilangan bullish dan bearish yang sering dapat menyebabkan lebih banyak perdagangan yang rugi.
  2. Risiko parameter: Pengaturan parameter yang tidak tepat dapat mengakibatkan kinerja strategi yang buruk. pengujian dan analisis backtesting menyeluruh kombinasi parameter optimal untuk kondisi pasar yang berbeda diperlukan.
  3. Risiko tren: Ketika tren pasar berbalik, strategi dapat menunda keluar dan mengalami penurunan yang lebih besar.

Arah Optimasi Strategi

  1. Memperkenalkan ukuran posisi untuk menyesuaikan secara dinamis ukuran posisi setiap perdagangan berdasarkan kekuatan tren saat ini dan volatilitas untuk pengendalian risiko yang lebih baik.
  2. Mengoptimalkan kondisi masuk dengan memasukkan indikator volume atau indikator konfirmasi tambahan lainnya untuk meningkatkan keandalan sinyal masuk.
  3. Mengoptimalkan kondisi keluar dengan mengatur trailing stop atau time stop untuk mengurangi kerugian maksimum per perdagangan.
  4. Melakukan optimasi parameter untuk pasar dan instrumen yang berbeda secara terpisah untuk meningkatkan kemampuan beradaptasi dan ketahanan strategi.

Ringkasan

CCI + MA Crossover Pullback Buy Strategy adalah strategi perdagangan kuantitatif yang menggabungkan keuntungan dari mengikuti tren dan memasuki kontra-tren. Dengan menangkap arah tren dengan rata-rata bergerak ganda dan mengidentifikasi zona overbought / oversold dengan indikator CCI, sambil menunggu penarikan harga dan reli untuk mencapai harga masuk yang lebih baik, strategi ini berpotensi meningkatkan profitabilitas dan rasio risiko-imbalan sampai batas tertentu. Namun, strategi ini juga menghadapi risiko seperti optimasi parameter, pasar berbelit-belit, dan perubahan tren mendadak. Optimasi dan peningkatan lebih lanjut diperlukan untuk meningkatkan ketahanan dan profitabilitas strategi.


/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © tradedots

//@version=5
strategy("CCI + MA Crossover Pullback Buy Strategy [TradeDots]", overlay=true)


ma(source, length, type) =>
  type == "SMA" ? ta.sma(source[1], length) :
  type == "EMA" ? ta.ema(source[1], length) :
  type == "SMMA (RMA)" ? ta.rma(source[1], length) :
  type == "WMA" ? ta.wma(source[1], length) :
  type == "VWMA" ? ta.vwma(source[1], length) :
  na

//CCI settings
cci_coloring  = input.bool(true, "CCI Background Color", group = "Commodity channel index")
cci_length    = input.int(20,"CCI Length", group = "Commodity channel index")
cci_ma_type   = input.string("EMA","CCI MA Type", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group = "Commodity channel index")
cci_soruce    = input(hlc3, "CCI Source", group = "Commodity channel index")
cci_threshold = input.int(100, "CCI Threshold", group = "Commodity channel index")
cci_ma = ma(cci_soruce, cci_length, cci_ma_type)
cci = (cci_soruce - cci_ma) / (0.015 * ta.dev(cci_soruce, cci_length))

bgcolor(cci > cci_threshold and cci_coloring ? color.new(#f9396a, 80) : cci < -cci_threshold and cci_coloring? color.new(#9cff87, 80) : na, title = "CCI Overbought / Oversold")

//ma crossover settings
input_crossover_labels = input.bool(true, "Show Crossover Labels", group="Moving average")

fastma_type   = input.string("EMA","", inline="fastma", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Moving average")
fastma_source = input(close, "", inline="fastma", group="Moving average")
fastma_length = input.int(10, "", inline="fastma", minval=1,group="Moving average")
fastma_color  = input(#e2fdff, "", inline="fastma",group="Moving average")
fastma = ma(fastma_source, fastma_length, fastma_type)
fastmaPlot = plot(fastma, color = #b7e4c7, linewidth = 2, title = "Fast MA")

slowma_type   = input.string("EMA","", inline="slowma", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Moving average")
slowma_source = input(close, "", inline="slowma", group="Moving average")
slowma_length = input.int(30, "", inline="slowma", minval=1,group="Moving average")
slowma_color  = input(#e2fdff, "", inline="slowma",group="Moving average")
slowma = ma(slowma_source, slowma_length, slowma_type)
slowmaPlot = plot(slowma, color = #2d6a4f, linewidth = 2, title = "Slow MA")

bullish_crossover = ta.crossover(fastma, slowma)
bearish_crossover = ta.crossunder(fastma, slowma)

// // strategy
// if bullish_crossover and input_crossover_labels
//     line.new(bar_index, close, bar_index, close * 1.01, extend = extend.both, color = color.new(#9cff87, 30), style = line.style_dotted, width = 3)
//     label.new(bar_index,low, "Bullish Crossover", style = label.style_label_up, color = #9cff87)

// else if bearish_crossover and input_crossover_labels
//     line.new(bar_index, close, bar_index, close * 1.01, extend = extend.both, color = color.new(#f9396a, 30), style = line.style_dotted, width = 3)
//     label.new(bar_index, high, "Bearish Crossover", style = label.style_label_down, color = #f9396a, textcolor = color.white)

if fastma > slowma and close[1] < fastma and close > open and cci < -cci_threshold
    strategy.entry("Long", strategy.long)
    // if strategy.opentrades == 0 or strategy.opentrades.size(strategy.opentrades -1) < 0
    //     label.new(bar_index,low, "🟢 Long", style = label.style_label_up, color = #9cff87)

if fastma < slowma and close[1] > fastma and close < open and cci > cci_threshold
    strategy.entry("Short", strategy.short)
    // if strategy.opentrades == 0 or strategy.opentrades.size(strategy.opentrades -1) > 0
    //     label.new(bar_index, high, "🔴 Short", style = label.style_label_down, color = #f9396a, textcolor = color.white)

Berkaitan

Lebih banyak