이 전략은 다중 기하급수적 이동 평균 (EMA) 및 평균 진실 범위 (ATR) 를 기반으로 한 트렌드 다음 거래 시스템입니다. 여러 EMA 정렬을 통해 트렌드 방향을 확인하고, 상승 추세에서 인하 기회를 찾고, 동적 인 스톱 로스 및 수익 목표를 위해 ATR을 사용합니다. 이 접근법은 시장 변동성에 동적으로 적응하면서 트렌드 다음 안정성을 보장합니다.
핵심 논리는 다음의 핵심 요소들을 포함합니다.
이것은 잘 구성되어 있고 논리적으로 엄격한 트렌드 추후 전략이다. 여러 EMA 트렌드 확인, 풀백 엔트리, 그리고 ATR 기반의 동적 리스크 관리의 조합은 탄력성과 적응성을 모두 보장한다. 내재적인 위험이 존재하지만 제안된 최적화는 전략의 안정성과 수익성을 더욱 향상시킬 수 있다. 이 전략은 중장기 트렌드를 추적하는 데 특히 적합하며 트렌딩 시장에서 일관된 수익을 추구하는 트레이더들에게 확실한 선택이다.
/*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 and ATR Target Strategy", overlay=true) // Input parameters emaShortLength = 20 emaMidLength1 = 50 emaMidLength2 = 100 emaLongLength = 200 atrLength = 14 // Calculate EMAs ema20 = ta.ema(close, emaShortLength) ema50 = ta.ema(close, emaMidLength1) ema100 = ta.ema(close, emaMidLength2) ema200 = ta.ema(close, emaLongLength) ema21 = ta.ema(close, 21) // Calculate ATR atr = ta.atr(atrLength) // Conditions for the strategy emaCondition = ema20 > ema50 and ema50 > ema100 and ema100 > ema200 pullbackCondition = close <= ema21 and close >= ema50 //and close >= ema21 * 0.99 // Near 21 EMA (within 1%) // Initialize variables for stop loss and take profitss var float stopLossLevel = na var float takeProfitLevel = na // Check conditions on each bar close if (bar_index > 0) // Ensures there is data to check if emaCondition and pullbackCondition and strategy.position_size == 0 // Only buy if no open position stopLossLevel := close - (1.5 * atr) // Set stop loss based on ATR at buy price takeProfitLevel := close + (3.5 * atr) // Set take profit based on ATR at buy price strategy.entry("Buy", strategy.long) // Set stop loss and take profit for the active trade if strategy.position_size > 0 strategy.exit("Take Profit", from_entry="Buy", limit=takeProfitLevel, stop=stopLossLevel) // Plot EMAs for visualizationn plot(ema20, color=color.blue, title="20 EMA") plot(ema50, color=color.red, title="50 EMA") plot(ema100, color=color.green, title="100 EMA") plot(ema200, color=color.orange, title="200 EMA") plot(ema21, color=color.purple, title="21 EMA")