Estrategia dual: estrategia combinada de indicadores RSI y estocásticos


Fecha de creación: 2023-10-07 16:19:30 Última modificación: 2023-10-07 16:19:30
Copiar: 0 Número de Visitas: 971
1
Seguir
1617
Seguidores

Descripción general

La estrategia utiliza un índice relativamente fuerte (RSI) junto con una combinación de indicadores aleatorios para formar una estrategia doble para juzgar con mayor precisión el estado de sobrecompra y sobreventa del mercado y así obtener una señal de negociación más confiable.

Principio de estrategia

En esta estrategia, el RSI tiene una longitud de 14 ciclos, un umbral de compra excesiva de 70 y un umbral de venta excesiva de 30. El valor de K de un indicador aleatorio se calcula con una media de 3 ciclos y el valor de D con una media de 3 ciclos de los valores de K. Se determina que es una señal de sobrecompra cuando la línea K se rompe desde abajo hacia arriba y, a la inversa, es una señal de sobreventa.

La estrategia utiliza una combinación de indicadores RSI y aleatorios para emitir señales de comercio:

  1. Cuando un indicador aleatorio aparece cruzando (la línea K cruza la línea D desde abajo) y el indicador RSI está por encima de 70, se determina como una señal de sobrecompra y de baja.

  2. Cuando un indicador aleatorio aparece por debajo (la línea K pasa por debajo de la línea D desde arriba), mientras que el indicador RSI está por debajo de 30, se determina que es una señal de sobreventa, hacer más.

La estrategia de doble combinación aprovecha las ventajas del RSI para determinar sobrecompra y sobreventa, mientras que combina la tendencia de los indicadores aleatorios para filtrar las falsas señales y así generar una señal de negociación más confiable.

Análisis de las ventajas

La mayor ventaja de esta doble estrategia es que puede reducir efectivamente las señales falsas y aumentar la fiabilidad de la señal.

Cuando se usa el indicador RSI por separado, se producen más señales falsas. Esto se debe a que el indicador RSI por sí solo juzga el estado de sobrecompra y sobreventa de los precios y no refleja la dirección de la tendencia. Por lo tanto, la mayor cantidad de señales RSI por separado es poco confiable.

El indicador aleatorio puede determinar la dirección de la tendencia de los precios. El cruce de la línea D en la línea K indica que la tendencia al alza de los precios puede continuar, en este caso, la señal de superación de compra del RSI es más confiable y se juzga como una superación real y no como una superación falsa.

Por el contrario, un K bajo la línea D indica que la tendencia de los precios puede revertirse, incluso si el RSI muestra una señal de sobreventa, también puede ser una falsa sobreventa y no negociar.

Por lo tanto, el uso combinado de RSI y el indicador aleatorio permite una mejor comprensión de la situación de sobreventa y sobrecompra de los precios y la dirección de la tendencia, filtrando una gran cantidad de señales no confiables para obtener un tiempo de negociación más preciso.

Análisis de riesgos

La estrategia también tiene ciertos riesgos a tener en cuenta:

  1. El uso de combinaciones de indicadores dobles puede filtrar las señales falsas, pero también puede perder parte de las señales reales y perder oportunidades de negociación.

  2. La configuración de los parámetros de RSI y el indicador aleatorio requiere una buena relación, por ejemplo, el ciclo RSI es demasiado corto, el indicador aleatorio K, el valor de la suavidad de D es inadecuado, y esto puede afectar la precisión de la señal.

  3. Cuando el indicador emite una señal, también se necesita una confirmación en combinación con factores como el movimiento del precio, el volumen de transacciones, etc., para evitar entrar en falsas rupturas.

  4. En la actualidad, la mayoría de los países de la Unión Europea están en la fase de transición hacia una economía de mercado, y la mayoría de los países de la Unión Europea están en la fase de transición.

Dirección de optimización

La estrategia también puede ser optimizada en los siguientes aspectos:

  1. Optimización de los parámetros del RSI y el indicador aleatorio para encontrar la combinación óptima de parámetros. Se pueden ajustar los parámetros a través de datos de retroalimentación o se pueden optimizar dinámicamente los parámetros con métodos de aprendizaje automático.

  2. Aumentar los indicadores de confirmación del volumen de transacciones, como el aumento del volumen de transacciones para validar las señales de compra y venta.

  3. Combinación de indicadores de confirmación de tendencias como la media móvil para evitar ser arrastrado por el movimiento de la bolsa. Por ejemplo, considere una señal de compra solo cuando la tendencia es alcista.

  4. El uso de métodos de aprendizaje automático para identificar reglas de compra y venta más complejas, como la combinación de señales como las bandas de Brin y las formas de precios, mejora la estabilidad de la estrategia.

  5. Utilizando tecnologías de vanguardia como el aprendizaje profundo para desarrollar sistemas de negociación diversificados más inteligentes y optimizar las reglas de estrategia en un espacio de muestra más grande.

Resumir

La estrategia de doble combinación de RSI y indicadores aleatorios, a través de la idea de la integración de indicadores, aprovecha razonablemente las ventajas de cada indicador, formando un efecto complementario. Su indicador RSI individual tiene una mayor precisión de filtración de señales, lo que permite obtener una señal de negociación más precisa y confiable. Sin embargo, se debe tener en cuenta la optimización de parámetros, la gestión de riesgos, etc. La estrategia puede extenderse a otras combinaciones de indicadores para descubrir estrategias de negociación cuantitativas más efectivas.

