Die Spaced Out Trading Strategy ist eine Trend-folgende Strategie, die auf gleitenden Durchschnitten basiert. Sie verwendet einen 30-tägigen exponentiellen gleitenden Durchschnitt (EMA), um Preistrends zu identifizieren und tritt in Trades ein, wenn die Preise über/unter der EMA brechen. Sie tritt aus, wenn die Preise wieder unter/über der EMA-Linie fallen. Diese Strategie funktioniert gut mit 30-minütigen bis täglichen Zeitrahmen.
Die Kernlogik beruht auf der Beziehung zwischen Preis und der 30-Tage-EMA, um Ein- und Ausstiegssignale zu erzeugen.
Durch die Erfassung von Trend-Ausbrüchen zielt es darauf ab, von Dynamikbewegungen und Trend-nachfolgenden Möglichkeiten zu profitieren.
Zu den Hauptvorteilen dieser Strategie gehören:
Einige der wichtigsten Risiken sind:
Einige Möglichkeiten, wie die Strategie verbessert werden kann:
Die Spaced Out Trading Strategy zielt darauf ab, Trends durch den Handel mit Preisdurchbrüchen von EMA-Leveln zu erfassen. Es ist eine einfache und praktische quantitative Strategie. Mit anpassbaren Verlustlimits und vernünftigen Optimierungen kann es eine stabile Strategie sein, die über mittelfristige bis langfristige Halteperioden hinweg nachhaltige Renditen bietet.
/*backtest start: 2024-01-23 00:00:00 end: 2024-02-22 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Spaced Out Trading Strategy", overlay=true) // Define strategy parameters emaPeriod = input(30, title="EMA Period") // Longer EMA period for more spaced-out trades stopLossPct = input(2.0, title="Stop Loss Percentage") // Stop loss percentage takeProfitPct = input(3.0, title="Take Profit Percentage") // Take profit percentage // Calculate EMA emaValue = ta.ema(close, emaPeriod) // Define entry and exit conditions enterLong = ta.crossover(close, emaValue) exitLong = ta.crossunder(close, emaValue) // Place orders contractsQty = 5 // Number of contracts to buy var float lastTradePrice = na // Track the last trade price if enterLong and strategy.position_size == 0 strategy.entry("Buy Call", strategy.long, qty = contractsQty) lastTradePrice := close else if exitLong and strategy.position_size > 0 strategy.close("Buy Call") lastTradePrice := na // Calculate stop loss and take profit stopLossPrice = lastTradePrice * (1 - stopLossPct / 100) takeProfitPrice = lastTradePrice * (1 + takeProfitPct / 100) strategy.exit("Sell Call", "Buy Call", stop = stopLossPrice, limit = takeProfitPrice)