Estrategia para el avance de dos índices de riesgo

El autor:¿ Qué pasa?, Fecha: 2023-12-27 14:33:15
Las etiquetas:

img

Resumen general

La estrategia de ruptura dual del RSI es una estrategia de trading algorítmica que identifica los puntos de reversión del precio utilizando el indicador RSI.

Estrategia lógica

Esta estrategia se basa principalmente en el indicador RSI para juzgar la condición del mercado. El indicador RSI se calcula en función de los cambios en los precios de cierre durante un cierto período, reflejando el impulso de compra y venta de la acción. Cuando el RSI cruza por encima del umbral superior preestablecido (default 75), indica que la acción ha entrado en la zona de sobrecompra. Cuando el RSI cae por debajo del umbral inferior preestablecido (default 25), indica que la acción ha entrado en la zona de sobreventa.

Las reglas de la sentencia son:

  1. Cuando el RSI cruce el umbral superior, sea corto.
  2. Cuando el RSI cruce por debajo del umbral inferior, vaya largo;
  3. Cierre de la posición al alcanzar el stop loss o el take profit.

Su lógica de negociación es simple y clara, con ajustes de parámetros de referencia razonables, un gran espacio de configuración y es adecuada para capturar tendencias más grandes en el mercado.

Análisis de ventajas

Las ventajas de esta estrategia incluyen:

  1. Una lógica sencilla que sea fácil de entender e implementar.
  2. Ajustes razonables de parámetros de referencia que puedan personalizarse;
  3. Logística de negociación inversa configurable que pueda responder con flexibilidad a las condiciones del mercado;
  4. Puede identificar eficazmente los puntos de inversión de precios y capturar las principales tendencias.

En general, con ajustes razonables de parámetros de referencia, una implementación sencilla y la capacidad de determinar efectivamente las reversiones de precios a través del RSI, esta estrategia es adecuada para la captura de tendencias a medio y largo plazo y es fácil de comprender y utilizar como una estrategia cuantitativa.

Análisis de riesgos

Aunque esta estrategia es relativamente sencilla y fiable, no podemos ignorar los riesgos potenciales a los que se enfrenta:

  1. Relativamente alta probabilidad de que los indicadores del RSI desencadenen señales falsas.
  2. Posibilidad de un stop loss continuo en un mercado de tendencia.
  3. El RSI no es capaz de determinar eficazmente las tendencias de los rangos, lo que conduce a mayores pérdidas en este entorno.

Para controlar los riesgos, debemos prestar atención a lo siguiente:

  1. Ajustar los parámetros de manera adecuada para evitar tasas excesivas de errores de evaluación.
  2. Confirmar las señales comerciales con otros indicadores para mejorar la precisión.
  3. Aumentar la relación de toma de ganancias y reducir el tamaño de la pérdida de parada única.
  4. Evite el comercio en mercados variados.

Direcciones de optimización

Teniendo en cuenta que los principales riesgos a los que se enfrenta esta estrategia son los errores de valoración de la inversión y las pérdidas en mercados variados, podemos optimizar a partir de los siguientes aspectos:

  1. Los indicadores como el KDJ y el MACD pueden desempeñar un papel de filtrado para evitar errores de juicio.
  2. Aumentar el umbral para las cantidades de pérdida de parada única.
  3. Añadir una lógica que restrinja las entradas a una o N veces por cierto período para controlar la apertura de posiciones demasiado frecuente.
  4. Establecer juicios sobre las condiciones del mercado. Asegurar que la estrategia solo se ejecute en mercados de tendencia, evitando mercados variados, lo que puede optimizar significativamente la relación riesgo-recompensación de la estrategia.

Conclusión

