CCI, DMI, MACD 혼합 롱/숏 전략

CCI DMI MACD
생성 날짜: 2024-04-28 13:52:16 마지막으로 수정됨: 2024-04-28 13:52:16
복사: 5 클릭수: 905
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

CCI, DMI, MACD 혼합 롱/숏 전략

개요

이 전략은 세 가지 기술 지표: 시세 지표 ((CCI), 방향 운동 지표 ((DMI) 및 이동 평균 집약 지표 ((MACD) 를 결합하여 시장의 과매도 과매도 상태를 판단하고 트렌드 방향을 판단합니다. CCI가 과매도 영역에서 상향으로 돌파되고 DI+가 DI-보다 크고 MACD가 신호선보다 크면 구매 신호가 발생하며 CCI가 과매도 영역에서 하향으로 돌파되고 DI-가 DI+보다 크고 MACD가 신호선보다 작으면 판매 신호가 발생합니다.

전략 원칙

  1. CCI 지수를 계산하여 시장의 과매매 상태를 판단한다. CCI가 과매매 영역에서 ((-100 이하) 위로 돌파하면 시장이 과매매로 전환되어 상승이 발생할 수 있음을 나타냅니다. CCI가 과매매 영역에서 ((100 이상) 아래로 돌파하면 시장이 과매로 전환되어 하락이 발생할 수 있음을 나타냅니다.
  2. 시장의 경향 방향을 판단하기 위해 DMI 지표를 계산한다. DI+가 DI-보다 크면 상승 추세가 우세한 것을 나타내고, DI-가 DI+보다 크면 하향 추세가 우세한 것을 나타낸다.
  3. 시장의 트렌드 강도를 판단하기 위해 MACD 지수를 계산한다. MACD가 신호선보다 크면 상승 동력이 강하다는 것을 나타냅니다. MACD가 신호선보다 작으면 하향 동력이 강하다는 것을 나타냅니다.
  4. 위의 세 가지 지표가 결합되면, CCI가 초매구역에서 상향으로 돌파되고, DI+가 DI-보다 크고 MACD가 신호선보다 크면, 구매 신호가 발생한다. CCI가 초매구역에서 상향으로 돌파되고, DI-가 DI+보다 크고 MACD가 신호선보다 작으면, 판매 신호가 발생한다.

전략적 이점

  1. 여러 기술 지표와 결합하여 다양한 관점에서 시장을 분석하여 신호의 신뢰성을 높였습니다.
  2. 시장의 과매매 상태, 트렌드 방향 및 트렌드 강도를 고려하여 시장의 주요 트렌드를 포착할 수 있습니다.
  3. 명확한 입출입 조건이 설정되어 자동화 거래가 가능합니다.

전략적 위험

  1. 시장의 흔들림이나 추세가 불명확할 때, 이 전략은 더 많은 가짜 신호를 생성할 수 있으며, 이는 빈번한 거래와 높은 거래 비용을 초래한다.
  2. 이 전략은 역사적 데이터에 의존하며 시장의 갑작스러운 사건이나 중요한 소식에 대한 반응은 느릴 수 있다.
  3. 전략 파라미터 (CCI의 오버 바이 오버 소드 마이너스, MACD의 빠른 느린 라인 사이클 등) 는 다른 시장과 품종에 따라 최적화해야 하며, 그렇지 않으면 전략의 성과에 영향을 줄 수 있다.

전략 최적화 방향

  1. 더 많은 기술 지표 또는 시장 감정 지표를 도입하여 신호의 신뢰도와 안정성을 향상시킵니다.
  2. 전략 매개 변수를 최적화하기 위해, 유전 알고리즘과 같은 지능적인 최적화 방법을 사용하여 최적의 매개 변수 조합을 찾을 수 있다.
  3. 위험 관리 모듈을 추가하여 전략의 위험/수익 비율을 높여줍니다.
  4. 다른 시장 환경에 맞게 다른 거래 규칙을 설정하고, 전략의 적응력을 높여라.

요약하다

이 전략은 CCI, DMI, MACD의 세 가지 기술 지표를 결합하여 시장의 과매매 상태, 트렌드 방향 및 트렌드 강도를 종합적으로 판단하여 매매 신호를 생성합니다. 전략 아이디어는 명확하고 구현하기 쉽지만 실제 응용에서는 전략 매개 변수를 최적화하고 거래 빈도 및 위험을 제어하여 전략의 안정성과 수익성을 높이기 위해 주의해야합니다.

전략 소스 코드
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("CCI, DMI, and MACD Strategy", overlay=true)

// Define inputs
cci_length = input(14, title="CCI Length")
overbought_level = input(100, title="Overbought Level")
oversold_level = input(-100, title="Oversold Level")

// Calculate CCI
cci_value = ta.cci(close, cci_length)

// Calculate DMI
[di_plus, di_minus, _] = ta.dmi(14, 14)

// Calculate MACD
[macd_line, signal_line, _] = ta.macd(close, 24, 52, 9)

// Define buy and sell conditions
buy_signal = ta.crossover(cci_value, oversold_level) and di_plus > di_minus and macd_line > signal_line // CCI crosses above -100, Di+ > Di-, and MACD > Signal
sell_signal = ta.crossunder(cci_value, overbought_level) and di_minus > di_plus and macd_line < signal_line // CCI crosses below 100, Di- > Di+, and MACD < Signal

// Define exit conditions
buy_exit_signal = ta.crossover(cci_value, overbought_level) // CCI crosses above 100
sell_exit_signal = ta.crossunder(cci_value, oversold_level) // CCI crosses below -100

// Execute trades based on conditions
strategy.entry("Buy", strategy.long, when=buy_signal)
strategy.close("Buy", when=buy_exit_signal)

strategy.entry("Sell", strategy.short, when=sell_signal)
strategy.close("Sell", when=sell_exit_signal)

// Plot CCI
plot(cci_value, title="CCI", color=color.blue)

// Plot DMI
plot(di_plus, title="DI+", color=color.green)
plot(di_minus, title="DI-", color=color.red)

// Plot MACD and Signal lines
plot(macd_line, title="MACD", color=color.orange)
plot(signal_line, title="Signal", color=color.purple)

// Plot overbought and oversold levels
hline(overbought_level, "Overbought", color=color.red)
hline(oversold_level, "Oversold", color=color.green)