
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.
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.
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.
La estrategia tiene dos riesgos principales:
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.
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.
La estrategia puede ser optimizada en los siguientes aspectos:
Optimización de los parámetros de ciclo de los indicadores VI, en busca de la mejor combinación de parámetros.
Utiliza métodos de aprendizaje automático para identificar señales engañosas y mejorar la calidad de la señal.
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.
Optimizar la selección de variedades de transacciones, seleccionando mercados con menores costos de transacción.
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.
/*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)