Strategi ini adalah sistem perdagangan yang mengikuti tren berdasarkan indikator VIDYA (Variable Index Dynamic Average). Strategi ini beradaptasi dengan volatilitas pasar dengan menyesuaikan bobot secara dinamis, menggabungkan metode perhitungan Momentum Oscillator (CMO) dan Standar Deviasi (StDev) Chande
Inti dari strategi ini adalah indikator VIDYA, dengan proses perhitungan termasuk langkah-langkah kunci berikut:
Strategi ini memungkinkan pengguna untuk memilih antara CMO atau standar deviasi untuk perhitungan koefisien volatilitas, meningkatkan fleksibilitas.
Strategi VIDYA menyediakan solusi tren yang relatif dapat diandalkan melalui mekanisme bobot adaptif yang inovatif. Sambil mempertahankan kesederhanaan dan kemudahan penggunaan, strategi meningkatkan kemampuan beradaptasi dengan perubahan pasar melalui penyesuaian dinamis. Meskipun ada beberapa keterbatasan yang melekat, arah optimasi yang disediakan dapat lebih meningkatkan stabilitas dan keandalan strategi. Metode perhitungan ganda menawarkan fleksibilitas yang lebih besar untuk aplikasi di lingkungan pasar yang berbeda.
/*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!")