이 전략은 15주기 및 50주기 기하급수적 이동 평균 (EMA) 의 교차를 기반으로 하는 거래 전략이다. 전략은 위험 보상 통제를 최적화하기 위해 지능적인 스톱 로스 및 영리 레벨을 구현한다. 트렌드 역전 신호를 캡처할 뿐만 아니라 시장 변동성에 따라 자동으로 거래 매개 변수를 조정하여 전략 안정성과 수익성을 향상시킨다.
핵심 논리는 빠른 EMA (15 기간) 와 느린 EMA (50 기간) 사이의 교차 신호를 기반으로합니다. 빠른 선이 느린 선 위에 넘어가면 긴 신호가 생성되고 빠른 선이 아래에 넘어가면 짧은 신호가 생성됩니다. 리스크 관리 최적화를 위해 전략은 역동적 인 스톱 로스 설정 방법을 사용합니다. 이전 2 개의 촛불 중 가장 낮은 오픈 가격을 긴 스톱 로스로 사용하고 가장 높은 오픈 가격을 짧은 스톱 로스로 사용합니다. 이윤 목표가 위험의 두 배로 설정되어 유리한 리스크 보상 비율을 보장합니다. 전략은 거래에 계정 자본의 30%를 사용합니다. 이는 위험 노출을 제어하는 데 도움이됩니다.
이 전략은 명확한 논리를 가진 잘 구성된 EMA 크로스오버 전략이다. 고전적인 기술 분석 방법과 현대적인 위험 관리 기술을 결합함으로써 전략은 유리한 위험 보상 특성을 달성한다. 최적화에 대한 여지가 있지만 기본 프레임워크는 좋은 실용성과 확장성을 보여준다. 제안된 최적화 방향을 통해 전략의 성능을 더욱 향상시킬 수 있다.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-11 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Cross - Any Direction", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=30) // Input for EMAs ema_short_length = input(15, title="Short EMA Length") ema_long_length = input(50, title="Long EMA Length") // Calculate EMAs ema_short = ta.ema(close, ema_short_length) ema_long = ta.ema(close, ema_long_length) // Plot EMAs plot(ema_short, color=color.blue, title="15 EMA") plot(ema_long, color=color.red, title="50 EMA") // Entry Conditions (Any EMA Cross) cross_condition = ta.crossover(ema_short, ema_long) or ta.crossunder(ema_short, ema_long) // Determine Trade Direction is_long = ta.crossover(ema_short, ema_long) is_short = ta.crossunder(ema_short, ema_long) // Stop Loss and Take Profit long_stop_loss = ta.lowest(open[1], 2) // Lowest open of the last 2 candles short_stop_loss = ta.highest(open[1], 2) // Highest open of the last 2 candles long_take_profit = close + 2 * (close - long_stop_loss) short_take_profit = close - 2 * (short_stop_loss - close) // Execute Trades if (cross_condition) if (is_long) strategy.entry("Long", strategy.long) strategy.exit("Exit Long", "Long", stop=long_stop_loss, limit=long_take_profit) else if (is_short) strategy.entry("Short", strategy.short) strategy.exit("Exit Short", "Short", stop=short_stop_loss, limit=short_take_profit) // Plot Stop Loss and Take Profit Levels plot(long_stop_loss, color=color.orange, title="Long Stop Loss", style=plot.style_circles, linewidth=2) plot(long_take_profit, color=color.green, title="Long Take Profit", style=plot.style_circles, linewidth=2) plot(short_stop_loss, color=color.orange, title="Short Stop Loss", style=plot.style_circles, linewidth=2) plot(short_take_profit, color=color.red, title="Short Take Profit", style=plot.style_circles, linewidth=2)