이 전략은 트리플 익스포넌셜 모빙어워드 (EMA) 크로스오버 신호를 기반으로하는 트렌드를 따르는 전략이다. 이 전략은 9주기, 15주기 및 50주기 EMA를 결합하여 단기 및 중기 EMA 사이의 크로스오버 신호를 활용하면서 장기 EMA를 트렌드 필터로 사용하고, 위험 관리에 대한 동적 스톱 로스 및 영리 메커니즘과 결합합니다. 이 전략 설계는 트렌드 추적 및 위험 관리 요구 사항을 모두 완전히 고려하여 중장기 거래에 적합합니다.
핵심 논리는 9주기 및 15주기 EMA 사이의 교차 신호를 모니터링하는 데 의존하며 50주기 EMA를 트렌드 확인 지표로 사용합니다. 구체적으로:
이것은 명확한 논리를 가진 잘 설계된 트렌드-추천 전략이다. 여러 EMA의 조합은 효과적인 트렌드 추천을 달성하는 동시에 신호 신뢰성을 보장한다. 내장된 위험 관리 메커니즘은 전략 운영에 안정성을 제공합니다. 제안된 최적화 방향을 통해 추가 개선의 여지가 있습니다. 전략은 안정적인 수익을 추구하는 거래자에게 적합하지만 구현하기 전에 특정 시장 특성에 대한 철저한 테스트와 매개 변수 최적화가 필요합니다.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-27 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Crossover Strategy with 50 EMA Filter", overlay=true) // Customizable Inputs ema9Length = input(9, title="EMA 9 Length") ema15Length = input(15, title="EMA 15 Length") ema50Length = input(50, title="EMA 50 Length") stopLossPoints = input(100, title="Stop Loss Points") takeProfitPoints = input(200, title="Take Profit Points") // Calculate EMAs ema9 = ta.ema(close, ema9Length) ema15 = ta.ema(close, ema15Length) ema50 = ta.ema(close, ema50Length) // Detect crossovers crossover_above = ta.crossover(ema9, ema15) crossover_below = ta.crossunder(ema9, ema15) // Plot EMAs plot(ema9, color=color.blue, title="EMA 9") plot(ema15, color=color.red, title="EMA 15") // Make the 50 EMA invisible plot(ema50, color=color.new(color.white, 100), title="EMA 50", display=display.none) // Plot buy and sell signals as shapes plotshape(crossover_above and close > ema50, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small) plotshape(crossover_below and close < ema50, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small) // Execute trades if (crossover_above and close > ema50) strategy.entry("Buy", strategy.long) if (crossover_below and close < ema50) strategy.close("Buy") // Apply stop loss and take profit if (crossover_above and close > ema50) strategy.exit("Exit", from_entry="Buy", loss=stopLossPoints, profit=takeProfitPoints) // Alerts for notifications if (crossover_above and close > ema50) alert("EMA 9 crossed above EMA 15 with price above EMA 50 - Buy Signal", alert.freq_once_per_bar_close) if (crossover_below and close < ema50) alert("EMA 9 crossed below EMA 15 with price below EMA 50 - Sell Signal", alert.freq_once_per_bar_close)