
Die Strategie ist ein Handelssystem, das auf einer doppelten Gleichgewichtskreuzung basiert und durch die Überwachung der Kreuzung von 9-Zyklus- und 21-Zyklus-Index-Moving Averages (EMA) gehandelt wird. Die Strategie läuft in einem 10-Minuten-Zeitrahmen und verwendet ein Einzeltrading-Modell, d. h. es wird keine erneute Position geöffnet, wenn eine Position gehalten wird. Das System verwendet ein Startkapital von 100.000, wobei jeder Handel mit 10% der Konto-Beteiligung durchgeführt wird.
Das Kernprinzip der Strategie besteht darin, dass die Sensitivität der kurzfristigen EMA gegenüber Marktpreisänderungen höher ist als die der langfristigen EMA. Wenn die kurzfristige EMA (Zyklus 9) nach oben über die lange EMA (Zyklus 21) geht, zeigt dies eine erhöhte kurzfristige Aufwärtsbewegung, und das System sendet mehrere Signale aus. Wenn die kurzfristige EMA nach unten über die lange EMA geht, zeigt dies eine erhöhte kurzfristige Abwärtsbewegung, und das System sendet ein Ausgleichssignal.
Es handelt sich hierbei um eine vernünftige, logisch klare, lineare Crossover-Strategie. Durch die EMA-Crossover-Erfassung von Markttrends in Kombination mit einem einmaligen Handelsmodell und einer prozentualen Positionsverwaltung wird ein Gleichgewicht zwischen Risiko und Ertrag erzielt. Trotz einiger inhärenter Einschränkungen kann die Stabilität und Anpassungsfähigkeit der Strategie durch die Optimierung der vorgeschlagenen Richtung weiter verbessert werden.
/*backtest
start: 2024-02-25 00:00:00
end: 2025-02-22 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=6
strategy("EMA Crossover Labels (One Trade at a Time)", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// ==== User Inputs ====
// Set the testing timeframe (ensure the chart is on a 10-min timeframe)
testTimeFrame = input.timeframe("10", "Strategy Timeframe")
// EMA period inputs
emaPeriod9 = input.int(9, "EMA 9 Period", minval=1)
emaPeriod21 = input.int(21, "EMA 2q Period", minval=1)
// ==== Retrieve Price Data ====
// For simplicity, we use the chart's timeframe (should be 10-min)
price = close
// ==== Calculate EMAs ====
ema9 = ta.ema(price, emaPeriod9)
ema21 = ta.ema(price, emaPeriod21)
// ==== Define Crossover Conditions ====
// Buy signal: when EMA9 crosses above EMA21 AND no current position is open
buySignal = ta.crossover(ema9, ema21) and strategy.position_size == 0
// Sell signal: when EMA9 crosses below EMA21 AND a long position is active
sellSignal = ta.crossunder(ema9, ema21) and strategy.position_size > 0
// ==== Strategy Orders ====
// Enter a long position when a valid buy signal occurs
if buySignal
strategy.entry("Long", strategy.long)
alert("Long Signal: " + syminfo.tickerid + " - EMA9 crossed above EMA21", alert.freq_once_per_bar_close)
// Exit the long position when a valid sell signal occurs
if sellSignal
strategy.close("Long")
alert("Sell Long Signal: " + syminfo.tickerid + " - EMA9 crossed below EMA21", alert.freq_once_per_bar_close)
// ==== Plot Buy/Sell Labels ====
// Only plot a "Buy" label if there's no open position
plotshape(buySignal, title="Buy Label", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy", textcolor=color.white)
// Only plot a "Sell" label if a position is active
plotshape(sellSignal, title="Sell Label", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell", textcolor=color.white)
// ==== Plot EMAs for Visualization ====
plot(ema9, color=color.blue, title="EMA 21")
plot(ema21, color=color.orange, title="EMA 21")