이 전략은 MACD 지표에 기반한 모멘텀 역전 거래 전략이다. 빠른 이동 평균선과 느린 이동 평균선 사이의 차이를 계산하여 MACD 지표를 생성한다. MACD 지표가 긍정적에서 부정으로 전환되면 판매 신호가 생성된다. MACD 지표가 부정에서 긍정으로 전환되면 구매 신호가 생성된다. 이 전략은 또한 일부 소란한 거래 신호를 필터링하기 위해 추가 매끄럽게하기 위해 MACD 지표의 신호선을 통합한다.
이 전략의 핵심 지표는 빠른 이동 평균, 느린 이동 평균 및 신호 라인으로 구성된 MACD입니다. 먼저 12 일 기간의 빠른 EMA와 26 일 기간의 느린 EMA가 계산되고, 그 다음 그 사이의 차이는 MACD 지표로 계산됩니다. MACD 지표는 모멘텀 개념을 기반으로 가격 변화의 추세를 반영합니다. 빠른 EMA가 느린 EMA보다 더 빨리 상승하면 가격의 상승 추세를 나타냅니다. MACD는 긍정적입니다. 반대로 주가 추세가 하락하면 MACD는 부정적입니다.
소음을 필터하기 위해, 이 전략은 MACD를 추가로 매끄럽게하기 위해 신호 라인 지표를 도입한다. 신호 라인 매개 변수는 9 일 EMA로 설정된다. 마지막으로, MACD와 신호 라인 사이의 차이는 거래 신호로 계산된다. 차이는 긍정적에서 부정적으로 변할 때 판매 신호가 생성된다. 차이는 부정적에서 긍정적으로 변할 때 구매 신호가 생성된다.
이 전략의 주요 장점은 다음과 같습니다.
MACD 지표를 사용하여 가격 반전 지점을 결정하면 주식 가격의 단기 반전 기회를 파악할 수 있습니다.
신호 라인 평형화를 포함하면 소란스러운 거래 신호를 필터링하고 잘못된 신호를 줄입니다.
유연한 매개 변수 설정은 거래자가 실제 시장 조건에 따라 매개 변수를 조정할 수 있습니다.
논리는 간단하고 명확하고, 이해하기 쉽고 실행하기 쉽고, 초보자가 배우고 연구하기에 적합합니다.
지표와 신호의 다양한 조합은 전략 최적화와 강력한 확장성을위한 큰 공간을 제공합니다.
이 전략에는 몇 가지 위험도 있습니다.
단기 회귀를 추적하는 것은 거래 빈도와 거래 비용을 증가시킬 수 있습니다.
MACD 지표는 장기적인 일방적인 가격 상승이나 하락 시 쉽게 잘못된 신호를 생성 할 수 있습니다.
부적절한 매개 변수 설정으로 인한 신호 생성 지연은 가장 좋은 입구 지점을 놓칠 수 있습니다.
이 비교적 간단한 전략은 복잡한 시장 조건에서 낮은 성과를 낼 수 있습니다.
위의 위험을 완화하기 위해 다음과 같은 방법으로 개선 할 수 있습니다.
거래 빈도를 줄이기 위해 매개 변수를 최적화합니다. 예를 들어 신호 라인 주기를 증가시킵니다.
장기 트렌드에 갇히지 않도록 필터링 조건을 추가합니다. 예를 들어 장기 및 단기 트렌드를 결정하기 위해 다른 추적 지표를 결합하십시오.
최적의 가격을 추적하기 위해 제한 주문을 사용하세요.
시장 조건을 결정하고 비정상적인 시장에서 거래를 피하기 위해 더 많은 요소를 추가하십시오.
이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
MACD 매개 변수와 신호 라인 매개 변수를 최적화하여 최적의 매개 변수 조합을 찾습니다.
다른 보조 지표를 추가하여 장기 및 단기 트렌드를 결정하고 트렌드에 반하는 거래를 피하십시오. 예를 들어 이동 평균, 볼링거 밴드 등.
거래량 표시를 포함합니다. 예를 들어, false breakouts를 피하기 위해 On Balance Volume를 포함합니다.
다양한 주식 특성에 따라 매개 변수를 설정하여 전략을 더 적응력있게 만듭니다.
스톱 로스 및 수익 가격 설정을 추가하여 단일 손실 및 수익 수준을 제어합니다.
재무 지표, 등급 변화 등과 같은 주식 품질 요인을 평가하고 최적의 주식 풀을 선택하십시오.
이러한 최적화 조치는 전략의 안정성, 승률 및 수익 수준을 향상시킬 수 있습니다. 또한 지속적인 전략 개발 및 개선의 기초를 마련합니다.
이것은 전형적인 단기 반전 거래 전략이다. 그것은 간단하고 명확한 MACD 지표를 사용하여 특정 입구 지점을 결정하기 위해 주식 추진력과 신호 라인의 변화를 반영합니다. 적절한 매개 변수 설정을 사용하면 과도한 수익을 얻기 위해 단기 가격 반전 기회를 잡을 수 있습니다.
물론, 단일 지표와 간단한 전략은 다양한 복잡한 시장 조건에 완벽하게 적응할 수 없습니다. 투자자는 위험에주의를 기울이고 자신의 조건과 위험 욕구에 따라 전략을 선택해야합니다. 한편, 그들은 또한 시장 조건을 관찰하고 전략 매개 변수와 거래 규칙을 최적화해야합니다. 지속적인 학습과 개선으로만 장기적으로 안정적인 투자 수익을 얻을 수 있습니다.
/*backtest start: 2023-11-20 00:00:00 end: 2023-12-20 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //study(title="MACD Strategy by Sedkur", shorttitle="MACD Strategy by Sedkur") strategy (title="MACD Strategy by Sedkur", shorttitle="MACD Strategy by Sedkur") // Getting inputs dyear = input(title="Year", type=input.integer, defval=2017, minval=1950, maxval=2500) fast_length = input(title="Fast Length", type=input.integer, defval=12) slow_length = input(title="Slow Length", type=input.integer, defval=26) buyh = input(title="Buy histogram value", type=input.float, defval=0.0, minval=-1000, maxval=1000, step=0.1) sellh = input(title="Sell histogram value", type=input.float, defval=0.0, minval=-1000, maxval=1000, step=0.1) src = input(title="Source", type=input.source, defval=close) signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9) sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false) sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false) // Plot colors col_grow_above = #26A69A col_grow_below = #FFCDD2 col_fall_above = #B2DFDB col_fall_below = #EF5350 col_macd = #0094ff col_signal = #ff6a00 // Calculating fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length) slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length) hist = macd - signal plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 ) plot(macd, title="MACD", color=col_macd, transp=0) plot(signal, title="Signal", color=col_signal, transp=0) strategy.entry("buy", strategy.long, comment="buy", when = hist[1] <= hist and buyh<=hist and year>=dyear) strategy.entry("sell", strategy.short, comment="sell", when = hist[1] >= hist and sellh>=hist and year>=dyear)