
Die Strategie ist ein Trend-Tracking-Trading-System basierend auf den Indikatoren VIDA und Variable Index Moving Average. Die Strategie passt sich der Marktfluktuation an, indem sie dynamische Gewichte anpasst. Die Strategie kombiniert zwei Berechnungsmethoden, den Konjunkturindikator (CMO) und die Standarddifferenz (StDev), um eine genauere Trenderkennung und Handelssignalgenerierung zu ermöglichen.
Im Zentrum der Strategie steht der Indikator VIDYA, dessen Berechnung folgende Schlüsselschritte umfasst:
Die Strategie erlaubt den Benutzern die Wahl zwischen der Verwendung von CMO oder Standarddifferenz zur Berechnung des Volatilitätskoeffizienten und erhöht die Flexibilität der Strategie. Im CMO-Modus werden 9 Zyklen fixiert, während der Standarddifferenzmodus mit der Basisphase übereinstimmt.
Die VIDYA-Strategie bietet ein relativ zuverlässiges Trend-Tracking-System durch eine innovative Adaptionsgewichtung. Die Strategie ist einfach und benutzerfreundlich und verbessert die Anpassungsfähigkeit an Marktveränderungen durch dynamische Anpassung. Obwohl es noch einige inhärente Einschränkungen gibt, kann die Stabilität und Zuverlässigkeit der Strategie durch die Bereitstellung von Optimierungsrichtungen weiter verbessert werden.
/*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!")