이 전략은 시장의 흐름과 동력을 식별하기 위해 여러 가지 기하급수적인 이동 평균 (EMA), 상대적 강도 지수 (RSI), 그리고 스토카스틱 오시레이터를 사용하여 동력과 트렌드를 결합하는 거래 전략이다. 이 전략은 동적 스톱 로스, 이익 목표 및 트레일링 스톱과 함께 위험 기반 포지션 사이징과 함께 평균 진정한 범위 (ATR) 를 기반으로 한 리스크 관리 시스템을 통합한다.
이 전략은 트렌드 방향을 결정하기 위해 서로 다른 기간 (8, 13, 21, 34, 55) 을 가진 5개의 EMA를 사용한다. 짧은 기간 EMA가 장기 기간 EMA보다 높을 때 상승 추세가 확인되며, 하락 추세는 반대로 나타난다. RSI는 다른 입출동 임계로 추진력을 확인한다. 스토카스틱 오시일레이터는 과잉 구매 및 과잉 판매 조건을 피하기 위한 세 번째 필터로 작용한다. 리스크 관리 시스템은 ATR을 사용하여 동적 스톱-러스 (2x ATR) 및 수익 목표 (4x ATR) 를 설정하며, 수익을 보호하기 위해 1.5x ATR 트레일링 스톱을 사용합니다. 포지션 사이징은 계정 자본의 1% 위험을 기반으로 계산된다.
이 전략은 여러 가지 기술적 지표와 강력한 위험 관리 시스템을 결합하여 포괄적인 거래 솔루션을 제공합니다. 주요 강점은 다층 필터링 메커니즘과 동적 위험 관리에 있습니다. 그러나 여전히 특정 시장 특성에 따라 최적화를 요구합니다. 성공적인 구현은 지속적인 모니터링과 조정, 특히 다른 시장 환경에서 매개 변수 적응력을 요구합니다. 제안된 최적화 방향을 통해 전략은 안정성과 수익성을 더욱 향상시킬 잠재력을 가지고 있습니다.
/*backtest start: 2024-11-04 00:00:00 end: 2024-12-04 00:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Combined Strategy (Modernized)", overlay = true) //----------// // MOMENTUM // //----------// ema8 = ta.ema(close, 8) ema13 = ta.ema(close, 13) ema21 = ta.ema(close, 21) ema34 = ta.ema(close, 34) ema55 = ta.ema(close, 55) // Plotting EMAs for visualization plot(ema8, color=color.red, title="EMA 8", linewidth=1) plot(ema13, color=color.orange, title="EMA 13", linewidth=1) plot(ema21, color=color.yellow, title="EMA 21", linewidth=1) plot(ema34, color=color.aqua, title="EMA 34", linewidth=1) plot(ema55, color=color.lime, title="EMA 55", linewidth=1) longEmaCondition = ema8 > ema13 and ema13 > ema21 and ema21 > ema34 and ema34 > ema55 exitLongEmaCondition = ema13 < ema55 shortEmaCondition = ema8 < ema13 and ema13 < ema21 and ema21 < ema34 and ema34 < ema55 exitShortEmaCondition = ema13 > ema55 // ---------- // // OSCILLATORS // // ----------- // rsi = ta.rsi(close, 14) longRsiCondition = rsi < 70 and rsi > 40 exitLongRsiCondition = rsi > 70 shortRsiCondition = rsi > 30 and rsi < 60 exitShortRsiCondition = rsi < 30 // Stochastic k = ta.stoch(close, high, low, 14) d = ta.sma(k, 3) longStochasticCondition = k < 80 exitLongStochasticCondition = k > 95 shortStochasticCondition = k > 20 exitShortStochasticCondition = k < 5 //----------// // STRATEGY // //----------// // ATR for dynamic stop loss and take profit atr = ta.atr(14) stopLossMultiplier = 2 takeProfitMultiplier = 4 stopLoss = atr * stopLossMultiplier takeProfit = atr * takeProfitMultiplier // Trailing stop settings trailStopMultiplier = 1.5 trailOffset = atr * trailStopMultiplier // Risk management: dynamic position sizing riskPerTrade = 0.01 // 1% risk per trade positionSize = strategy.equity * riskPerTrade / stopLoss longCondition = longEmaCondition and longRsiCondition and longStochasticCondition and strategy.position_size == 0 exitLongCondition = (exitLongEmaCondition or exitLongRsiCondition or exitLongStochasticCondition) and strategy.position_size > 0 if (longCondition) strategy.entry("LONG", strategy.long, qty=positionSize) strategy.exit("Take Profit Long", "LONG", stop=close - stopLoss, limit=close + takeProfit, trail_offset=trailOffset) if (exitLongCondition) strategy.close("LONG") shortCondition = shortEmaCondition and shortRsiCondition and shortStochasticCondition and strategy.position_size == 0 exitShortCondition = (exitShortEmaCondition or exitShortRsiCondition or exitShortStochasticCondition) and strategy.position_size < 0 if (shortCondition) strategy.entry("SHORT", strategy.short, qty=positionSize) strategy.exit("Take Profit Short", "SHORT", stop=close + stopLoss, limit=close - takeProfit, trail_offset=trailOffset) if (exitShortCondition) strategy.close("SHORT")