EMA 크로스오버 트레이딩 전략은 간단하면서도 효과적인 양적 거래 전략이다. 기하급수적인 이동 평균 (EMA) 과 크로스오버 신호를 활용하여 가격 추세를 파악하고 진입 및 출구 지점을 결정한다. 더 복잡한 전략에 비해 이해하기 쉽고 구현하기 쉽다.
핵심은 서로 다른 매개 변수와 함께 두 개의 EMA를 사용하는 데 있습니다. EMA1는 25 일, EMA2는 100 일로 설정됩니다. 단기 EMA가 장기 EMA를 넘으면 구매 신호입니다. 짧은 EMA가 긴 EMA를 넘으면 판매 신호입니다. 따라서, 짧은 EMA는 단기 가격 추세와 동력을 포착하고, 긴 EMA는 장기 추세를 반영합니다. 두 EMA가 형성 한
잘못된 신호를 필터링하기 위해 전략은 몇 가지 추가 기준을 설정합니다. 예를 들어, 상승 촛불 패턴 또는 50 RSI 수준 이상의 크로스오버가 필요합니다. 이것은 단기 소음으로 인한 잘못된 거래를 피합니다.
이 전략의 가장 큰 장점은 단순성과 직관성입니다. 수많은 매개 변수와 복잡한 논리를 가진 전략에 비해 훨씬 더 사용자 친화적입니다.
또한, 그것은 EMA 교차의 고전적인 기술 지표를 활용하여 단기 및 장기 시간 프레임에서 트렌드 변화를 포착하고 트렌드 반전을 식별하고 진입 및 출구를 결정하여 트렌드에 따라 거래합니다.
마지막으로, 잘못된 신호를 줄이고 시장 소음에 의해 잘못 인도되지 않도록 적절한 필터가 설정되어 있습니다. 이것은 변동적인 시장에서 전략의 안정적인 성과를 가능하게합니다.
주요 위험은 단기 및 장기 트렌드 사이의 분산입니다. 극적인 가격 변동은 크로스오버 신호를 유발할 수 있지만 장기 트렌드는 변하지 않고 거래 손실로 이어집니다. 또한 범위 제한 시장에서 종종 윙사 (whipsaws) 가 발생합니다.
부적절한 EMA 기간 설정은 또한 EMA의 대표력이 감소하여 경향과 역전을 파악하는 데 효과적이지 않기 때문에 전략 성과를 위태롭게 할 수 있습니다. 이것은 더 높은 위험을 도입합니다.
또한 지나치게 엄격한 필터는 잠재적인 거래 기회를 놓치게 하고 수익성을 저하시킬 수 있습니다.
KDJ, MACD 등과 같은 다른 지표와 결합하면 거래 신호를 확인하고 잘못된 신호를 피하는 데 도움이 될 수 있습니다.
최적의 EMA 기간을 찾기 위해 다양한 매개 변수 집합을 테스트하고 거래 빈도와 신뢰성을 균형있게 조정합니다.
동적 위치 사이징도 중요합니다. 예를 들어 두 EMA가 더 멀리 떨어져있을 때 더 큰 위치, 더 가까이있을 때 더 작습니다. 이것은 변화하는 시장 조건에 적응합니다.
EMA 크로스오버 전략은 간단하면서도 실용적인 양적 거래 전략이다. EMA 크로스오버 신호를 활용하여 단기 및 장기적인 트렌드와 함께 거래한다. 이해하기 쉽고 구현하기 쉽고 복잡성을 최소화하고 초보 트레이더에게 적합하다. 그러나 그 위험은 무시해서는 안 된다. 매개 변수 및 필터에 대한 추가 최적화는 다양한 시장에서 전략을 더 견고하게 만들 수 있다.
/*backtest start: 2023-11-11 00:00:00 end: 2023-12-11 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('EMA Crossover Signal', shorttitle='EMA Crossover Signal', overlay=true) // Define input for position size as a percentage of equity position_size_pct = input(1, title='Position Size (%)') / 100 //Input EMA len1 = input.int(25, minval=1, title='EMA 1') src1 = input(close, title='Source') ema1 = ta.ema(src1, len1) len2 = input.int(100, minval=1, title='EMA 2') src2 = input(close, title='Source') ema2 = ta.ema(src2, len2) //End of format //Format RSI lenrsi = input(14, title='RSI length') outrsi = ta.rsi(close,lenrsi) bodybar1 = math.abs(close - open) bodybar2 = math.abs(close[1] - open[1]) // Plot the EMAs plot(ema1, color=color.new(color.blue, 0), title='EMA 1') plot(ema2, color=color.new(color.red, 0), title='EMA 2') // EMA Crossover conditions emaCrossoverUp = ta.crossover(ema1, ema2) emaCrossoverDown = ta.crossunder(ema1, ema2) var entrybar = close // Initialize entrybar with the current close // Calculate crossovers outside of the if statements emaCrossoverUpOccured = ta.crossover(close, ema1) and ema1 > ema2 and bodybar1 > bodybar2 and close > entrybar emaCrossoverDownOccured = ta.crossunder(close, ema1) and ema1 < ema2 and bodybar1 > bodybar2 and close < entrybar plotshape(series=emaCrossoverUpOccured, location=location.abovebar, color=color.new(color.green, 0), style=shape.triangleup, title='New Buy Order', size=size.tiny) plotshape(series=emaCrossoverDownOccured, location=location.belowbar, color=color.new(color.red, 0), style=shape.triangledown, title='New Sell Order', size=size.tiny) if emaCrossoverUpOccured strategy.entry("Enter Long", strategy.long) else if emaCrossoverDownOccured strategy.entry("Enter Short", strategy.short)