이 전략은 여러 가지 기하급수적 이동 평균 (EMA) 크로스오버를 기반으로하는 트렌드 다음 전략이다. 이 전략은 시장 트렌드를 파악하고 조건이 충족되면 긴 / 짧은 거래를 수행하기 위해 10 기간 단기 EMA, 50 기간 중기 EMA 및 200 기간 장기 EMA 사이의 교차 관계를 활용합니다. 핵심 아이디어는 여러 시간 프레임 이동 평균을 통해 시장 소음을 필터링하고 주요 트렌드 방향을 식별하고 트렌드 지속 중에 이익을 캡처하는 것입니다.
이 전략은 신호 생성 메커니즘으로 삼중 EMA 교차 시스템을 사용합니다. 구체적으로: 1. 200주기 EMA를 주요 트렌드 지표로 사용하며, 이보다 더 높은 긴 포지션과 이보다 낮은 짧은 포지션을만 취합니다. 2. 단기 EMA (10 기간) 가 중기 EMA (50 기간) 를 넘고 가격이 장기 EMA를 넘을 때 긴 포지션을 개설합니다. 3. 단기 EMA가 중기 EMA를 넘어서고 가격이 장기 EMA를 넘어서면 짧은 포지션을 개설합니다. 4. 단기 EMA가 중기 EMA를 넘을 때 긴 포지션을 닫습니다. 5. 단기 EMA가 중기 EMA를 넘을 때 단기 포지션을 닫습니다. 이 전략에는 비정상적인 EMA 크로스오버와 관계를 모니터링하는 디버깅 기능이 포함됩니다.
이 전략은 트렌드를 따르는 고전적인 시스템으로 여러 EMA를 사용하여 적시에 수익을 취하고 스톱-러스를 유지하면서 주요 트렌드를 캡처하는 것을 보장합니다. 일부 내재적인 지연이 있지만 합리적인 매개 변수 설정과 위험 관리는 여전히 트렌딩 시장에서 안정적인 수익을 창출 할 수 있습니다. 전략은 추가 기술 지표와 정교한 거래 규칙을 도입함으로써 상당한 최적화 잠재력을 가지고 있습니다.
/*backtest start: 2024-12-10 00:00:00 end: 2025-01-09 00:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy("EMA Crossover Strategy (Enhanced Debug)", overlay=true) // Inputs for EMA periods shortEMA = input.int(10, title="Short EMA Period") mediumEMA = input.int(50, title="Medium EMA Period") longEMA = input.int(200, title="Long EMA Period") // Calculating EMAs emaShort = ta.ema(close, shortEMA) emaMedium = ta.ema(close, mediumEMA) emaLong = ta.ema(close, longEMA) // Plot EMAs plot(emaShort, color=color.green, title="Short EMA") plot(emaMedium, color=color.blue, title="Medium EMA") plot(emaLong, color=color.red, title="Long EMA") // Conditions for entry and exit longCondition = close > emaLong and ta.crossover(emaShort, emaMedium) and emaMedium > emaLong shortCondition = close < emaLong and ta.crossunder(emaShort, emaMedium) and emaMedium < emaLong closeLongCondition = ta.crossunder(emaShort, emaMedium) closeShortCondition = ta.crossover(emaShort, emaMedium) // Debugging labels for unexpected behavior if (ta.crossover(emaShort, emaLong) and not ta.crossover(emaShort, emaMedium)) label.new(bar_index, high, "Short > Long", style=label.style_circle, color=color.red, textcolor=color.white) // Debugging EMA relationships if (emaMedium <= emaLong) label.new(bar_index, high, "Medium < Long", style=label.style_cross, color=color.orange, textcolor=color.white) // Entry logic if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) // Exit logic if (closeLongCondition) strategy.close("Long") if (closeShortCondition) strategy.close("Short") // Display labels for signals plotshape(series=longCondition, style=shape.labelup, color=color.green, location=location.belowbar, title="Buy Signal") plotshape(series=shortCondition, style=shape.labeldown, color=color.red, location=location.abovebar, title="Sell Signal")