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