이 전략은 VIDYA (변수 지수 동적 평균) 지표에 기반한 트렌드 다음 거래 시스템이다. 이 전략은 더 정확한 트렌드 식별 및 거래 신호 생성을 달성하기 위해 Chande의 모멘텀 오시레일러 (CMO) 및 표준 편차 (StDev) 계산 방법을 결합하여 가중을 동적으로 조정하여 시장 변동성에 적응합니다. 시스템은 전통적인 이동 평균 위에 적응 메커니즘을 도입하여 시장 조건에 따라 민감도를 자동으로 조정합니다.
전략의 핵심은 VIDYA 지표입니다. 계산 과정에는 다음의 주요 단계가 포함됩니다.
이 전략은 사용자들이 변동성 계수 계산을 위해 CMO 또는 표준 편차를 선택할 수 있도록 해 유연성을 높인다. CMO 모드는 고정된 9주기 주기를 사용하지만 StDev 모드는 기본 기간과 일관성을 유지한다.
VIDYA 전략은 혁신적인 적응형 무게 메커니즘을 통해 비교적 신뢰할 수있는 트렌드 다음 솔루션을 제공합니다. 단순성과 사용 편의성을 유지하면서 전략은 동적 조정으로 시장 변화에 적응력을 향상시킵니다. 일부 고유 한 제한이 있음에도 불구하고 제공된 최적화 방향은 전략 안정성과 신뢰성을 더욱 향상시킬 수 있습니다. 이중 계산 방법은 다른 시장 환경에서 적용을위한 더 큰 유연성을 제공합니다.
/*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!")