CCI + MA 크로스오버 풀백 구매 전략은 재화 채널 지표 (CCI) 와 이중 이동 평균 크로스오버 신호를 결합한 양적 거래 전략이다. 이 전략은 가격이 빠른 이동 평균으로 되돌아 갈 때 구매하고 CCI는 상승 크로스오버 이후 과잉 판매 조건을 나타냅니다. 가격이 빠른 이동 평균으로 상승하고 CCI는 하락 크로스오버 이후 과잉 구매 조건을 나타냅니다. CCI와 이중 이동 평균 크로스오버 신호를 결합함으로써이 전략은 트렌딩 기회를 더 잘 포착 할 수 있으며 풀백 구매 및 릴리 판매를 통해 더 나은 진입 및 출구 지점을 달성하여 리스크 보상 비율을 향상시킵니다.
CCI + MA 크로스오버 풀백 구매 전략은 트렌드 추후와 역트렌드 진입의 장점을 결합한 양적 거래 전략이다. 이중 이동 평균으로 트렌드 방향을 파악하고 CCI 지표로 과잉 구매/ 과잉 판매 구역을 식별하여 더 나은 진입 가격을 달성하기 위해 가격 인하 및 집회를 기다리는 동안 전략은 수익성과 위험과 보상 비율을 어느 정도 향상시킬 수 있습니다. 그러나 전략은 매개 변수 최적화, 불안정한 시장 및 갑작스러운 트렌드 변화와 같은 위험도 직면합니다. 전략의 견고성과 수익성을 향상시키기 위해 추가 최적화 및 개선이 필요합니다. 전략의 논리는 명확하며 전체 코드 구조가 완전하며 실시간 거래에 적합합니다.
/*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)