Diese Strategie wird
Die Eintrittssignale dieser Strategie werden hauptsächlich durch den RSI-Indikator und die MA-Kreuzungen bestimmt. Der RSI-Parameter ist auf 2 Perioden festgelegt, um schnell überkaufte und überverkaufte Situationen für Umkehrmöglichkeiten zu erfassen. Der schnelle MA und der langsame MA sind auf 50 bzw. 200 Perioden festgelegt, um die Trendrichtung zu identifizieren.
Long-Entry: Fast MA überschreitet langsames MA, der Preis liegt über langsamem MA und der RSI liegt unter dem Überverkaufsniveau (Standstillstand 10%); Kurzer Einstieg: Der schnelle Marktanteil überschreitet den langsamen Marktanteil, der Preis liegt unter dem langsamen Marktanteil und der RSI liegt über dem Überkaufniveau (Default 90%).
Darüber hinaus gibt es einen optionalen Volatilitätsfilter in der Strategie. Er berechnet die Differenz zwischen den Neigungen von schnellen und langsamen MAs. Positionen werden nur geöffnet, wenn die Differenz einen Schwellenwert übersteigt. Der Zweck ist es, zu vermeiden, Positionen zu eröffnen, wenn es keine klare Richtung während der Marktschwankungen gibt.
Auf der Ausfahrtsseite verwendet die Strategie prozentualen Trailing Stop Loss. Basierend auf dem Eingabeprozentsatz berechnet sie den Stop-Loss-Preis in Kombination mit der Tick-Größe, um den Stop-Loss dynamisch anzupassen.
Die wichtigsten Vorteile dieser Strategie sind:
Diese Strategie birgt auch einige Risiken:
Die Optimierungsrichtungen für die Risiken sind:
Die Optimierungsrichtungen für diese Strategie sind:
Im Allgemeinen handelt es sich um einen relativ stabilen Trend nach der Strategie. Durch die Kombination von doppelten RSI- und MA-Indikatoren gewährleistet es eine gewisse Stabilität, während klarere Trendumkehrmöglichkeiten erfasst werden. Der Volatilitätsfilter vermeidet einige Risiken und der prozentuale Stop-Loss kontrolliert auch effektiv den Einzelverlust. Diese Strategie kann als generische Multi-Symbol-Strategie verwendet werden und kann auch auf Parametern und Modellen für bestimmte Symbole optimiert werden, um bessere Ergebnisse zu erzielen.
/*backtest start: 2023-11-11 00:00:00 end: 2023-12-11 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // Scalping strategy // © Lukescream and Ninorigo // (original version by Lukescream - lastest versions by Ninorigo) - v1.3 // //@version=4 strategy(title="Scalping using RSI 2 indicator", shorttitle="RSI 2 Strategy", overlay=true, pyramiding=0, process_orders_on_close=false) var bool ConditionEntryL = false var bool ConditionEntryS = false //*********** // Costants //*********** def_start_date = timestamp("01 Jan 2021 07:30 +0000") def_end_date = timestamp("01 Dec 2024 07:30 +0000") def_rsi_length = 2 def_overbought_value = 90 def_oversold_value = 10 def_slow_ma_length = 200 def_fast_ma_length = 50 def_ma_choice = "EMA" def_tick = 0.5 def_filter = true def_trailing_stop = 1 //*********** // Change the optional parameters //*********** start_time = input(title="Start date", defval=def_start_date, type=input.time) end_time = input(title="End date", defval=def_end_date, type=input.time) // RSI src = input(title="Source", defval=close, type=input.source) rsi_length = input(title="RSI Length", defval=def_rsi_length, minval=1, type=input.integer) overbought_threshold = input(title="Overbought threshold", defval=def_overbought_value, type=input.float) oversold_threshold = input(title="Oversold threshold", defval=def_oversold_value, type=input.float) // Moving average slow_ma_length = input(title="Slow MA length", defval=def_slow_ma_length, type=input.integer) fast_ma_length = input(title="Fast MA length", defval=def_fast_ma_length, type=input.integer) ma_choice = input(title="MA choice", defval="EMA", options=["SMA", "EMA"]) // Input ticker tick = input(title="Ticker size", defval=def_tick, type=input.float) filter = input(title="Trend Filter", defval=def_filter, type=input.bool) // Trailing stop (%) ts_rate = input(title="Trailing Stop %", defval=def_trailing_stop, type=input.float) //*********** // RSI //*********** // Calculate RSI up = rma(max(change(src), 0), rsi_length) down = rma(-min(change(src), 0), rsi_length) rsi = (down == 0 ? 100 : (up == 0 ? 0 : 100-100/(1+up/down))) //*********** // Moving averages //*********** slow_ma = (ma_choice == "SMA" ? sma(close, slow_ma_length) : ema(close, slow_ma_length)) fast_ma = (ma_choice == "SMA" ? sma(close, fast_ma_length) : ema(close, fast_ma_length)) // Show the moving averages plot(slow_ma, color=color.white, title="Slow MA") plot(fast_ma, color=color.yellow, title="Fast MA") //*********** // Strategy //*********** if true // Determine the entry conditions (only market entry and market exit conditions) // Long position ConditionEntryL := (filter == true ? (fast_ma > slow_ma and close > slow_ma and rsi < oversold_threshold) : (fast_ma > slow_ma and rsi < oversold_threshold)) // Short position ConditionEntryS := (filter == true ? (fast_ma < slow_ma and close < slow_ma and rsi > overbought_threshold) : (fast_ma < slow_ma and rsi > overbought_threshold)) // Calculate the trailing stop ts_calc = close * (1/tick) * ts_rate * 0.01 // Submit the entry orders and the exit orders // Long position if ConditionEntryL strategy.entry("RSI Long", strategy.long) // Exit from a long position strategy.exit("Exit Long", "RSI Long", trail_points=0, trail_offset=ts_calc) // Short position if ConditionEntryS strategy.entry("RSI Short", strategy.short) // Exit from a short position strategy.exit("Exit Short", "RSI Short", trail_points=0, trail_offset=ts_calc) // Highlights long conditions bgcolor (ConditionEntryL ? color.navy : na, transp=60, offset=1, editable=true, title="Long position band") // Highlights short conditions bgcolor (ConditionEntryS ? color.olive : na, transp=60, offset=1, editable=true, title="Short position band")