Sumber dimuat naik... memuat...

CCI + MA Crossover Pullback Buy Strategi

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

img

Ringkasan

CCI + MA Crossover Pullback Buy Strategy adalah strategi perdagangan kuantitatif yang menggabungkan Indeks Saluran Komoditi (CCI) dan isyarat crossover purata bergerak berganda. Strategi ini membeli apabila harga menarik kembali ke purata bergerak pantas dan CCI menunjukkan keadaan oversold selepas crossover bullish. Ia menjual apabila harga meningkat ke purata bergerak pantas dan CCI menunjukkan keadaan overbought selepas crossover bearish. Dengan menggabungkan isyarat crossover CCI dan purata bergerak berganda, strategi ini dapat menangkap peluang trend dengan lebih baik sambil mencapai titik masuk dan keluar yang lebih baik melalui pembelian pullback dan penjualan rally, dengan itu meningkatkan nisbah risiko-balasan.

Logika Strategi

  1. Mengira penunjuk CCI berdasarkan parameter CCI yang ditakrifkan oleh pengguna (sumber, tempoh, jenis purata bergerak, ambang overbought/oversold).
  2. Menentukan keadaan overbought/oversold CCI. Tetapkan warna latar belakang menjadi merah apabila CCI berada di atas ambang overbought dan hijau apabila di bawah ambang oversold.
  3. Mengira purata bergerak pantas dan perlahan berdasarkan parameter yang ditakrifkan pengguna (sumber, tempoh, jenis purata bergerak).
  4. Mengenal pasti persilangan bullish dan bearish. Menggambar isyarat bullish apabila MA pantas melintasi di atas MA perlahan, dan isyarat bearish apabila MA pantas melintasi di bawah MA perlahan.
  5. Membuat keputusan perdagangan:
    • Masuk panjang: Apabila MA cepat di atas MA perlahan, lilin sebelumnya ditutup di bawah MA cepat, lilin semasa menaik, dan CCI di bawah ambang oversold, beli untuk membuka kedudukan panjang.
    • Pendaftaran pendek: Apabila MA pantas di bawah MA perlahan, lilin sebelumnya ditutup di atas MA pantas, lilin semasa menurun, dan CCI di atas ambang overbought, jual untuk membuka kedudukan pendek.

Kelebihan Strategi

  1. Mengikuti trend: Isyarat silang purata bergerak berganda membantu mengenal pasti arah trend dan lebih sejajar dengan trend pasaran.
  2. Pendaftaran aliran yang bertentangan: Menunggu kenaikan harga untuk membeli atau kenaikan harga untuk menjual selepas pengesahan trend boleh membawa kepada harga kemasukan yang lebih baik dan meningkatkan nisbah risiko-balasan.
  3. Pengurangan isyarat palsu: Menggabungkan CCI dengan isyarat silang purata bergerak dapat mengurangkan isyarat palsu yang dihasilkan oleh satu penunjuk.
  4. Parameter fleksibel: Pengguna boleh menetapkan CCI dan parameter purata bergerak dengan fleksibel mengikut pilihan mereka untuk mengoptimumkan prestasi strategi.

Risiko Strategi

  1. Risiko pasaran yang bergolak: Dalam pasaran yang bergolak, persilangan bullish dan bearish yang kerap boleh menyebabkan lebih banyak perdagangan yang rugi.
  2. Risiko parameter: Tetapan parameter yang tidak sesuai boleh menyebabkan prestasi strategi yang buruk.
  3. Risiko trend: Apabila trend pasaran berbalik, strategi boleh menunda keluar dan mengalami pengeluaran yang lebih besar.

Arahan Pengoptimuman Strategi

  1. Memperkenalkan saiz kedudukan untuk menyesuaikan saiz kedudukan setiap perdagangan secara dinamik berdasarkan kekuatan trend semasa dan turun naik untuk kawalan risiko yang lebih baik.
  2. Mengoptimumkan keadaan kemasukan dengan memasukkan penunjuk jumlah atau penunjuk pengesahan tambahan lain untuk meningkatkan kebolehpercayaan isyarat kemasukan.
  3. Mengoptimumkan keadaan keluar dengan menetapkan hentian atau hentian masa untuk mengurangkan kerugian maksimum setiap perdagangan.
  4. Melakukan pengoptimuman parameter untuk pasaran dan instrumen yang berbeza secara berasingan untuk meningkatkan kebolehan penyesuaian dan ketahanan strategi.

Ringkasan

CCI + MA Crossover Pullback Buy Strategy adalah strategi perdagangan kuantitatif yang menggabungkan kelebihan mengikuti trend dan memasuki kontra trend. Dengan menangkap arah trend dengan purata bergerak berganda dan mengenal pasti zon overbought / oversold dengan penunjuk CCI, sambil menunggu kenaikan harga dan kenaikan harga untuk mencapai harga kemasukan yang lebih baik, strategi ini berpotensi dapat meningkatkan keuntungan dan nisbah risiko-balasan hingga tahap tertentu. Walau bagaimanapun, strategi ini juga menghadapi risiko seperti pengoptimuman parameter, pasaran berbelit-belit, dan perubahan trend tiba-tiba. Pengoptimuman dan penambahbaikan lanjut diperlukan untuk meningkatkan ketahanan dan keuntungan strategi. Logik strategi jelas, struktur kod lengkap, dan ia sesuai untuk perdagangan secara keseluruhan.


/*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 lanjut