Diese Strategie ist ein Trend-nachfolgendes Handelssystem, das auf dem VIDYA (Variable Index Dynamic Average) -Indikator basiert. Die Strategie passt sich an die Marktvolatilität an, indem sie die Gewichte dynamisch anpasst und Chande's Momentum Oscillator (CMO) und Standard Deviation (StDev) -Berechnungsmethoden kombiniert, um eine genauere Trendidentifizierung und Handelssignalgenerierung zu erzielen. Das System führt einen adaptiven Mechanismus zusätzlich zu traditionellen gleitenden Durchschnitten ein und passt die Empfindlichkeit automatisch an, basierend auf den Marktbedingungen.
Der Kern der Strategie ist der VIDYA-Indikator, dessen Berechnungsverfahren folgende Schlüsselschritte umfasst:
Die Strategie ermöglicht es den Nutzern, für die Berechnung des Volatilitätskoeffizienten zwischen CMO oder Standardabweichung zu wählen, wodurch die Flexibilität erhöht wird.
Die VIDYA-Strategie bietet einen relativ zuverlässigen Trend nach Lösung durch innovative adaptive Gewichtsmechanismen. Bei gleichzeitiger Einfachheit und Benutzerfreundlichkeit verbessert die Strategie die Anpassungsfähigkeit an Marktveränderungen durch dynamische Anpassungen. Obwohl einige inhärente Einschränkungen bestehen, können die bereitgestellten Optimierungsrichtungen die Strategie Stabilität und Zuverlässigkeit weiter verbessern. Die duale Berechnungsmethoden bieten mehr Flexibilität für die Anwendung in verschiedenen Marktumgebungen.
/*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!")