Chiến lược này là một hệ thống giao dịch theo xu hướng dựa trên chỉ số VIDYA (Chỉ số động biến). Chiến lược thích nghi với sự biến động của thị trường bằng cách điều chỉnh động trọng lượng, kết hợp phương pháp tính toán Momentum Oscillator (CMO) và Standard Deviation (StDev) của Chande để đạt được xác định xu hướng chính xác hơn và tạo ra tín hiệu giao dịch. Hệ thống giới thiệu một cơ chế thích nghi trên đỉnh của các đường trung bình động truyền thống, tự động điều chỉnh độ nhạy dựa trên điều kiện thị trường.
Cốt lõi của chiến lược là chỉ số VIDYA, với quy trình tính toán bao gồm các bước chính sau:
Chiến lược cho phép người dùng lựa chọn giữa CMO hoặc độ lệch chuẩn để tính toán hệ số biến động, tăng sự linh hoạt.
Chiến lược VIDYA cung cấp một xu hướng tương đối đáng tin cậy sau giải pháp thông qua các cơ chế cân tính thích ứng sáng tạo. Trong khi duy trì tính đơn giản và dễ sử dụng, chiến lược cải thiện khả năng thích nghi với những thay đổi của thị trường thông qua các điều chỉnh năng động. Mặc dù có một số hạn chế vốn có, các hướng tối ưu hóa được cung cấp có thể tăng cường sự ổn định và độ tin cậy của chiến lược. Các phương pháp tính toán kép cung cấp sự linh hoạt hơn cho ứng dụng trong các môi trường thị trường khác nhau.
/*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!")