Diese Strategie nutzt den Stochastic Oscillator, um überkaufte und überverkaufte Marktbedingungen zu identifizieren und Trades mit vordefinierten Risiko- und Belohnungsparametern auszulösen, um von Preisschwankungen innerhalb eines volatilen Handelsbereichs zu profitieren. Die Hauptidee hinter dieser Strategie besteht darin, am unteren Ende des Handelsbereichs zu kaufen und am oberen Ende zu verkaufen, während das Risiko streng kontrolliert wird.
Die Strategie der Volatilitätsspanne basiert auf dem Stochastischen Oszillator und versucht, die überkauften und überverkauften Signale des Oszillators innerhalb einer vordefinierten Handelsspanne zu nutzen. Die Strategie kontrolliert das Risiko durch strenges Risikomanagement und Handelsintervalle. Die Strategie hat zwar gewisse Vorteile, aber ihr Erfolg hängt weitgehend von der korrekten Identifizierung der Handelsspanne ab. Zukünftige Optimierungsrichtungen umfassen die Kombination anderer technischer Indikatoren, die Einführung dynamischer Stop-Loss- und Take-Profit-Level, die Verwendung fortschrittlicherer Range-Identifikationstechniken und das Hinzufügen eines Trendfilters.
/*backtest start: 2023-06-11 00:00:00 end: 2024-06-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Range Trading with Stochastic", overlay=true) // Input Parameters overboughtLevel = input.int(80, title="Overbought Level", minval=1, maxval=100) oversoldLevel = input.int(20, title="Oversold Level", minval=1, maxval=100) stochLength = input.int(14, title="Stochastic Length", minval=1) riskPerTrade = input.float(0.01, title="Risk per Trade (%)", minval=0.01, maxval=100, step=0.01) barsBetweenTrades = input.int(20, title="Bars Between Trades", minval=1) // Calculate Stochastic Oscillator k = ta.sma(ta.stoch(close, high, low, stochLength), 3) d = ta.sma(k, 3) // Variables to Track Time Since Last Trade var lastTradeBar = 0 barsSinceLastTrade = bar_index - lastTradeBar // Risk Management atr = ta.atr(14) stopLoss = 2 * atr takeProfit = 2 * atr riskAmount = strategy.equity * riskPerTrade / 100 positionSize = 1 // Entry Conditions longCondition = k < oversoldLevel and strategy.position_size == 0 and barsSinceLastTrade >= barsBetweenTrades shortCondition = k > overboughtLevel and strategy.position_size == 0 and barsSinceLastTrade >= barsBetweenTrades // Entry/Exit Orders if longCondition strategy.entry("Long", strategy.long, qty=positionSize) strategy.exit("Long Exit", "Long", stop=close - stopLoss, limit=close + takeProfit) lastTradeBar := bar_index // Update last trade bar if shortCondition strategy.entry("Short", strategy.short, qty=positionSize) strategy.exit("Short Exit", "Short", stop=close + stopLoss, limit=close - takeProfit) lastTradeBar := bar_index // Update last trade bar // Plot Stochastic plot(k, color=color.blue, title="%K") plot(d, color=color.orange, title="%D") hline(overboughtLevel, color=color.red, title="Overbought") hline(oversoldLevel, color=color.green, title="Oversold")