이 전략은 상거래 신호로 서로 다른 기간을 가진 두 개의 기하급수적인 이동 평균 (EMA) 의 교차를 사용하여 고정 포인트 스톱 손실을 설정하고 수익 수준을 취합니다. 단기 EMA가 장기 EMA를 넘을 때 긴 포지션을 개척합니다. 단기 EMA가 장기 EMA를 넘을 때 짧은 포지션을 개척합니다. 전략은 위험을 제어하고 이익을 잠금하기 위해 고정 포인트 스톱 손실을 설정하고 수익 수준을 취합니다.
이중 이동 평균 크로스오버 스톱 로스 앤 트레이프 전략은 EMA 크로스오버를 통해 트레이딩 신호를 생성하면서 일정한 지점 스톱 로스를 설정하고 리스크를 제어하기 위해 수익 수준을 취하는 간단하고 사용하기 쉬운 거래 전략이다. 전략의 장점은 명확한 논리, 쉬운 구현 및 시장 트렌드를 효과적으로 포착하는 능력에 있다. 그러나 잘못된 신호, 트렌드 지연, 범위 제한 시장 및 일정한 스톱 로스 수준과 같은 위험도 직면한다. 최적화 방향은 더 많은 지표, 최적화 매개 변수, 동적 스톱 로스, 위치 관리 및 필터를 추가하는 것을 포함한다. 트레이더는 전략의 안정성과 수익성을 향상시키기 위해 자신의 위험 선호도와 시장 특성에 따라 전략을 최적화하고 조정할 수 있다.
/*backtest start: 2024-05-01 00:00:00 end: 2024-05-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA5 Cross EAM200 && SL/TP 50 and 200 Point Target", overlay=true) // Define input parameters for EMA lengths ema_5 = input.int(5, title="Fast EMA Length") ema_200 = input.int(200, title="Slow EMA Length") // Define input parameters for stop loss and profit target in points stopLossPoints = input.float(50, title="Stop Loss (Points)") profitTargetPoints = input.float(200, title="Profit Target (Points)") // Calculate EMAs price = close emafast = ta.ema(price, ema_5) emaslow = ta.ema(price, ema_200) // Plot EMAs on chart plot(emafast, title="5-period EMA", color=color.black) plot(emaslow, title="200-period EMA", color=color.blue) // Extra lines if needed ema_13 = input.int(13, title="13 EMA") ema_13_line = ta.ema(price, ema_13) plot(ema_13_line, title="13-period EMA", color=color.rgb(156, 39, 176, 90)) ema_20 = input.int(20, title="20 EMA") ema_20_line = ta.ema(price, ema_20) plot(ema_20_line, title="20-period EMA", color=color.red) // Define entry conditions longCondition = ta.crossover(emafast, emaslow) shortCondition = ta.crossunder(emafast, emaslow) // Counter to keep track of the number of bars since the entry var int barCount = na // Reset counter and enter long trade if (longCondition) strategy.entry("Long", strategy.long, comment="Long") barCount := 0 // Reset counter and enter short trade if (shortCondition) strategy.entry("Short", strategy.short, comment="Short") barCount := 0 // Increment counter if in trade if (strategy.opentrades > 0) barCount += 1 // Calculate entry price entryPrice = strategy.position_avg_price // Exit long trade if stop loss, profit target hit, or 200 points have been reached if (strategy.position_size > 0) strategy.exit("Take Profit/Stop Loss", "Long", stop=entryPrice - stopLossPoints, limit=entryPrice + profitTargetPoints) // Exit short trade if stop loss, profit target hit, or 200 points have been reached if (strategy.position_size < 0) strategy.exit("Take Profit/Stop Loss", "Short", stop=entryPrice + stopLossPoints, limit=entryPrice - profitTargetPoints)