MACD DEMA 거래 전략


생성 날짜: 2023-09-19 16:10:19 마지막으로 수정됨: 2023-09-19 16:10:19
복사: 0 클릭수: 1114
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

이 전략은 MACD와 DEMA 이중 레일 지표를 결합하여 다중 무선 금 叉死叉을 통해 거래 신호를 형성한다. 이 전략은 MACD 지표 전환 시기를 포착하여 DEMA 필터파를 사용하여 노이스를 제거하여 우수한 진입을 달성한다.

전략 원칙

  1. 패스트 라인 DEMAfast을 계산하고, 가격의 DEMA 값을 가져오며, 주기 길이는 fastmacd。

  2. 느린 DEMAslow를 계산하고, prices의 DEMA 값을 가져오며, 주기 길이는 slowmacd。

  3. MACD 라인은 빠른 느린 라인의 차치: DEMAfast - DEMAslow。

  4. Signal 라인은 MACD 라인의 DEMA 값이며, 주기 길이는 signalmacd。

  5. 다중공선 교차는 거래 신호로: 금포가 더하고, 사포가 빈다.

  6. 연월일 필터를 추가하여 지정된 날짜 범위 내에서만 신호를 발송한다.

우위 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. MACD와 DEMA를 결합하여, 지표가 상호 보완된다. MACD 캡처 전환, DEMA 필터파는 신호 품질을 향상시킨다.

  2. DEMA의 이중 경로 설계는 MACD 지표의 지연성과 소음을 줄일 수 있다.

  3. 다중공선 교차는 쉽게 판단할 수 있고, 신호는 간단하고 명확하게 생성된다.

  4. 거래 날짜 범위는 전략적 요구에 따라 조정할 수 있습니다.

  5. MACD 파라미터는 포괄적으로 최적화되어 다양한 상황에 대응할 수 있다.

위험 분석

이 전략의 주요 위험은 다음과 같습니다.

  1. MACD는 트렌드를 추적하는 지표로, 흔들리는 상장 시장에 적합하지 않다.

  2. 다중공간 교차는 가짜 신호를 생성할 수 있으며, 효과적인 필터링이 필요합니다.

  3. 하지만, 이 경우에도, 손실을 막는 전략은 완벽하지 않으며, 너무 큰 손실을 막는 것이 쉽다.

  4. 매개 변수 최적화가 완전하지 않고, 다양한 품종에 따라 효과가 크게 달라진다.

  5. 거래 날짜 필터가 너무 강해서 동적으로 조정해야 합니다.

대응방법:

  1. 동량 지표와 결합하여 가로판을 피하십시오.

  2. 가격 조건을 높이고 가짜 교차 신호를 필터링합니다.

  3. 합리적인 초기 스톱로스를 설정하고 추적 스톱로스를 설정합니다.

  4. 다중 품종 매개 변수 효과를 테스트하고, 동적 최적화.

  5. 실시간 상황에 따라 필터링 날짜를 조정합니다.

최적화 방향

이 전략은 다음과 같은 몇 가지 최적화를 고려할 수 있습니다.

  1. 거래량 지표를 늘리고 신호를 필터링한다.

  2. MACD 변수 조합을 최적화하고, 다양한 품종 데이터를 테스트한다.

  3. 고정된 스톱, 추적 스톱 등과 같은 스톱 전략을 설정하십시오.

  4. 시장의 변동에 따라 역동적으로 스톱 로즈를 조정한다.

  5. 트렌드를 추적하고, 포지션 크기를 조정한다.

요약하다

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")