Código Fuente de la Estrategia
/*backtest
start: 2022-09-30 00:00:00
end: 2023-10-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//Based on Divergences and Hidden Divergences
//Locates bottom market and reversals

strategy("Vix FIX / StochRSI Strategy", pyramiding=9, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=3, overlay=false)

///////////// Stochastic Slow
Stochlength = input(14, minval=1, title="lookback length of Stochastic")
StochOverBought = input(80, title="Stochastic overbought condition")
StochOverSold = input(20, title="Stochastic oversold condition")
smoothK = input(3, title="smoothing of Stochastic %K ")
smoothD = input(3, title="moving average of Stochastic %K")
k = sma(stoch(close, high, low, Stochlength), smoothK)
d = sma(k, smoothD)

 
///////////// RSI 
RSIlength = input( 14, minval=1 , title="lookback length of RSI")
RSIOverBought = input( 70  , title="RSI overbought condition")
RSIOverSold = input( 30  , title="RSI oversold condition")
RSIprice = close
vrsi = rsi(RSIprice, RSIlength)

///////////// Double strategy: RSI strategy + Stochastic strategy

pd = input(22, title="LookBack Period Standard Deviation High")
bbl = input(20, title="Bolinger Band Length")
mult = input(2.0    , minval=1, maxval=5, title="Bollinger Band Standard Devaition Up")
lb = input(50  , title="Look Back Period Percentile High")
ph = input(.85, title="Highest Percentile - 0.90=90%, 0.95=95%, 0.99=99%")
new = input(false, title="-------Text Plots Below Use Original Criteria-------" )
sbc = input(false, title="Show Text Plot if WVF WAS True and IS Now False")
sbcc = input(false, title="Show Text Plot if WVF IS True")
new2 = input(false, title="-------Text Plots Below Use FILTERED Criteria-------" )
sbcFilt = input(true, title="Show Text Plot For Filtered Entry")
sbcAggr = input(true, title="Show Text Plot For AGGRESSIVE Filtered Entry")
ltLB = input(40, minval=25, maxval=99, title="Long-Term Look Back Current Bar Has To Close Below This Value OR Medium Term--Default=40")
mtLB = input(14, minval=10, maxval=20, title="Medium-Term Look Back Current Bar Has To Close Below This Value OR Long Term--Default=14")
str = input(3, minval=1, maxval=9, title="Entry Price Action Strength--Close > X Bars Back---Default=3")
//Alerts Instructions and Options Below...Inputs Tab
new4 = input(false, title="-------------------------Turn On/Off ALERTS Below---------------------" )
new5 = input(false, title="----To Activate Alerts You HAVE To Check The Boxes Below For Any Alert Criteria You Want----")
sa1 = input(false, title="Show Alert WVF = True?")
sa2 = input(false, title="Show Alert WVF Was True Now False?")
sa3 = input(false, title="Show Alert WVF Filtered?")
sa4 = input(false, title="Show Alert WVF AGGRESSIVE Filter?")

//Williams Vix Fix Formula
wvf = ((highest(close, pd)-low)/(highest(close, pd)))*100
sDev = mult * stdev(wvf, bbl)
midLine = sma(wvf, bbl)
lowerBand = midLine - sDev
upperBand = midLine + sDev
rangeHigh = (highest(wvf, lb)) * ph

//Filtered Bar Criteria
upRange = low > low[1] and close > high[1]
upRange_Aggr = close > close[1] and close > open[1]
//Filtered Criteria
filtered = ((wvf[1] >= upperBand[1] or wvf[1] >= rangeHigh[1]) and (wvf < upperBand and wvf < rangeHigh))
filtered_Aggr = (wvf[1] >= upperBand[1] or wvf[1] >= rangeHigh[1]) and not (wvf < upperBand and wvf < rangeHigh)

//Alerts Criteria
alert1 = wvf >= upperBand or wvf >= rangeHigh ? 1 : 0
alert2 = (wvf[1] >= upperBand[1] or wvf[1] >= rangeHigh[1]) and (wvf < upperBand and wvf < rangeHigh) ? 1 : 0
alert3 = upRange and close > close[str] and (close < close[ltLB] or close < close[mtLB]) and filtered ? 1 : 0
alert4 = upRange_Aggr and close > close[str] and (close < close[ltLB] or close < close[mtLB]) and filtered_Aggr ? 1 : 0

//Coloring Criteria of Williams Vix Fix
col = wvf >= upperBand or wvf >= rangeHigh ? lime : gray

isOverBought = (crossover(k,d) and k > StochOverBought) ? 1 : 0
isOverBoughtv2 = k > StochOverBought ? 1 : 0
filteredAlert = alert3 ? 1 : 0
aggressiveAlert = alert4 ? 1 : 0

plot(isOverBought, "Overbought / Crossover", style=line, color=red) 
plot(filteredAlert, "Filtered Alert", style=line, color=fuchsia) 
plot(aggressiveAlert, "Aggressive Alert", style=line, color=orange)

if (filteredAlert or aggressiveAlert)
    strategy.entry("Long", strategy.long)

if (isOverBought)
    strategy.close("Long")