이 전략은 MACD 및 DEMA 이중 레일 지표를 결합하여 크로스오버에서 거래 신호를 생성합니다. MACD 지표의 전환점을 캡처하고 더 나은 항목을 달성하기 위해 DEMA를 필터링으로 사용합니다.
빠른 라인 DEMAfast을 계산해 봅시다. DEMA 값은 기간 길이를 fastmacd로 계산해 봅시다.
느린 라인 DEMAslow를 계산해 봅시다. 기간 길이 slowmacd의 DEMA 값으로 계산해 봅시다.
MACD 라인은 빠른 라인과 느린 라인의 차이입니다: DEMAfast - DEMAAslow.
시그널 라인은 기간 시그널 MACD와 함께 MACD 라인의 DEMA 값입니다.
MACD와 신호 라인 사이의 크로스오버는 거래 신호를 생성합니다. 황금 십자가에서 길고, 죽음의 십자가에서 짧습니다.
지정된 날짜 범위 내에서 신호만 생성하도록 날짜 필터를 추가합니다.
이 전략의 주요 장점은 다음과 같습니다.
MACD와 DEMA를 결합하면 지표를 보완합니다. MACD는 회전을 캡처하고, DEMA는 신호 품질을 향상시키기 위해 필터를 사용합니다.
DEMA 이중 레일 설계는 MACD 지표의 지연 및 소음을 줄입니다.
MACD 크로스오버 신호는 해석이 쉽고 깨끗하고 간단합니다.
날짜 필터의 유연한 설정은 다른 전략 필요에 부응합니다.
MACD 매개 변수는 시장 조건에 따라 유연성을 위해 최적화 할 수 있습니다.
이 전략의 주요 위험은:
MACD는 변동적인 시장을 추월하는 지표로 어려움을 겪고 있습니다.
크로스오버는 잘못된 신호를 생성할 수 있어 효과적인 필터링이 필요합니다.
스톱 로스 전략은 견고하지 않아, 지나치게 큰 스톱에 유연합니다.
매개 변수 최적화가 충분히 포괄적이지 않아서 제품마다 큰 성능 차이가 있습니다.
날짜 필터는 너무 딱딱해서 동적 조절이 필요해요
해결책:
시장을 옆으로 돌리는 것을 피하기 위해 동력 지표를 추가합니다.
가짜 크로스를 필터링하기 위해 가격 조건을 추가합니다.
합리적인 초기 및 후속 스톱 손실을 설정합니다.
제품별 테스트 파라미터, 동적 최적화
실시간 조건에 따라 필터 날짜를 조정합니다.
전략의 몇 가지 잠재적 인 개선 사항:
크로스오버 신호를 위한 볼륨 필터를 추가합니다.
다양한 제품에서 MACD 매개 변수 조합을 최적화합니다.
고정 또는 후속 스톱 손실과 같은 스톱 전략을 추가합니다.
시장 변동성에 따라 동적으로 스톱 로스를 조정합니다.
포지션 사이즈링을 위한 트렌드 강도를 추적합니다.
MACD DEMA 전략은 트렌드를 파악하기 위해 크로스오버를 사용하여 두 지표의 강점을 결합합니다. 그러나 MACD는 본질적으로 뒤쳐져 있습니다. 잘못된 신호에 주의하십시오. 또한 불합리한 청산을 피하기 위해 스톱을 최적화하십시오. 라이브 거래를 위해 최적화 된 매개 변수와 지속적인 개선에 기반한 신중한 진입이 권장됩니다.
/*backtest start: 2023-01-01 00:00:00 end: 2023-09-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(" MACD DEMA STRATEGY ", overlay=true) source=close price=source fastmacd = input(12,title='MACD Fast Line Length') slowmacd = input(26,title='MACD Slow Line Length') signalmacd = input(9,title='Signal Line Length') macdslowline1 = ema(close,slowmacd) macdslowline2 = ema(macdslowline1,slowmacd) DEMAslow = ((2 * macdslowline1) - macdslowline2 ) macdfastline1 = ema(close,fastmacd) macdfastline2 = ema(macdfastline1,fastmacd) DEMAfast = ((2 * macdfastline1) - macdfastline2) MACDLine = (DEMAfast - DEMAslow) SignalLine1 = ema(MACDLine, signalmacd) SignalLine2 = ema(SignalLine1, signalmacd) SignalLine = ((2 * SignalLine1) - SignalLine2 ) MACDSignal = SignalLine-MACDLine colorbar= MACDSignal>0?green:red yearfrom = input(2018) yearuntil =input(2019) monthfrom =input(1) monthuntil =input(12) dayfrom=input(1) dayuntil=input(31) if ( crossover(MACDLine,SignalLine) ) strategy.entry("MMAL", strategy.long, stop=close, oca_name="TREND", comment="AL") else strategy.cancel(id="MMAL") if ( crossunder(MACDLine,SignalLine) ) strategy.entry("MMSAT", strategy.short,stop=close, oca_name="TREND", comment="SAT") else strategy.cancel(id="MMSAT")