Dies ist eine Handelsstrategie, die Dynamik und Trend kombiniert und mehrere exponentielle gleitende Durchschnitte (EMAs), Relative Strength Index (RSI) und Stochastic Oszillator verwendet, um Markttrends und Dynamik zu identifizieren.
Die Strategie verwendet 5 EMAs mit verschiedenen Perioden (8, 13, 21, 34, 55) zur Bestimmung der Trendrichtung. Ein Aufwärtstrend wird identifiziert, wenn die kurzfristigen EMAs über den längerfristigen EMAs liegen und umgekehrt bei Abwärtstrends. Der RSI bestätigt die Dynamik mit verschiedenen Ein- und Ausstiegsschwellen. Der stochastische Oszillator dient als dritter Filter, um überkaufte und überverkaufte Bedingungen zu vermeiden. Das Risikomanagementsystem verwendet ATR, um dynamische Stop-Loss (2x ATR) und Gewinnziele (4x ATR) mit einem 1,5x ATR Trailing Stop zum Schutz der Gewinne zu setzen.
Die Strategie bietet eine umfassende Handelslösung, indem sie mehrere technische Indikatoren mit einem robusten Risikomanagementsystem kombiniert. Ihre Kernstärken liegen in ihrem mehrschichtigen Filtermechanismus und dynamischem Risikomanagement, erfordert aber immer noch eine Optimierung auf der Grundlage spezifischer Marktmerkmale. Eine erfolgreiche Umsetzung erfordert kontinuierliche Überwachung und Anpassung, insbesondere die Anpassungsfähigkeit der Parameter in verschiedenen Marktumgebungen. Durch die vorgeschlagenen Optimierungsrichtungen hat die Strategie das Potenzial, ihre Stabilität und Rentabilität weiter zu verbessern.
/*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")