
La estrategia es un sistema de trading de seguimiento de tendencias basado en el indicador VIDYA (Moving Averages of Variable Indices). La estrategia se adapta a las fluctuaciones del mercado mediante el ajuste dinámico de las ponderaciones, combinando dos métodos de cálculo: el indicador de movimiento de Magneto (CMO) y la diferencia estándar (StDev) para una identificación de tendencias más precisa y la generación de señales de trading. El sistema introduce un mecanismo de auto-adaptación basado en las medias móviles tradicionales, capaz de ajustar automáticamente la sensibilidad según las condiciones del mercado.
El núcleo de la estrategia es el indicador VIDYA, cuyo proceso de cálculo incluye los siguientes pasos clave:
La estrategia permite a los usuarios elegir entre usar el CMO o el estándar de diferencia para calcular el coeficiente de fluctuación, lo que aumenta la flexibilidad de la estrategia. El CMO utiliza 9 ciclos fijos, mientras que el estándar de diferencia es coherente con el ciclo básico.
La estrategia VIDYA ofrece un programa de seguimiento de tendencias relativamente fiable a través de un innovador mecanismo de ponderación de adaptación. La estrategia, al mismo tiempo que mantiene su simplicidad y facilidad de uso, mejora la adaptabilidad a los cambios en el mercado mediante el ajuste dinámico.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-04 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © GriffinJames
//@version=5
strategy("VIDYA Strategy", overlay=true, initial_capital=25000)
// Inputs
src = input(close, title="Source")
pds = input.int(21, title="Length")
fixCMO = input.bool(true, title="Fixed CMO Length (9)?")
select = input.bool(true, title="Calculation Method: CMO/StDev?")
alpha = 2 / (pds + 1)
momm = ta.change(src)
// Functions to calculate MOM
f1(m) => m >= 0.0 ? m : 0.0
f2(m) => m >= 0.0 ? 0.0 : -m
m1 = f1(momm)
m2 = f2(momm)
sm1 = fixCMO ? math.sum(m1, 9) : math.sum(m1, pds)
sm2 = fixCMO ? math.sum(m2, 9) : math.sum(m2, pds)
percent(nom, div) => 100 * nom / div
chandeMO = na(percent(sm1 - sm2, sm1 + sm2)) ? 0 : percent(sm1 - sm2, sm1 + sm2)
// Select calculation method
k = select ? math.abs(chandeMO) / 100 : ta.stdev(src, pds)
// Calculate VIDYA
var float VIDYA = na
VIDYA := na(VIDYA[1]) ? src : alpha * k * src + (1 - alpha * k) * VIDYA[1]
// Conditions for long and short
col12 = VIDYA > VIDYA[1]
col32 = VIDYA < VIDYA[1]
// Plot VIDYA with dynamic colors
color2 = col12 ? color.new(color.blue, 0) : col32 ? color.new(color.maroon, 0) : color.new(color.blue, 0)
plot(VIDYA, "VAR", color=color2, linewidth=2)
// Long and Short Strategy
if (col12)
strategy.entry("Go Long", strategy.long)
if (col32)
strategy.entry("Go Short", strategy.short)
// Alert for VIDYA color change
alertcondition(ta.cross(VIDYA, VIDYA[1]), title="Color ALARM!", message="VIDYA has changed color!")