Estrategia de prueba de retroceso del oscilador del arco iris

El autor:¿ Qué pasa?, Fecha: 2023-12-26 15:08:17
Las etiquetas:

img

Resumen general

La estrategia de backtesting del oscilador del arco iris es una estrategia de trading cuantitativa basada en el indicador del oscilador del arco iris.

Estrategia lógica

El indicador central de esta estrategia es el oscilador arco iris (RO), que se calcula de la siguiente manera:

RO = 100 * ((Close - 10-day Moving Average) / (HHV(High, N) - LLV(Low, N))) 

Cuando el promedio móvil de 10 días es el promedio móvil simple de los precios de cierre durante los últimos 10 períodos. Este indicador refleja la desviación del precio en relación con su propio promedio móvil. Cuando el RO > 0, significa que el precio está por encima del promedio móvil, una señal alcista; cuando el RO < 0, significa que el precio está por debajo del promedio móvil, una señal bajista.

La estrategia también calcula un indicador auxiliar - ancho de banda (RB), que se calcula como:

RB = 100 * ((Highest value of moving averages - Lowest value of moving averages) / (HHV(High, N) - LLV(Low, N)))

El RB refleja el ancho entre las medias móviles. Cuanto mayor sea el RB, mayor será la fluctuación de precios, y viceversa, el precio es más estable.

Según los valores de los indicadores RO y RB, la estrategia evalúa el grado de desviación de precios y la estabilidad del mercado y genera señales de negociación para posiciones largas y cortas.

Ventajas

Las ventajas de esta estrategia son:

  1. El juicio sobre dos indicadores evita las limitaciones del juicio sobre un solo indicador.
  2. Puede juzgar las tendencias de los precios y la estabilidad del mercado simultáneamente.
  3. Simple de calcular, fácil de entender e implementar.
  4. Los indicadores visualizados forman un efecto arcoíris que es intuitivo y fácil de leer.

Los riesgos

También hay algunos riesgos con esta estrategia:

  1. Los parámetros incorrectos de los indicadores RO y RB pueden causar señales comerciales incorrectas.
  2. Las estrategias de promedios móviles dobles tienden a generar señales falsas y operaciones frecuentes.
  3. El período de pruebas previas y la selección de productos inadecuados afectarán a la eficacia de la estrategia.
  4. No se tienen en cuenta los costes de negociación, los resultados reales pueden ser deficientes.

Contramedidas:

  1. Optimización de los parámetros de los indicadores RO y RB.
  2. Añadir condiciones de filtro para evitar el comercio frecuente.
  3. Seleccionar el ciclo y la variedad de pruebas de retroceso adecuados.
  4. Calcular y considerar los costos de transacción.

Optimización

La estrategia también puede optimizarse de las siguientes maneras:

  1. Añadir la función suave al indicador de RO para evitar fluctuaciones dramáticas.
  2. Añadir una estrategia de stop loss para controlar una sola pérdida.
  3. Combinar con otros indicadores para la negociación de carteras para aumentar la rentabilidad.
  4. Añadir un modelo de aprendizaje automático para la predicción y evaluar la efectividad del indicador.
  5. Optimizar los parámetros para las diferentes variedades para mejorar la adaptabilidad.

Conclusión

La estrategia de backtesting del oscilador del arco iris juzga las tendencias y la estabilidad del mercado calculando la desviación entre los precios y las medias móviles, y utiliza esta información para tomar decisiones comerciales largas / cortas.


/*backtest
start: 2023-11-25 00:00:00
end: 2023-12-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/03/2018
// Ever since the people concluded that stock market price movements are not 
// random or chaotic, but follow specific trends that can be forecasted, they 
// tried to develop different tools or procedures that could help them identify 
// those trends. And one of those financial indicators is the Rainbow Oscillator 
// Indicator. The Rainbow Oscillator Indicator is relatively new, originally 
// introduced in 1997, and it is used to forecast the changes of trend direction.
//
// As market prices go up and down, the oscillator appears as a direction of the 
// trend, but also as the safety of the market and the depth of that trend. As 
// the rainbow grows in width, the current trend gives signs of continuity, and 
// if the value of the oscillator goes beyond 80, the market becomes more and more 
// unstable, being prone to a sudden reversal. When prices move towards the rainbow 
// and the oscillator becomes more and more flat, the market tends to remain more 
// stable and the bandwidth decreases. Still, if the oscillator value goes below 20, 
// the market is again, prone to sudden reversals. The safest bandwidth value where 
// the market is stable is between 20 and 80, in the Rainbow Oscillator indicator value. 
// The depth a certain price has on a chart and into the rainbow can be used to judge 
// the strength of the move.
//
// You can change long to short in the Input Settings
// WARNING:
//  - For purpose educate only
//  - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Rainbow Oscillator Backtest")
Length = input(2, minval=1)
LengthHHLL = input(10, minval=2, title="HHV/LLV Lookback")
reverse = input(false, title="Trade reverse")
xMA1 = sma(close, Length)
xMA2 = sma(xMA1, Length)
xMA3 = sma(xMA2, Length)
xMA4 = sma(xMA3, Length)
xMA5 = sma(xMA4, Length)
xMA6 = sma(xMA5, Length)
xMA7 = sma(xMA6, Length)
xMA8 = sma(xMA7, Length)
xMA9 = sma(xMA8, Length)
xMA10 = sma(xMA9, Length)
xHH = highest(close, LengthHHLL)
xLL = lowest(close, LengthHHLL)
xHHMAs = max(xMA1,max(xMA2,max(xMA3,max(xMA4,max(xMA5,max(xMA6,max(xMA7,max(xMA8,max(xMA9,xMA10)))))))))
xLLMAs = min(xMA1,min(xMA2,min(xMA3,min(xMA4,min(xMA5,min(xMA6,min(xMA7,min(xMA8,min(xMA9,xMA10)))))))))
xRBO = 100 * ((close - ((xMA1+xMA2+xMA3+xMA4+xMA5+xMA6+xMA7+xMA8+xMA9+xMA10) / 10)) / (xHH - xLL))
xRB = 100 * ((xHHMAs - xLLMAs) / (xHH - xLL))
clr = iff(xRBO >= 0, green, red)
pos = iff(xRBO > 0, 1,
       iff(xRBO < 0, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
plot(xRBO, color=clr, title="RO", style= histogram, linewidth=2)
p0 = plot(0, color = gray, title="0")
p1 = plot(xRB, color=green, title="RB")
p2 = plot(-xRB, color=red, title="RB")
fill(p1, p0, color=green)
fill(p2, p0, color=red)

Más.