모멘텀 이중 기간 CCI 추세 추종 거래 전략

CCI 趋势跟踪 动量指标 零线穿越 双周期策略 趋势确认
생성 날짜: 2025-07-03 10:32:12 마지막으로 수정됨: 2025-07-03 10:32:12
복사: 0 클릭수: 293
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

모멘텀 이중 기간 CCI 추세 추종 거래 전략 모멘텀 이중 기간 CCI 추세 추종 거래 전략

개요

이중주기 CCI 동력 트렌드 추적 거래 전략은 긴 짧은 주기 상품 통로 지수 ((CCI) 와 결합된 정량 거래 시스템으로, 시장에서 강력한 경향적인 행동을 식별하고 포착하기 위해 특별히 설계되었다. 이 전략은 50주기의 긴 주기 CCI를 시장의 주요 트렌드 방향을 결정하는 데 사용하며, 5주기의 짧은 주기 CCI를 사용하여 시장 동력 변화와 진입 시기를 포착한다. 이 이중주기 조합 방법은 가짜 신호를 효과적으로 필터링 할 수 있을 뿐만 아니라, 트렌드 초기에 정확한 진입 지점을 제공하여 포착된 트렌드의 핵심 이익을 최대화한다. 이 전략은 쌍방향 거래를 지원하며, 사용자는 자신의 위험 선호도에 따라 유연하게 작동하거나 작동 할 수 있습니다.

전략 원칙

이 전략의 핵심 논리는 CCI 지표의 제로선 통과와 동량 변화 이론에 기초하고, 구체적인 작동 원리는 다음과 같다:

  1. 복수 입학 조건

    • 장기 주기 CCI ((50) 현재 값과 이전 주기 값 모두 0보다 크며 시장이 상승 추세에 있음을 나타냅니다.
    • 단기 CCI ((5)) 는 0선을 상향으로 가로질러 단기 동력이 긍정적으로 변하는 것을 나타냅니다.
    • 현재 트렌드 사이클에서 단 한 번만 신호를 터치하여 반복적인 입장을 피하십시오.
  2. 다자 평점 조건

    • 긴 주기 CCI ((50) 하향으로 0선을 통과하여 시장이 하향으로 전환되었을 수 있음을 나타냅니다.
  3. 공허 입학 조건(공백 기능이 활성화된 경우에만)

    • 긴 주기 CCI ((50) 현재 값과 이전 주기 값이 모두 0보다 작아 시장이 하향 추세에 있음을 나타냅니다.
    • 단기 CCI ((5)) 는 0선을 아래로 통과하여 단기 동력이 마이너스로 변하는 것을 나타냅니다.
    • 또한, 현재 트렌드 사이클에서 신호를 한번만 터치하는 것을 보장합니다.
  4. 공백점 평점 조건

    • 긴 주기 CCI ((50) 상향으로 0선을 통과하여 시장이 상승 추세로 전환되었을 수 있음을 나타냅니다.

변수를 통해 전략inPositiveCciLongCyclefirstCrossoverOccurred그리고firstCrossunderOccurred트렌드 사이클 상태를 추적하여, 트렌드 사이클 중 한 번만 거래하는 것을 보장하여, 흔들리는 시장에서 빈번한 거래와 불필요한 수수료 손실을 효과적으로 피합니다.

전략적 이점

코드에 대한 심층적인 분석을 통해, 이 전략은 다음과 같은 몇 가지 중요한 장점을 보여준다:

  1. 트렌드와 동력의 이중 확인: 장기주기 및 단기주기 CCI 지표와 결합하여 트렌드 방향과 진입 시기를 형성하는 이중 확인 메커니즘으로, 가짜 신호의 위험을 크게 줄입니다.

  2. 정확한 출입 시간이 전략은 짧은 주기적인 CCI가 0선을 통과함으로써 동력의 변화를 식별하여 트렌드의 초기 단계에서 더 정확한 입구 지점을 제공하여 자금 활용 효율성을 높일 수 있습니다.

  3. 자주 거래하는 것을 피하십시오.: 주기적으로 단 한 번만 입점하는 메커니즘을 통해 불안한 시장에서 자주 거래하는 것을 효과적으로 방지하고 거래 비용을 절감한다.

  4. 유연한 거래 방식: 다중 또는 양방향 거래를 지원하며, 사용자는 시장 환경 및 개인 취향에 따라 다양한 시장 조건에 적응할 수 있습니다.

  5. 명확한 시각적 피드백: 전략은 CCI 지표선과 거래 신호 표시를 포함한 직관적인 시각적 지시를 제공하여 분석 및 재검토 검증을 용이하게합니다.

  6. 매개 변수 조정: 사용자는 다양한 시장 및 품종 특성에 따라 CCI 주기의 길이를 조정할 수 있으며, 전략의 적응성을 향상시킬 수 있습니다.

전략적 위험

이 전략은 합리적으로 설계되었지만, 다음과 같은 잠재적인 위험들이 있습니다.

  1. 추세 반전 위험강력한 트렌드가 급격히 역전되는 경우, 긴 주기적인 CCI가 0선을 제 시간에 통과하지 못할 수 있으며, 이는 평지 신호의 지연으로 인해 이미 수익을 얻은 배출이 발생할 수 있습니다. 해결책은 정지 장치를 도입하거나 더 민감한 평지 지표를 추가하는 것입니다.

  2. 수평 시장의 효과는 좋지 않습니다.: 장기 수평 또는 명백한 추세가없는 시장 환경에서, 전략은 손실을 초래하는 여러 가지 무효 신호를 생성 할 수 있습니다. 시장이 명백한 추세에 있음을 확인 할 때 이 전략을 사용하는 것이 좋습니다.

  3. 매개변수 민감도: CCI 주기적 매개 변수 선택은 전략 성능에 중요한 영향을 미치며, 다른 시장에는 다른 매개 변수 설정이 필요할 수 있다. 피드백 최적화를 통해 특정 시장에 적합한 매개 변수 조합을 찾는 것이 좋습니다.

  4. 단일 지표 의존: 전략은 CCI 지표에만 의존하고, 다른 기술 지표 또는 가격 형태의 보조 확인이 없기 때문에, 가짜 신호의 위험을 증가시킬 수 있습니다. 추가 필터링 조건을 추가하는 것을 고려하십시오.

  5. 재정 관리 부족: 코드에서 고정 비율 포지션 관리 ((100% 자금) 를 사용 하 여, 높은 변동성 시장에서 너무 높은 위험을 가져올 수 있습니다. 시장의 변동성 동력에 따라 포지션 크기를 조정하는 것이 좋습니다.

전략 최적화 방향

코드 분석을 바탕으로, 이 전략은 다음과 같은 방향으로 최적화될 수 있습니다:

  1. 필터링 조건을 추가: 평행선, RSI 또는 MACD와 같은 다른 기술 지표와 결합하여 여러 확인 메커니즘을 구축하여 신호 품질을 향상시킵니다. 이러한 최적화는 단일 CCI 지표가 특정 시장 환경에서 잘못된 신호를 유발할 수 있기 때문에 여러 지표가 결합되어 각각의 결점을 보완 할 수 있기 때문입니다.

  2. 사용자 정의 변수를 입력합니다.CCI 주기의 매개 변수를 시장의 변동성에 따라 자동으로 조정하도록 설계하여 전략이 다른 시장 단계에 적응할 수 있도록합니다. 이 최적화는 전략이 다양한 변동 환경에서 안정적인 성능을 유지하는 데 도움이됩니다.

  3. 자금 관리 개선: ATR 기반의 동적 포지션 관리가 도입되어 시장의 변동성에 따라 포지션 크기를 자동으로 조정하여 수익과 위험을 균형을 잡습니다. 이 개선은 전략이 높은 변동성 시장에서 위험을 통제 할 수있게 해 주면서 낮은 변동성 추세에서 기회를 최대한 활용 할 수 있습니다.

  4. 더 많은 스티커스: 시장의 변동성에 기반한 동적 스톱 스톱 손실 전략을 설계하여 이미 이윤을 보호하고 단일 거래 손실을 제한하십시오. 이렇게하면 긴 주기 CCI 반응 지연으로 인한 큰 이윤 회수를 피할 수 있습니다.

  5. 시간대 최적화서로 다른 거래 시간에 (예: 상장, 상장) 전략 매개 변수 또는 거래 논리를 조정하여 각 시간의 시장 특성에 맞게 조정합니다. 시장은 서로 다른 시간에 서로 다른 변동 및 추세 특성을 나타냅니다. 타겟팅 최적화는 전략 안정성을 향상시킵니다.

  6. 철수 통제를 강화: 최대 회수 제어 장치를 설계하여 전략이 좋지 않은 경우 자동으로 위치를 낮추거나 거래를 중지하여 연속 손실을 방지합니다. 이 메커니즘은 전략이 불리한 시장 환경에서 자신을 보호하는 데 도움이됩니다.

요약하다

이중주기 CCI 동력 트렌드 추적 거래 전략은 CCI 지표에 기반한 고효율 트렌드 추적 시스템으로, 장기 및 단기 CCI의 연동 작용을 통해 시장의 추세 방향을 식별하면서 최적의 진입 시점을 포착한다. 이 전략은 간단하고 효과적으로 설계되었으며, 특히 명확한 추세 시장에 적합하다. 특정 파라미터의 민감성과 단일 지표 의존의 위험이 존재하지만, 여러 지표 결합, 적응 파라미터 및 개선된 자금 관리 메커니즘을 포함하는 권장된 최적화 방향으로 전략의 안정성과 적합성을 크게 향상시킬 수 있다.

전략 소스 코드
/*backtest
start: 2024-07-03 00:00:00
end: 2025-07-01 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/

// @version=6
// @description= Trend-following trading strategy based on the Commodity Channel Index (CCI) and price action confirmation. 
// The strategy focuses on identifying momentum-driven trends with entry and exit conditions.
// @author: withoutbug
strategy("Momentum CCI Trend Following Strategy",
     overlay=false, 
     initial_capital=10000, 
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100,
     commission_type=strategy.commission.percent,
     commission_value=0.075,
     margin_long=0,
     margin_short=0)

// Input parameters
cciLongPeriod = input.int(50, "Long CCI Period", minval=1)
cciShortPeriod = input.int(5, "Short CCI Period", minval=1)
twoWayTrading = input(false, "Enable Short Order Book")



// Calculate CCI
cciLong = ta.cci(hlc3, cciLongPeriod)
cciShort = ta.cci(hlc3, cciShortPeriod)

cciLongCrossUnderZero = ta.crossunder(cciLong, 0)
cciShortCrossOverZero = ta.crossover(cciShort, 0)

cciLongCrossOverZero = ta.crossover(cciLong, 0)
cciShortCrossUnderZero = ta.crossunder(cciShort, 0)


// Track CCI Long > 0 state and first crossover
var bool inPositiveCciLongCycle = false
var bool firstCrossoverOccurred = false
var bool firstCrossunderOccurred = false

// Update CCI Long cycle state
firstCrossoverOccurred := false
firstCrossunderOccurred := false

// Buy conditions
buySignal = strategy.position_size==0 and cciLong > 0 and cciLong[1] > 0 and  cciShortCrossOverZero and firstCrossoverOccurred == false
if buySignal
    firstCrossoverOccurred := true

// Exit conditions
exitLong = strategy.position_size>0 and cciLongCrossUnderZero

// Sell conditions
sellSignal = strategy.position_size==0 and cciLong < 0 and cciLong[1] < 0 and  cciShortCrossUnderZero and firstCrossunderOccurred == false
if sellSignal
    firstCrossunderOccurred := true

// Exit conditions
exitShort = strategy.position_size<0 and cciLongCrossOverZero


// Strategy logic
if (buySignal)
    strategy.entry("Long", strategy.long)

if (exitLong)
    strategy.close("Long", comment="CCI Exit Long")

if (sellSignal and twoWayTrading)
    strategy.entry("Short", strategy.short)

if (exitShort and twoWayTrading)
    strategy.close("Short", comment="CCI Exit Short")


// Plot CCI indicators on the panel
plot(cciLong, title="Long CCI", color = cciLong>=0 ? color.green:color.red, linewidth=2, style = plot.style_area)
plot(cciShort, title="Short CCI", color=color.yellow, linewidth=1)


hline(0, "Zero Line", color=color.gray, linestyle=hline.style_solid)

// Plot buy and sell signals on the panel
plotshape(buySignal, title="Buy Signal", location=location.bottom, color=color.green, style=shape.triangleup, size=size.tiny)
plotshape(exitLong, title="exitLong", location=location.top, color=color.red, style=shape.triangledown, size=size.tiny)


plotshape(sellSignal, display = twoWayTrading?display.pane:display.none, title="Sell Signal", location=location.top, color=color.red, style=shape.triangledown, size=size.tiny)
plotshape(exitShort, display = twoWayTrading?display.pane:display.none, title="exitShort", location=location.bottom, color=color.green, style=shape.triangleup, size=size.tiny)