Chiến lược Chỉ số Động lực Động lực

Tác giả:ChaoZhang, Ngày: 2023-09-14 16:15:42
Tags:

Chiến lược logic

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à:

  1. 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

  2. Tính toán độ lệch so với MA trung bình (ví dụ: 50 ngày) là DMI thứ hai

  3. Tính toán độ lệch từ MA ngắn (ví dụ 20 ngày) như DMI thứ ba

  4. 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.

  5. 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.

Ưu điểm

  • 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

Rủi ro

  • 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

Tóm lại

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")

Thêm nữa