
Es handelt sich um eine Trend-Tracking-Strategie, die auf mehrperiodischen Durchschnittslinien-Kreuzungen basiert. Die Strategie beurteilt den Einstiegszeitpunkt hauptsächlich anhand der Kreuzung der 20, 50 und 200-periodischen Index-Moving Averages (EMA) und der Beziehung zwischen dem Preis und der Durchschnittslinie, während die Stop-Loss-Risiken auf Basis von Prozentsätzen eingestellt werden. Die Strategie ist besonders geeignet für größere Zeiträume wie 1-Stunden-, Tages- und Wochenzeitdiagramme und kann mittelfristige und langfristige Trendbewegungen effektiv erfassen.
Die Kernlogik der Strategie basiert auf einem Mehrfach-Gleichgewicht-System und einer Analyse des Preisverhaltens:
Es handelt sich um eine Strategie, die durch die Kombination von mehreren technischen Indikatoren sowohl die Zuverlässigkeit der Strategie als auch eine klare Risikokontrolle gewährleistet. Die Strategie eignet sich besonders für den Betrieb auf großen Periodendiagrammen und bietet einen einzigartigen Vorteil, um mittel- und langfristige Trends zu erfassen. Durch die empfohlene Optimierungsrichtung wird die Strategie weiter verbessert.
/*backtest
start: 2024-10-28 00:00:00
end: 2024-11-27 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Cross Strategy with Targets and Fill", overlay=true)
// Define EMAs
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
// Plot EMAs (hidden)
plot(ema20, color=color.blue, title="EMA 20", display=display.none)
plot(ema50, color=color.red, title="EMA 50", display=display.none)
plot(ema200, color=color.green, title="EMA 200", display=display.none)
// Define the conditions
priceCrossAboveEMA20 = ta.crossover(close, ema20)
priceCloseAboveEMA20 = close > ema20
ema20AboveEMA50 = ema20 > ema50
ema50AboveEMA200 = ema50 > ema200
// Buy condition
buyCondition = priceCrossAboveEMA20 and priceCloseAboveEMA20 and ema20AboveEMA50 and ema50AboveEMA200
// Plot buy signals
plotshape(series=buyCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
// Declare and initialize variables for take profit and stop loss levels
var float longTakeProfit = na
var float longStopLoss = na
var float buyPrice = na
// Update levels and variables on buy condition
if (buyCondition)
// Enter a new buy position
strategy.entry("Buy", strategy.long)
// Set new take profit and stop loss levels
longTakeProfit := strategy.position_avg_price * 1.10 // Target is 10% above the buy price
longStopLoss := strategy.position_avg_price * 0.95 // Stop loss is 5% below the buy price
buyPrice := strategy.position_avg_price
// Plot levels for the new trade
plotTakeProfit = plot(longTakeProfit, color=color.green, title="Take Profit", linewidth=1, offset=-1)
plotStopLoss = plot(longStopLoss, color=color.red, title="Stop Loss", linewidth=1, offset=-1)
plotBuyPrice = plot(buyPrice, color=color.blue, title="Buy Price", linewidth=1, offset=-1)
// Fill areas between buy price and take profit/stop loss levels
fill(plotBuyPrice, plotTakeProfit, color=color.new(color.green, 90), title="Fill to Take Profit") // Light green fill to target
fill(plotBuyPrice, plotStopLoss, color=color.new(color.red, 90), title="Fill to Stop Loss") // Light red fill to stop loss
// Exit conditions
strategy.exit("Take Profit/Stop Loss", from_entry="Buy", limit=longTakeProfit, stop=longStopLoss)