
Strategi ini adalah sistem perdagangan trend-tracking berdasarkan indikator VIDA ((variable index moving average)). Strategi ini menyesuaikan diri dengan turun naik pasaran dengan penyesuaian dinamik dengan berat, menggabungkan kedua-dua kaedah pengiraan CMO dan standard deviation (StDev) untuk mengenal pasti trend yang lebih tepat dan menghasilkan isyarat perdagangan. Sistem ini memperkenalkan mekanisme penyesuaian diri berdasarkan purata bergerak tradisional yang dapat menyesuaikan sensitiviti secara automatik mengikut keadaan pasaran.
Di tengah-tengah strategi ini adalah indikator Vidya, yang proses pengiraan terdiri daripada beberapa langkah penting berikut:
Strategi ini membolehkan pengguna memilih untuk menggunakan CMO atau standard deviation untuk mengira faktor kadar turun naik, meningkatkan fleksibiliti strategi. Dalam mod CMO, 9 kitaran digunakan secara tetap, manakala dalam mod standard deviation konsisten dengan kitaran asas.
Strategi VIDYA menyediakan strategi pengesanan trend yang agak dipercayai melalui mekanisme penimbangan penyesuaian diri yang inovatif. Strategi ini meningkatkan kemampuan untuk menyesuaikan diri dengan perubahan pasaran melalui penyesuaian dinamik, sambil tetap mudah digunakan. Walaupun masih ada beberapa batasan yang wujud, strategi ini dapat meningkatkan lagi kestabilan dan kebolehpercayaan dengan memberikan arah pengoptimuman.
/*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!")