Chiến lược này giao dịch dựa trên Chỉ số Động lực Động lực (DMI). DMI đo độ lệch tỷ lệ phần trăm giữa giá và trung bình động của các chiều dài khác nhau để xác định xu hướng.
Logic giao dịch là:
Tính toán độ lệch tỷ lệ phần trăm của giá so với MA dài (ví dụ 200 ngày) như DMI đầu tiên
Tính toán độ lệch so với MA trung bình (ví dụ: 50 ngày) là DMI thứ hai
Tính toán độ lệch từ MA ngắn (ví dụ 20 ngày) như DMI thứ ba
Khi DMI thứ 3 cao hơn DMI thứ 1, giảm. Khi DMI thứ 3 thấp hơn DMI thứ 2, tăng.
Các tín hiệu giao dịch được tạo dựa trên mối quan hệ DMI
Bằng cách so sánh sức mạnh tương đối theo động trong các giai đoạn MA, DMI nhằm mục đích xác định các điểm chuyển hướng xu hướng. Các tham số có thể được tối ưu hóa cho các chu kỳ khác nhau.
DMI kết hợp nhiều thời gian nhìn lại cho độ bền
So sánh sức mạnh tương đối so với mức độ tuyệt đối
Thời gian MA linh hoạt để điều chỉnh thị trường
DMI có sự chậm trễ và có thể bỏ lỡ sự đảo ngược
Tối ưu hóa cẩn thận các thông số thời gian
Có nhiều tín hiệu sai
DMI đánh giá các bước ngoặt bằng cách so sánh động lực sức mạnh nhiều giai đoạn MA. Tối ưu hóa có thể phù hợp với các môi trường thị trường khác nhau.
/*backtest start: 2023-08-14 00:00:00 end: 2023-09-13 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 31/06/2018 // The related article is copyrighted materialfrom Stocks & Commodities Dec 2009 // My strategy modification. // // You can change long to short in the Input Settings // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// strategy(title="CMOaDisparity Index Backtest") LengthFirst = input(200, minval=1) LengthSecond = input(50, minval=1) LengthThird = input(20, minval=1) ShowFirst = input(type=bool, defval=true) ShowSecond = input(type=bool, defval=true) ShowThird = input(type=bool, defval=true) reverse = input(false, title="Trade reverse") xEMAFirst = ema(close,LengthFirst) xEMASecond = ema(close,LengthSecond) xEMAThird = ema(close,LengthThird) xResFirst = 100 * (close - xEMAFirst) / close xResSecond = 100 * (close - xEMASecond) / close xResThird = 100 * (close - xEMAThird) / close pos = iff(xResThird > xResFirst, -1, iff(xResThird < xResSecond, 1, nz(pos[1], 0))) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) barcolor(possig == -1 ? red: possig == 1 ? green : blue ) plot(ShowFirst ? xResFirst : na, color=red, title="DIX 1") plot(ShowSecond ? xResSecond : na, color=blue, title="DIX 2") plot(ShowThird ? xResThird : na, color=green, title="DIX 3")