
Es ist eine Handelsstrategie, die Dynamik und Dynamik durch mehrere Indikatoren, beispielsweise den Moving Average (EMA), den Relative Strength Index (RSI) und den Stochastic, identifiziert. Die Strategie integriert auch ein Risikomanagementsystem, das auf der durchschnittlichen realen Bandbreite (ATR) basiert, einschließlich dynamischer Stop-Loss- und Gewinnziele und Stop-Loss-Tracking-Funktionen, während ein risikobasiertes Positionsmanagement angewendet wird.
Die Strategie verwendet 5 verschiedene EMAs aus verschiedenen Perioden (8, 13, 21, 34, 55) zur Bestimmung der Trendrichtung. Die kurzfristige EMA wird als Aufwärtstrend erkannt, wenn sie über der längerfristigen EMA liegt; die Gegenteil ist ein Abwärtstrend. Der RSI wird verwendet, um die Dynamik zu bestätigen, wobei verschiedene Einstiegs- und Ausstiegs-Thresholds festgelegt werden. Der Zufallsindikator fungiert als dritter schwerer Filter, um zu viel zu kaufen oder zu verkaufen.
Die Strategie bietet eine umfassende Handelslösung durch die Kombination von mehreren technischen Kennzahlen und einem ausgefeilten Risikomanagementsystem. Ihre Kernvorteile liegen in den vielschichtigen Filtermechanismen und dem dynamischen Risikomanagement, aber es ist immer noch notwendig, die Optimierung nach den spezifischen Merkmalen des Marktes vorzunehmen. Die erfolgreiche Umsetzung der Strategie erfordert kontinuierliche Überwachung und Anpassung, insbesondere die Anpassung der Parameter an verschiedene Marktumgebungen.
/*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")