이중 EMA 크로스오버 거래 전략은 시장 트렌드를 결정하고 거래를하기 위해 서로 다른 길이의 두 EMA의 크로스오버를 사용하는 트렌드 다음 전략입니다. 이 간단하고 직설적인 전략은 중장기 트렌드를 효과적으로 추적 할 수 있으며 스윙 트레이더에게 매우 적합합니다.
이 전략은 주로 단기 및 장기 EMA의 값과 교차를 사용하여 트렌드 방향을 결정합니다. 먼저 단기 EMA (예를 들어 13 기간) 및 장기 EMA (예를 들어 26 기간) 를 계산하고 두 EMA 사이의 비율 교차를 계산합니다. 짧은 EMA가 긴 EMA보다 높고 교차가 한 임계 (예를 들어 5%) 보다 크면 상승 추세를 신호하고 긴 거래를 취합니다. 짧은 EMA가 긴 EMA보다 낮고 교차가 임계보다 크면 하락 추세를 신호하고 짧은 거래를 취합니다. 가격이 다시 EMA보다 높거나 낮을 때 거래가 종료됩니다.
핵심 논리는
이는 전략이 중장기 트렌드를 효과적으로 추적하고 트렌드가 변할 때 방향을 변경할 수 있게 해줍니다. 크로스오버 임계점은 또한 트렌드가 아닌 기간 동안 불필요한 거래를 피합니다.
위험은 다음과 같이 감소 할 수 있습니다.
이 전략은 다음과 같은 분야에서 강화될 수 있습니다.
최적의 EMA 기간과 임계값을 찾기 위해 백테스팅을 통한 매개 변수 최적화
트렌드 필터링 MACD, 볼링거 밴드와 같은 추가 지표를 사용하여 휘프사우를 피합니다.
손실을 제한하기 위해 후속 중지 또는 시간 기반 중지와 같은 손실 중지 전략
스톱 로스를 이동하여 히트 후 부분 이윤을 잠금함으로써 수익을 취하는 것
기계 학습을 사용하여 수량적 최적화
소모율을 낮추고 안정성을 높이기 위해 상관관계가 없는 전략과 결합하여 포트폴리오 최적화
매개 변수 최적화, 더 나은 필터, 스톱 로스, 이윤 취득, 그리고 양적 및 포트폴리오 최적화를 통해 전략은 더 견고하고 적응력 있고 과학적으로 효과적입니다.
이중 EMA 크로스오버는 스윙 트레이딩에 적합한 간단하고 직접적인 트렌드 다음 전략이다. 중장기 트렌드 트레이딩에 이상적으로 트렌드 방향을 결정하기 위해 두 개의 EMA만 필요합니다. 이 전략은 또한 매개 변수 조정, 더 나은 필터, 스톱 로스 및 기타 양적 최적화를 통해 강화 될 수 있습니다. 구현하고 최적화하는 것이 쉽기 때문에 권장되는 트렌드 트레이딩 전략입니다.
/*backtest start: 2023-08-19 00:00:00 end: 2023-08-23 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("2-EMA Strategy", overlay=true, initial_capital=100, currency="USD", default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075) diffMinimum = input(0.95, step=0.01) small_ema = input(13, title="Small EMA") long_ema = input(26, title="Long EMA") ema1 = ema(close, small_ema) ema2 = ema(close, long_ema) orderCondition = ema1 > ema2?((ema1/ema2)*100)-100 > diffMinimum:((ema2/ema1)*100)-100 > diffMinimum longCondition = close > ema1 and ema1 > ema2 if (longCondition and orderCondition) strategy.entry("Long", strategy.long) shortCondition = close < ema1 and ema1 < ema2 if (shortCondition and orderCondition) strategy.entry("Short", strategy.short) strategy.close("Short", when=close > ema1) strategy.close("Long", when=close < ema1) plot(ema(close, small_ema), title="EMA 1", color=green, transp=0, linewidth=2) plot(ema(close, long_ema), title="EMA 2", color=orange, transp=0, linewidth=2)