
Chiến lược này là một hệ thống giao dịch theo dõi xu hướng dựa trên các chỉ số VIDA (chỉ số động trung bình biến số). Chiến lược này thích ứng với biến động thị trường bằng cách điều chỉnh động lực trọng lượng, kết hợp hai phương pháp tính toán của chỉ số động lượng Canxi (CMO) và chênh lệch tiêu chuẩn (StDev) để nhận diện xu hướng chính xác hơn và tạo tín hiệu giao dịch. Hệ thống đã giới thiệu cơ chế tự thích ứng dựa trên các đường trung bình di chuyển truyền thống, có thể tự động điều chỉnh độ nhạy theo tình trạng thị trường.
Nền tảng của chiến lược là chỉ số VIDYA, và quá trình tính toán bao gồm một số bước quan trọng sau:
Chiến lược này cho phép người dùng lựa chọn sử dụng CMO hoặc chênh lệch tiêu chuẩn để tính toán hệ số biến động, tăng tính linh hoạt của chiến lược. Phương thức CMO sử dụng 9 chu kỳ cố định, trong khi phương thức chênh lệch tiêu chuẩn phù hợp với chu kỳ cơ bản.
Chiến lược VIDYA cung cấp một chương trình theo dõi xu hướng tương đối đáng tin cậy thông qua cơ chế trọng lượng thích ứng sáng tạo. Chiến lược này giúp tăng khả năng thích ứng với sự thay đổi của thị trường thông qua điều chỉnh động, trong khi vẫn giữ được sự đơn giản và dễ sử dụng. Mặc dù vẫn có một số hạn chế vốn có, nhưng sự ổn định và độ tin cậy của chiến lược có thể được nâng cao hơn nữa bằng cách cung cấp hướng tối ưu hóa. Phương pháp tính toán kép của chiến lược cung cấp tính 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!")