Chiến lược theo dõi xu hướng ADX hướng lên động


Ngày tạo: 2023-12-11 17:18:32 sửa đổi lần cuối: 2023-12-11 17:18:32
sao chép: 0 Số nhấp chuột: 436
1
tập trung vào
1212
Người theo dõi

Chiến lược theo dõi xu hướng ADX hướng lên động

Tổng quan

Chiến lược này thực hiện theo dõi xu hướng kịp thời bằng cách theo dõi sự thay đổi động lực của chỉ số ADX, nắm bắt sự thay đổi ban đầu của xu hướng thị trường. Khi ADX tăng nhanh từ mức thấp, điều này cho thấy xu hướng đang hình thành, đây là thời điểm tốt để tham gia.

Nguyên tắc chiến lược

Chiến lược này chủ yếu dựa trên sự thay đổi động lực của chỉ số ADX để đánh giá sự phát triển của xu hướng. Khi chỉ số ADX ở mức thấp, nó đại diện cho sự thay đổi xu hướng không lớn; khi ADX tăng nhanh từ mức thấp, nó cho thấy xu hướng đang hình thành. Chiến lược này nắm bắt sự phát triển của xu hướng bằng cách theo dõi sự tăng nhanh của ADX.

Cụ thể hơn, chiến lược này được đánh giá dựa trên một số điều kiện:

  1. ADX trên đeo ngưỡng thiết lập ((như 10)
  2. ADX tăng mạnh
  3. Giá trên một trung bình di chuyển đơn giản hoặc trung bình di chuyển chỉ số

Khi các điều kiện trên được đáp ứng cùng một lúc, đại diện cho xu hướng đang hình thành, làm nhiều hơn; khi hiện tại đi qua đường trung bình di chuyển, bằng phẳng. Sử dụng hai đường trung bình di chuyển, bạn có thể đánh giá chính xác hơn về sự phát triển của xu hướng.

Các điều kiện dừng lỗ cũng tương tự, khi ADX giảm nhanh xuống, nó sẽ tháo dỡ; khi giá phá vỡ đường trung bình di chuyển, nó sẽ tháo dỡ.

Phân tích lợi thế

Lợi thế lớn nhất của chiến lược này là bắt kịp sự phát triển của xu hướng. Phương pháp truyền thống chỉ nhìn vào giá trị ADX, thường phải chờ ADX tăng lên 20 hoặc 25 để xác nhận xu hướng, điều này đã bỏ lỡ thời gian nhập cảnh tốt nhất. Chiến lược này có thể nắm bắt được sự phát triển của xu hướng bằng cách theo dõi sự gia tăng nhanh chóng của ADX.

Ngoài ra, chiến lược cũng giới thiệu các trung bình di chuyển để hỗ trợ, có thể lọc một số trường hợp chẩn đoán sai và cải thiện tính ổn định của chiến lược.

Phân tích rủi ro và tối ưu hóa

Rủi ro lớn nhất của chiến lược này là sự chậm trễ của chỉ số ADX. Mặc dù có thể thu hẹp sự chậm trễ bằng cách theo dõi các giai đoạn tăng nhanh, nhưng vẫn còn một số sự chậm trễ. Điều này sẽ khiến một số thị trường đảo ngược nhanh chóng không thể bị bắt.

Ngoài ra, chỉ số ADX cũng không chính xác 100% trong việc đánh giá xu hướng, và chắc chắn sẽ có một số chẩn đoán sai. Mặc dù giới thiệu trung bình di chuyển có thể lọc một số tiếng ồn, nhưng vẫn cần tối ưu hóa hơn nữa.

Chiến lược này vẫn còn rất nhiều không gian tối ưu hóa, chìa khóa là nâng cao hơn nữa độ chính xác chụp các chỉ số ADX. Các phương pháp như giới thiệu học máy, mô hình đào tạo để đánh giá phân bố xác suất sau khi thay đổi ADX có thể được xem xét. Ngoài ra, bạn cũng có thể thử các kết hợp tham số khác nhau, các phương pháp hỗ trợ khác để tối ưu hóa thử nghiệm.

Tóm tắt

Chiến lược theo dõi xu hướng ADX tăng động này, bằng cách nắm bắt các điểm thay đổi của thị trường khi ADX tăng nhanh, để theo dõi xu hướng kịp thời. Ưu điểm lớn nhất là thời gian cực kỳ nhanh chóng, có thể nắm bắt xu hướng hiệu quả sớm.

Mã nguồn chiến lược
/*backtest
start: 2023-12-03 00:00:00
end: 2023-12-10 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © dhilipthegreat

//@version=4
//Rising ADX strategy

strategy(title="Rising ADX strategy", overlay=false)

adxlen = input(14, title="ADX Length", minval=1)
threshold = input(10, title="threshold", minval=5)

hline(threshold, color=color.black, linestyle=hline.style_dashed)

atype = input(2,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA")
malen=input(20, title="Moving average 1 ",minval=1, maxval=50)
avg = atype == 1 ? sma(close,malen) : atype == 2 ? ema(close,malen) : atype == 3 ? wma(close,malen) : atype == 4 ? hma(close,malen) : na

atype2 = input(2,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA")
malen2=input(20, title="Moving average 2",minval=1, maxval=200)
avg2 = atype2 == 1 ? sma(close,malen2) : atype2 == 2 ? ema(close,malen2) : atype2 == 3 ? wma(close,malen2) : atype2 == 4 ? hma(close,malen2) : na

//ADX&DI
dilen = 14
dirmov(len,_high,_low,_tr) =>
	up = change(_high)
	down = -change(_low)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
    minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = rma(_tr, len)
	
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)

	[plus, minus]

adx(dilen, adxlen,_high,_low,_tr) =>
	[plus, minus] = dirmov(dilen,_high,_low,_tr)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)

[plus, minus] = dirmov(dilen,high,low,tr)
sig = adx(dilen, adxlen,high,low,tr)
prev_sig = adx(dilen, adxlen,high[1],low[1],tr)
plot(sig ? sig : na, color = rising(sig, 1) ? color.lime : falling(sig, 1) ? color.orange : color.purple, title="ADX",linewidth=2)

//////
longCondition=  sig > threshold  and rising(sig, 1) and falling(prev_sig, 1) and close > avg and close > avg2
barcolor(longCondition ? color.yellow: na)
Long_side = input(true, "Long side")
if Long_side
    strategy.entry(id="Long", long=true,  when= longCondition  and strategy.position_size<1)
    exitCondition=  (rising(prev_sig, 1) and falling(sig, 1)) or close < avg and close < avg2
    strategy.close(id="Long",comment="L exit",    qty=strategy.position_size ,   when= exitCondition)   //close all

shortCondition=  sig > threshold  and rising(sig, 1) and falling(prev_sig, 1) and close < avg and close < avg2
barcolor(shortCondition ? color.gray: na)
Short_side = input(true, "Short side")
if Short_side
    strategy.entry(id="Short", long=false,  when= shortCondition  and strategy.position_size<1)
    sell_exitCondition=  (rising(prev_sig, 1) and falling(sig, 1)) or close > avg and close > avg2
    strategy.close(id="Short",comment="S exit",    qty=strategy.position_size ,   when= sell_exitCondition)   //close all

barcolor(strategy.position_size>1 ? color.lime: na)
bgcolor(strategy.position_size>1 ? color.lime: na)

barcolor(strategy.position_size<0 ? color.orange: na)
bgcolor(strategy.position_size<0 ? color.orange: na)