Esta estrategia se llama
Las señales de entrada de esta estrategia se determinan principalmente por el indicador RSI y los cruces MA. El parámetro RSI se establece en 2 períodos para capturar rápidamente situaciones de sobrecompra y sobreventa para oportunidades de reversión. El MA rápido y el MA lento se establecen en 50 y 200 períodos respectivamente para identificar la dirección de la tendencia.
En el caso de las operaciones de mercado abierto, el valor de las operaciones de mercado abierto es el valor de las operaciones de mercado abierto (por ejemplo, las operaciones de mercado abierto) y el valor de las operaciones de mercado abierto (por ejemplo, las operaciones de mercado abierto). Entrada corta: el MA rápido cruza por debajo del MA lento, el precio está por debajo del MA lento y el RSI está por encima del nivel de sobrecompra (default 90%).
Además, hay un filtro de volatilidad opcional en la estrategia. Cálcula la diferencia entre las pendientes de los MAs rápidos y lentos. Las posiciones solo se abrirán cuando la diferencia exceda un umbral. El propósito es evitar abrir posiciones cuando no hay una dirección clara durante la fluctuación del mercado.
En el lado de la salida, la estrategia utiliza el porcentaje de pérdida de parada de seguimiento. Basado en el porcentaje de entrada, calcula el precio de la pérdida de parada combinado con el tamaño del tick, para ajustar dinámicamente la pérdida de parada.
Las principales ventajas de esta estrategia son las siguientes:
Esta estrategia también presenta algunos riesgos:
Las direcciones de optimización para los riesgos son:
Las direcciones de optimización para esta estrategia son:
En general, esta es una tendencia relativamente estable después de la estrategia. Al combinar indicadores duales RSI y MA, asegura cierta estabilidad mientras captura oportunidades de reversión de tendencia más claras. El filtro de volatilidad evita algunos riesgos, y el porcentaje de stop loss también controla eficazmente la pérdida de una sola operación. Esta estrategia se puede utilizar como una estrategia genérica de símbolos múltiples, y también se puede optimizar en parámetros y modelos para símbolos específicos para lograr mejores resultados.
/*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")