이동평균 크로스오버 트렌드 전략은 이동평균 크로스오버 신호를 기반으로 하는 트렌드를 따르는 전략이다. 시장 트렌드를 결정하기 위해 빠르고 느린 이동평균의 황금 십자가와 죽음의 십자가를 사용하여 트렌드의 시작에서 포지션을 설정하고 트렌드 역전 신호가 나타나면 포지션을 닫는다.
이 전략은 트렌드의 시작과 끝을 식별하기 위해 MACD 히스토그램과 신호 라인의 크로스오버를 사용합니다. 구체적으로, 12 기간 빠른 EMA와 26 기간 느린 EMA를 기반으로 MACD 히스토그램을 구성합니다. 히스토그램이 신호 라인의 위를 넘을 때, 상승 추세의 시작을 나타내는 구매 신호가 생성됩니다. 히스토그램이 신호 라인의 아래를 넘을 때 판매 신호가 유발되며, 하락 추세의 시작을 표시합니다.
엔트리에서는 트렌드 시작의 초기 단계를 활용하기 위해 15 분 차트에서 구매 신호가 생성되면 전략이 길어집니다. 출구에서는 MACD 히스토그램이 4 시간 차트에서 신호 라인 아래에 넘어가면서 트렌드 반전을 신호하면 모든 포지션을 닫습니다.
이 전략의 가장 큰 장점은 트렌드 시작을 적시에 파악하고 반전 신호로 종료하여 좋은 리스크-상금 비율을 달성하는 것입니다. 주요 장점은 다음과 같습니다.
또한 다음과 같은 측면에서도 몇 가지 위험이 있습니다.
위험을 완화하기 위해 다음과 같은 최적화를 할 수 있습니다.
전략의 추가 최적화를 위한 주요 측면은 다음과 같습니다.
전체적으로, 이동 평균 크로스오버 트렌드 전략은 간단하고 실용적인 트렌드 다음 시스템이다. 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)