
Die Strategie ist ein Trend-Tracking-Trading-System, das auf einem binären Index-Moving Average (EMA) basiert. Die Strategie verwendet zwei EMA-Linien mit 44 und 200 Perioden, kombiniert mit einem Preis-Breakout-Signal, um die Richtung des Handels zu bestimmen. Gleichzeitig wird ein Risikomanagement-Mechanismus integriert, der die Berechnung von dynamischen Positionen und die Bewegung von Stop-Losses umfasst.
Die Kernlogik der Strategie basiert auf der Wechselbeziehung zwischen dem Preis und den beiden EMA-Linien. Die 44-Zyklus-EMA wird für die Auf- und Abwärtskanäle der Höchst- und Tiefpreise verwendet, und die 200-Zyklus-EMA dient als langfristiger Trendfilter. Wenn der Schlusskurs die oberen EMA-Linien durchbricht und die 200-EMA-Filterbedingungen erfüllt, erzeugt das System mehrere Signale.
Es handelt sich um eine strukturierte, logisch eindeutige Trendverfolgungsstrategie. Die Bereitstellung von Handelssignalen über einen Dual-EMA-Kanal und eine langfristige Trendfilterung ist in Verbindung mit einem ausgereiften Risikomanagementmechanismus mit guter Praxis. Der Optimierungsraum für die Strategie liegt hauptsächlich in der Signalbestätigung, der Anpassung der dynamischen Parameter und der Verbesserung der Risikomanagementmechanismen.
/*backtest
start: 2024-02-25 00:00:00
end: 2024-03-17 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("RENTABLE Dual EMA Breakout TSLA ", overlay=true)
// Inputs for EMA lengths and risk per trade
length = input(44, title="EMA Length")
longTermLength = input(200, title="Long-Term EMA Length")
riskPerTrade = input.float(1.0, title="Risk per Trade (%)", minval=0.1, maxval=10.0)
// Additional inputs for strategy customization
useFilter = input.bool(true, title="Use 200 EMA Filter")
tradeDirection = input.string("Both", title="Trade Direction", options=["Long", "Short", "Both"])
// EMAs based on the high and low prices and long-term EMA
emaHigh = ta.ema(high, length)
emaLow = ta.ema(low, length)
ema200 = ta.ema(close, longTermLength)
// Plotting EMAs on the chart
plot(emaHigh, color=color.green, title="High EMA")
plot(emaLow, color=color.red, title="Low EMA")
plot(ema200, color=color.blue, title="200 EMA")
// Entry conditions with optional EMA filter
longCondition = close > emaHigh and (useFilter ? close > ema200 : true)
shortCondition = close < emaLow and (useFilter ? close < ema200 : true)
// Calculating stop-loss and position size
longStop = emaLow
shortStop = emaHigh
riskPerShareLong = close - longStop
riskPerShareShort = shortStop - close
equity = strategy.equity
// Ensure risk per share is positive for calculations
riskPerShareLong := riskPerShareLong > 0 ? riskPerShareLong : 0.01
riskPerShareShort := riskPerShareShort > 0 ? riskPerShareShort : 0.01
positionSizeLong = (equity * riskPerTrade / 100) / riskPerShareLong
positionSizeShort = (equity * riskPerTrade / 100) / riskPerShareShort
// Ensure position sizes are positive before entering trades
if (longCondition and (tradeDirection == "Long" or tradeDirection == "Both") and positionSizeLong > 0)
strategy.entry("Long", strategy.long, qty= positionSizeLong)
if (shortCondition and (tradeDirection == "Short" or tradeDirection == "Both") and positionSizeShort > 0)
strategy.entry("Short", strategy.short, qty=positionSizeShort)
// Applying the stop-loss to strategy
strategy.exit("Exit Long", "Long", stop=longStop)
strategy.exit("Exit Short", "Short", stop=shortStop)
////Usar en 1,2 3 4 HRS TSLA