
CCI+ 쌍평평선 교차 반입 구매 전략은 전진 지표 ((CCI) 와 쌍평평선 교차 신호를 종합적으로 활용하는 양적 거래 전략이다. 이 전략은 쌍평평선 금포가 형성된 후, 가격이 패스트 라인 근처에 반입하는 동안 CCI 지표가 초매할 때 구매하고, 사다리 형성된 후 가격이 패스트 라인 근처에 반입하는 동안 CCI 지표가 초매할 때 판매한다. CCI와 쌍평평선 교차 신호를 결합함으로써, 이 전략은 트렌드 기회를 더 잘 포착할 수 있으며, 동시에 반입 구매 및 반입 판매를 기다리는 동안 더 나은 입출 및 출출 기회를 얻을 수 있으며, 이를 통해 전략의 위험 수익률을 높일 수 있다.
CCI+ 쌍평선 교차 반납 구매 전략은 트렌드 추적과 역전입의 장점을 겸비한 양적 거래 전략이다. 쌍평선으로 트렌드 방향을 포착하고 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)