모멘텀 반전 이동 평균 교차 전략


생성 날짜: 2023-12-21 11:21:49 마지막으로 수정됨: 2023-12-21 11:21:49
복사: 1 클릭수: 584
avatar of ChaoZhang ChaoZhang
1
집중하다
1623
수행원

모멘텀 반전 이동 평균 교차 전략

개요

이 전략은 MACD 지표에 기반한 역동 역전 거래 전략이다. 그것은 빠른 이동 평균과 느린 이동 평균의 차이를 계산하여 MACD 지표를 생성한다. MACD 지표가 긍정적으로 전환하면 판매 신호를 생성하고 MACD 지표가 부정적으로 수정하면 구매 신호를 생성한다. 이 전략은 동시에 MACD 지표의 신호 라인을 평형화하고 노이즈 거래 신호를 필터링한다.

전략 원칙

이 전략의 핵심 지표는 MACD이며, 그것은 빠른 이동 평균, 느린 이동 평균 및 신호 라인을 포함한다. 먼저 빠른 EMA와 느린 EMA를 계산하고, 빠른 EMA 파라미터를 12일, 느린 EMA 파라미터를 26일로 설정하고, 두 가지의 차이를 MACD 지표로 계산합니다. MACD 지표는 동력 개념을 통해 주가 변화의 흐름을 반영하며, 빠른 EMA의 상승률이 느린 EMA보다 크면 주가가 상승 추세에 있다는 것을 나타냅니다. MACD는 긍정적입니다. 반대로 주가가 하락 추세에 있으면 MACD는 부정적입니다.

노이즈를 필터링하기 위해, 이 전략은 신호선 지표를 도입하여 MACD에 대한 추가적인 부드러운 처리를 한다. 신호선 파라미터는 9일 EMA로 설정된다. 마지막으로, MACD와 신호선의 차이는 거래 신호로 계산된다. 차이는 긍정적으로 또는 부정적으로 변하면 판매 신호를 발생시키고, 차이는 부정적으로 또는 부정적으로 또는 부정적으로 변하면 구매 신호를 발생시킨다.

우위 분석

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

  1. MACD 지표는 주가 반전점을 판단하여 주가 반전의 단기 기회를 잡을 수 있다.

  2. 신호선을 부드럽게 처리하여, 일부 노이즈 트랜지션 신호를 필터링하여, 가짜 신호를 줄인다.

  3. 전략 파라미터는 자유로이 설정되며, 거래자는 실제 상황에 따라 파라미터를 조정할 수 있으며, 시장 변화에 유연하게 대응한다.

  4. 계산 논리는 간단하고 명확하며, 이해하기 쉬운 구현으로, 초보자 학습 연구에 적합하다.

  5. 지표와 신호의 조합은 다양하고, 전략적 최적화 공간은 넓고, 확장성이 강하다.

위험 분석

이 전략에는 몇 가지 위험도 있습니다.

  1. 거래 빈도 및 거래 비용이 증가할 수 있습니다.

  2. MACD 지표는 주가 가격의 장기간 단면 상승 또는 하락 과정에서 가짜 신호를 발생시킬 수 있다.

  3. 만약 변수가 잘못되면 신호가 지연되어 최적의 입구 지점을 놓칠 수 있다.

  4. 이 전략은 단순하지만 복잡한 시장 조건에서 거래 효과는 하락한다.

위와 같은 위험에는 다음과 같은 방법으로 개선할 수 있습니다.

  1. 최적화 매개 변수, 거래 주파수를 낮추기 위한 매개 변수. 예를 들어, 신호선 주기 변수를 확대하기 위한 매개 변수

  2. 필터링 조건을 추가하여 장기 트렌드에 갇히지 않도록하십시오. 예를 들어, 다른 추적 지표와 결합하여 장기 단기 트렌드를 판단하십시오.

  3. 가장 좋은 가격을 추적하기 위해 제한된 가격표를 사용하세요.

  4. 시장의 상태를 판단하는 요소를 추가하여 비정상적인 시장에서 거래하는 것을 피하십시오.

최적화 방향

이 정책은 다음과 같은 측면에서 최적화될 수 있습니다.

  1. MACD 변수와 신호선 변수를 최적화하여 최적의 변수 조합을 찾습니다.

  2. 다른 보조 지표를 추가하여 장기 단기 경향을 판단하고 역전 거래를 피하십시오. 이동 평균 지표, 볼링거 밴드 지표 등이 포함됩니다.

  3. 거래량 지표와 결합하여, 예를 들어 에너지 유조 지표와 함께, 가짜 돌파구를 피하십시오.

  4. 다른 주식 특성에 따라 파라미터를 설정하여 전략을 더 적응시킬 수 있습니다.

  5. 단위 손실과 수익 수준을 제어하기 위해 스톱 로즈와 스톱 가격 설정을 늘리십시오.

  6. 재무 지표, 등급 변화 등으로 주식의 품질을 평가하고 우수한 주식 풀을 선택하십시오.

이러한 최적화 조치는 전략의 안정성, 승률 및 수익성을 높일 수 있습니다. 또한 전략의 지속적인 개발 및 개선을 위한 토대를 마련할 수 있습니다.

요약하다

이 전략은 전형적인 단기 반전 거래 전략이다. 그것은 간단한 명확한 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)