En resumen, la doble estrategia de ruptura del RSI es una estrategia cuantitativa simple y práctica. Identifica las reversiones de precios a través del RSI para lograr un simple seguimiento de tendencia. Aunque existen ciertos riesgos de error de juicio, las optimizaciones como la sintonización de parámetros, el filtrado de señales pueden ayudar a mitigar esto y permitirle desempeñar un papel importante en la captura de tendencias a mediano y largo plazo. Su lógica es sencilla, lo que lo hace adecuado para que los principiantes puedan hacer referencia y aprender.


/*backtest
start: 2023-12-19 00:00:00
end: 2023-12-26 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("RSI Algo", overlay=true)

// Calculate start/end date and time condition
DST = 1 //day light saving for usa
//--- Europe
London = iff(DST==0,"0000-0900","0100-1000")
//--- America
NewYork = iff(DST==0,"0400-1500","0500-1600")
//--- Pacific
Sydney = iff(DST==0,"1300-2200","1400-2300")
//--- Asia
Tokyo = iff(DST==0,"1500-2400","1600-0100")

//-- Time In Range
timeinrange(res, sess) => time(res, sess) != 0

london = timeinrange(timeframe.period, London)
newyork = timeinrange(timeframe.period, NewYork)

time_cond = true


myPeriod = input(defval=14, type=input.integer, title="Period")
myThresholdUp = input(defval=75, type=input.float, title="Upper Threshold")
myThresholdDn = input(defval=25, type=input.float, title="Lower Threshold")
myAlgoFlipToggle = input(defval=false, type=input.bool, title="Imverse Algorthim")
myLineToggle = input(defval=true, type=input.bool, title="Show Lines")
myLabelToggle = input(defval=true, type=input.bool, title="Show Labels")
myRSI=rsi(close, myPeriod)
buy = myAlgoFlipToggle ? falling(myRSI,1) and cross(myRSI, myThresholdDn) : rising(myRSI, 1) and cross(myRSI,myThresholdUp) //and time_cond
sell = myAlgoFlipToggle ? rising(myRSI, 1) and cross(myRSI,myThresholdUp) : falling(myRSI,1) and cross(myRSI, myThresholdDn) //and time_cond
myPosition = 0
myPosition := buy==1 ? 0 : sell==1 or myPosition[1]==1 ? 1 : 0
trendColor = buy ? color.red : sell ? color.green : na
plot(myLineToggle ? buy and myPosition[1]==1 ? low - 0.004: sell and myPosition[1]==0 ? high + 0.004 : na : na, color=trendColor, style=plot.style_line, linewidth=4, editable=false)
plotshape(myLabelToggle ? buy and myPosition[1]==1 ? low - 0.005 : na : na, style=shape.labelup, location=location.absolute, text="Buy", transp=0, textcolor = color.white, color=color.black, editable=false)
plotshape(myLabelToggle ? sell and myPosition[1]==0 ? high + 0.005 : na : na, style=shape.labeldown, location=location.absolute, text="Sell", transp=0, textcolor = color.white, color=color.black, editable=false)

strategy.initial_capital = 50000
    //Calculate the size of the next trade
balance = strategy.netprofit + strategy.initial_capital //current balance
floating = strategy.openprofit          //floating profit/loss
risk = input(2,type=input.float,title="Risk %")/100           //risk % per trade
isTwoDigit = input(false,"Is this a 2 digit pair? (JPY, XAU, XPD...")


stop = input(250, title="stop loss pips")
tp = input(2500, title="take profit pips")
if(isTwoDigit)
    stop := stop/100
    
temp01 = balance * risk     //Risk in USD
temp02 = temp01/stop        //Risk in lots
temp03 = temp02*100000      //Convert to contracts
size = 1
    
strategy.entry("long",1,size,when=buy and myPosition[1]==1 )
strategy.entry("short",0,size,when=sell and myPosition[1]==0)

strategy.exit("exit_long","long",loss=stop, profit=tp)      //Long exit (stop loss)
strategy.exit("exit_short","short",loss=stop, profit=tp)      //Short exit (stop loss)

//strategy.close_all(when= not time_cond)


Más.