이 전략은 세 가지 기술 지표: 상품 채널 지표 (CCI), 방향 움직임 지표 (DMI), 이동 평균 컨버전스 디버전스 (MACD) 를 결합하여 시장의 과잉 구매 및 과잉 판매 조건을 결정하고 트렌드 방향을 결정합니다. CCI가 과잉 판매 영역을 넘으면 DI +가 DI -보다 크고 MACD가 신호 라인 위에있을 때 구매 신호가 생성됩니다. CCI가 과잉 구매 영역을 넘으면 DI -가 DI +보다 크고 MACD가 신호 라인 아래에있을 때 판매 신호가 생성됩니다.
이 전략은 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)