이동 평균 크로스오버 트렌드 전략

저자:차오장, 날짜: 2024-02-28 17:55:28
태그:

img

전반적인 설명

이동평균 크로스오버 트렌드 전략은 이동평균 크로스오버 신호를 기반으로 하는 트렌드를 따르는 전략이다. 시장 트렌드를 결정하기 위해 빠르고 느린 이동평균의 황금 십자가와 죽음의 십자가를 사용하여 트렌드의 시작에서 포지션을 설정하고 트렌드 역전 신호가 나타나면 포지션을 닫는다.

원칙

이 전략은 트렌드의 시작과 끝을 식별하기 위해 MACD 히스토그램과 신호 라인의 크로스오버를 사용합니다. 구체적으로, 12 기간 빠른 EMA와 26 기간 느린 EMA를 기반으로 MACD 히스토그램을 구성합니다. 히스토그램이 신호 라인의 위를 넘을 때, 상승 추세의 시작을 나타내는 구매 신호가 생성됩니다. 히스토그램이 신호 라인의 아래를 넘을 때 판매 신호가 유발되며, 하락 추세의 시작을 표시합니다.

엔트리에서는 트렌드 시작의 초기 단계를 활용하기 위해 15 분 차트에서 구매 신호가 생성되면 전략이 길어집니다. 출구에서는 MACD 히스토그램이 4 시간 차트에서 신호 라인 아래에 넘어가면서 트렌드 반전을 신호하면 모든 포지션을 닫습니다.

이점 분석

이 전략의 가장 큰 장점은 트렌드 시작을 적시에 파악하고 반전 신호로 종료하여 좋은 리스크-상금 비율을 달성하는 것입니다. 주요 장점은 다음과 같습니다.

  1. 트렌드 식별을 위해 MACD를 사용하는 것은 높은 승률으로 신뢰할 수 있습니다.
  2. 15분과 4시간의 시간 프레임을 결합하면 빈도와 위험 통제가 균형을 이루게 됩니다.
  3. 적시에 스톱 로드는 최대 드래운드를 효과적으로 제한합니다.

위험 분석

또한 다음과 같은 측면에서도 몇 가지 위험이 있습니다.

  1. MACD는 잘못된 신호를 생성하여 불필요한 입력 또는 중지로 이어질 수 있습니다.
  2. 스톱 로즈 포인트는 시장 변동에 적응하기에는 너무 무분별할 수 있습니다.
  3. 잘못된 매개 변수 선택은 전략의 효과를 약화 할 수 있습니다.

위험을 완화하기 위해 다음과 같은 최적화를 할 수 있습니다.

  1. 잘못된 신호를 피하기 위해 다른 표시기와 필터를 추가
  2. 스톱 로스 포인트의 적응 조정
  3. 매개 변수 조정

최적화 방향

전략의 추가 최적화를 위한 주요 측면은 다음과 같습니다.

  1. 신호를 필터링하기 위해 RSI, 볼링거 밴드 같은 다른 지표를 통합
  2. 최적의 매개 변수를 위해 더 빠르고 느린 기간 조합을 테스트
  3. 최적의 매개 변수를 훈련하기 위해 기계 학습을 활용합니다.
  4. 후속 또는 부분적 중지로 손실 중지 규칙을 최적화
  5. 다중 시간 프레임 조합을 위해 더 많은 시간 프레임으로 확장

결론

전체적으로, 이동 평균 크로스오버 트렌드 전략은 간단하고 실용적인 트렌드 다음 시스템이다. MACD 크로스오버를 사용하여 시작과 끝을 식별하고 단기 및 장기 포지션을 결합하여 트렌드를 활용합니다. 이점은 적시에 입력, 효과적인 정지 및 균형 잡힌 위험 보상입니다. 다음 단계는 매개 변수 최적화, 신호 필터링 등을 통해 안정성과 수익성을 향상시키는 것입니다.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Moving Average Convergence Divergence", shorttitle="MACD", overlay=true)

// Getting inputs
fast_length = input(title="Fast Length", defval=12)
slow_length = input(title="Slow Length", defval=26)
src = input(title="Source", defval=close)
signal_length = input.int(title="Signal Smoothing", minval=1, maxval=50, defval=9)
sma_source = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"])
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"])

// Calculating MACD
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal_line = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)

// Entry conditions
longCondition = macd < 0 and ta.crossover(macd, signal_line) 
shortCondition = ta.crossover(signal_line, macd) 

// Plot signals
plotshape(series=longCondition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")
plotshape(series=shortCondition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")

// Strategy
if (longCondition)
    strategy.entry("Long", strategy.long)
if (shortCondition)
    strategy.entry("Short", strategy.short)


더 많은