Estrategia de stop loss de seguimiento de tendencias basada en el indicador RSI


Fecha de creación: 2023-12-12 15:46:49 Última modificación: 2023-12-12 15:46:49
Copiar: 0 Número de Visitas: 1051
1
Seguir
1621
Seguidores

Estrategia de stop loss de seguimiento de tendencias basada en el indicador RSI

Descripción general

Esta estrategia se llama estrategia de seguimiento de la tendencia de stop loss basada en el indicador RSI. Utiliza el indicador RSI para determinar la situación de sobreventa y sobreventa, en combinación con el indicador MA rápido y lento para determinar la dirección de la tendencia y establecer las condiciones de entrada.

Principio de estrategia

La estrategia se basa principalmente en el RSI y el MA para determinar el momento de entrada. El parámetro del RSI se establece en 2 períodos para determinar la superación de la superación. El MA lento se establece en 50 períodos y 200 períodos respectivamente para determinar la dirección de la tendencia. La lógica de entrada específica es:

Entrada múltiple: hacer más en el MA rápido que en el MA lento, y el precio es más alto que el MA lento, mientras que el RSI está por debajo de la zona de sobreventa (el 10% por defecto);
Entrada en blanco: baja el MA bajo el MA rápido y baja el MA lento, mientras que el RSI está por encima de la zona de sobrecompra (default 90%) y queda vacío.

Además, la estrategia también establece un filtro de fluctuación opcional. El filtro calcula el diferencial de pendiente de la MA a gran velocidad y abre las posiciones solo cuando el diferencial supera el umbral establecido. Su objetivo es evitar abrir posiciones sin una dirección clara durante los períodos de oscilación de los precios.

En la salida, la estrategia utiliza el porcentaje de seguimiento de la parada. De acuerdo con el porcentaje de la parada de la entrada, se calcula el precio de parada combinado con cada diferencia de salto, para lograr una parada de ajuste dinámico.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. El parámetro del RSI está configurado para 2 ciclos, lo que permite capturar rápidamente las situaciones de sobreventa y sobreventa para determinar la oportunidad de reversión.
  2. La MA es eficaz para identificar las tendencias y los puntos de inflexión.
  3. La combinación de los dos indicadores RSI y MA puede evitar falsas brechas.
  4. Configure un filtro de fluctuación que puede filtrar las oscilaciones en el mercado sin una dirección clara.
  5. El método de seguimiento de pérdidas por porcentaje permite ajustar la amplitud de los paros en función de la volatilidad del mercado y controlar el riesgo de manera efectiva.

Análisis de riesgos

La estrategia también tiene ciertos riesgos, que se reflejan en:

  1. Los indicadores RSI y MA están rezagados y pueden haber perdido algunas oportunidades de reversión.
  2. El porcentaje de pérdidas se puede disparar fácilmente en caídas de la contracción.
  3. Las variedades que no pueden manejar eficazmente los discos nocturnos y los que tienen una gran oscilación antes del disco.

En relación con los riesgos mencionados, se puede optimizar en los siguientes aspectos:

  1. Ajuste el parámetro RSI, que se establece en 1 ciclo, para reducir el retraso.
  2. Ajustar los parámetros del ciclo MA según las características de las diferentes variedades.
  3. Ajuste el nivel de pérdida porcentual, teniendo en cuenta la tolerancia a la pérdida y a la vibración.

Dirección de optimización de la estrategia

La estrategia se puede optimizar en los siguientes aspectos:

  1. Aumentar otros indicadores de juicio, como aumentar el indicador de volumen de transacciones, para evitar falsas rupturas.
  2. Aumentar el conocimiento de los modelos de aprendizaje automático para ayudar en la toma de decisiones con los resultados de las predicciones de los modelos.
  3. Optimizar el número de recaudaciones y la gestión de posiciones para mejorar aún más la rentabilidad de la estrategia.
  4. Configuración de un filtro de fluctuaciones nocturnas y pre-disco. De acuerdo con la amplitud de la fluctuación, configure si participará en la decisión del próximo día de negociación.

Resumir

Esta estrategia es una estrategia de seguimiento de tendencias más estable en general. Combina el juicio de los indicadores dobles RSI y MA, garantizando cierta estabilidad, al mismo tiempo que captura oportunidades de reversión de tendencias más claras. Al mismo tiempo, la configuración de filtros de volatilidad evita parte del riesgo y el método de parada porcentual también puede controlar eficazmente las pérdidas individuales.

Código Fuente de la Estrategia
/*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")