Cette stratégie est un système de trading basé sur l'indicateur VIDYA (Variable Index Dynamic Average). La stratégie s'adapte à la volatilité du marché en ajustant dynamiquement les poids, en combinant les méthodes de calcul de l'oscillateur de momentum (CMO) et de l'écart standard (StDev) de Chande
Le noyau de la stratégie est l'indicateur VIDYA, dont le processus de calcul comprend les étapes clés suivantes: 1. Définition de la période de base (par défaut 21) et coefficient d'assouplissement alpha 2. Incorporation de l'OCM ou du StDev comme méthodes de calcul de la volatilité 3. Utiliser la pondération dynamique k pour ajuster la sensibilité de VIDYA à la variation des prix 4. Générer des signaux longs lorsque VIDYA traverse vers le haut et des signaux courts lorsqu'il traverse vers le bas
La stratégie permet aux utilisateurs de choisir entre la CMO ou l'écart type pour le calcul du coefficient de volatilité, ce qui augmente la flexibilité.
La stratégie VIDYA fournit une tendance relativement fiable à la suite d'une solution grâce à des mécanismes de poids adaptatifs innovants. Tout en maintenant la simplicité et la facilité d'utilisation, la stratégie améliore l'adaptabilité aux changements du marché grâce à des ajustements dynamiques. Bien que certaines limitations inhérentes existent, les directions d'optimisation fournies peuvent encore améliorer la stabilité et la fiabilité de la stratégie. Les méthodes de calcul doubles offrent une plus grande flexibilité pour l'application dans différents environnements de marché.
/*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!")