Estrategia SMA basada en el indicador de reversión en forma de V


Fecha de creación: 2024-02-18 15:04:34 Última modificación: 2024-02-18 15:04:34
Copiar: 0 Número de Visitas: 648
1
Seguir
1617
Seguidores

Estrategia SMA basada en el indicador de reversión en forma de V

Descripción general

La estrategia SMA basada en un indicador inversor de tipo V se forma en una curva VI+ y VI- calculando la diferencia absoluta entre los máximos de 14 días y los mínimos de 14 días y los máximos de los días anteriores, y sus medias móviles simples de 14 días respectivamente.

Principio de estrategia

Los indicadores centrales de la estrategia son VI+ y VI- │ donde VI+ refleja la fuerza múltiple, y VI- refleja la fuerza vacía │ La fórmula específica de cálculo es la siguiente:

VMP = SUM(ABS(HIGH - LOW[1]),14)
VMM = SUM(ABS(LOW - HIGH[1]),14)  
STR = SUM(ATR(1),14)
VI+ = VMP/STR  
VI- = VMM/STR

Para eliminar la oscilación de la curva, se calculan promedios móviles simples de 14 días para VI+ y VI- respectivamente, obteniendo SMA ((VI+) y SMA ((VI-)) que producen una señal de múltiples cabezas cuando se pasa por SMA ((VI-) en SMA ((VI+) y una señal de cabezas vacías cuando se pasa por SMA ((VI+) bajo SMA ((VI)).

Además, la estrategia también combina los estados de VI+ y VI- para determinar la tendencia, para filtrar, hacer más solo cuando la tendencia es bajista y hacer vacío cuando la tendencia es alcista.

Análisis de las ventajas

Esta estrategia combina el estado de la tendencia con el indicador VI de la horquilla dorada para filtrar eficazmente las señales falsas y aumentar la probabilidad de obtener ganancias. En comparación con la simple estrategia de medias móviles, su señal de ruptura es más confiable.

Análisis de riesgos

La estrategia tiene dos riesgos principales:

  1. El indicador VI puede generar señales engañosas en ciertos períodos. En este caso, se necesita una combinación de filtración de tendencia y stop loss para controlar el riesgo.

  2. Los mercados con altas tarifas de transacción y costos de deslizamiento no son adecuados para esta estrategia y reducen considerablemente el margen de ganancias.

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Optimización de los parámetros de ciclo de los indicadores VI, en busca de la mejor combinación de parámetros.

  2. Utiliza métodos de aprendizaje automático para identificar señales engañosas y mejorar la calidad de la señal.

  3. La combinación de los mecanismos de salida optimizados para el control de las pérdidas de una sola transacción, junto con el stop loss y la gestión de fondos.

  4. Optimizar la selección de variedades de transacciones, seleccionando mercados con menores costos de transacción.

Resumir

La estrategia SMA basada en el indicador de inversión de tipo V, que determina el momento de compra y venta mediante el cálculo de los indicadores VI+ y VI- y la combinación del estado de la tendencia, es una estrategia de seguimiento de tendencias más confiable. La ventaja de esta estrategia es que la calidad de la señal es buena y filtra el ruido de manera efectiva.

Código Fuente de la Estrategia
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//@author=SIDD
//Sidd-Vortex strategy is using Vortex formula  to generate 4 signals Bullish1 Bullish2 and Bearish1 Bearish2.

//Bullish1 signal is getting generated when smooth ma of VIP is crossing over smooth ma of VIM and smooth VIM is falling from previous bar smooth VIM

//Bullish2 signal is getting generated when smooth ma of VIP is crossing over smooth ma of VIM and smooth VIP is rising from previous bar smooth VIP

//Bearish1 signal is getting generated when smooth ma of VIM is crossing over smooth ma of VIP and smooth VIP is falling from previous bar smooth VIP

//Bearish2 signal is getting generated when smooth ma of VIM is crossing over smooth ma of VIP and smooth VIM is rising from previous bar smooth VIM

//This strategy can be converted into study un-commenting the plotshape and 15th line strategy replace with study and overlay=false

strategy(title = "SIDD-Vortex", shorttitle="SIDD-VORTEX", format=format.price, precision=4,overlay=true)
period_ = input(14, title="Period", minval=2)
len = input(14, minval=1, title="WMA Length")

VMP = sum( abs( high - low[1]), period_ ) // sum of absolute current high and previous low with 14 period default
VMM = sum( abs( low - high[1]), period_ ) // sum of absolute current low and previous high with 14 period default
STR = sum( atr(1), period_ )  //sum of daily atr for 14 days
VIP = VMP / STR
VIM = VMM / STR

simpleMAVIP=wma(VIP, len) 
smmaVIP = 0.0
smmaVIP := na(smmaVIP[1]) ? simpleMAVIP : (smmaVIP[1] * (len - 1) + VIP) / len // finding the Smoothing average 

simpleMAVIM=wma(VIM, len) 
smmaVIM = 0.0
smmaVIM := na(smmaVIM[1]) ? simpleMAVIM : (smmaVIM[1] * (len - 1) + VIM) / len // finding the Smoothing average 


risingVIP = rising(smmaVIP, 1)
fallingVIP = falling(smmaVIP, 1)

lineColorVIP = smmaVIP > 0.95 and risingVIP  ? color.lime : smmaVIP > 0.95 ? #d65240 : smmaVIP < 0.95 and fallingVIP ? color.red : color.olive

risingVIM = rising(VIM, 1)
fallingVIM = falling(VIM, 1)

lineColorVIM = smmaVIM > 0.95 and risingVIM  ? color.red : smmaVIM > 0.95 ? color.olive : smmaVIM < 0.95 and fallingVIM ? color.lime : #d65240

plot(VIP, title="VI +", color=lineColorVIP)
plot(VIM, title="VI -", color=lineColorVIM) 

longCondition = crossover(smmaVIP,smmaVIM)
shortCondition = crossover(smmaVIM,smmaVIP)


if (longCondition and fallingVIM)
    strategy.entry("Bullish1", strategy.long)
if (shortCondition and fallingVIP)
    strategy.entry("Bearish1", strategy.short)

if (longCondition and risingVIP)
    strategy.entry("Bullish2", strategy.long)
if (shortCondition and risingVIM)
    strategy.entry("Bearish2", strategy.short)
    
//plotshape(longCondition and fallingVIM, color=color.lime, location=location.belowbar, style=shape.triangleup,size= size.large,text="Bullish",offset=0,textcolor=color.white)
//plotshape(longCondition and risingVIP, color=color.lime, location=location.belowbar, style=shape.labelup,size= size.large,text="Bullish",offset=0,textcolor=color.white)
//plotshape(Diff > 0 and direction>0, color=color.lime, location=location.belowbar, style=shape.arrowup,size= size.normal,offset=0)
    
//plotshape(shortCondition and fallingVIP  , color=color.red, location=location.abovebar, style=shape.triangledown, size= size.large,text="Bearish",offset=0,textcolor=color.white)
//plotshape( shortCondition and risingVIM  , color=color.red, location=location.abovebar, style=shape.labeldown, size= size.large,text="Bearish",offset=0,textcolor=color.white)



//band1 = hline(1.0  , title="Upper Line", linestyle=hline.style_dashed, linewidth=3, color=color.red)
//band0 = hline(0.5, title="Lower Line", linestyle=hline.style_dashed, linewidth=3, color=color.lime)
//fill(band1, band0, color=color.purple, transp=70)