Chiến lược giao dịch ADX Crossover


Ngày tạo: 2023-12-08 15:49:12 sửa đổi lần cuối: 2023-12-08 15:49:12
sao chép: 0 Số nhấp chuột: 961
1
tập trung vào
1621
Người theo dõi

Chiến lược giao dịch ADX Crossover

Tổng quan

Chiến lược này kết hợp với việc sử dụng chỉ số chỉ số chuyển động trung bình ((ADX) và chỉ số chuyển động hướng lên ((DI +) để xác định hướng và xu hướng của thị trường, đồng thời sử dụng trung bình di chuyển nhanh và chậm để xác định hướng giao dịch và thời gian nắm giữ, thuộc chiến lược giao dịch theo xu hướng. Chiến lược này có thể nắm bắt hiệu quả các điểm đảo ngược của đường ngắn và hoạt động tốt hơn trong thị trường có biến động thấp và xu hướng rõ ràng.

Nguyên tắc

Lý thuyết cốt lõi của chiến lược này là khi đường +DI vượt qua ADX từ phía dưới tạo ra tín hiệu mua, và khi đường +DI đi xuống ADX từ phía trên tạo ra tín hiệu bán. Do đó, chiến lược này phụ thuộc vào sự giao thoa giữa các chỉ số DI và ADX để xác định xu hướng thị trường và điểm đảo ngược. Trong khi đó, mối quan hệ giữa đường nhanh và trung bình được sử dụng để xác định xu hướng thị trường tổng thể và chỉ xem xét tạo ra tín hiệu giao dịch khi EMA nhanh cao hơn EMA chậm.

Cụ thể, một tín hiệu mua sẽ được phát ra khi các điều kiện sau đây được đáp ứng: 1, EMA nhanh cao hơn EMA chậm 2 , + đường DI phá vỡ đường ADX từ phía dưới 3, ADX thấp hơn 30

Một tín hiệu bán hàng được phát ra khi các điều kiện sau được đáp ứng: 1, ADX cao hơn 30 2 , + đường DI từ trên xuống đường ADX

Chiến lược này cũng bổ sung logic dừng lỗ, rút khỏi tất cả các vị trí khi giá thấp hơn giá dừng lỗ.

Ưu điểm

Chiến lược này kết hợp với DI, ADX và chỉ số đường trung bình, có thể xác định hiệu quả điểm thay đổi xu hướng thị trường. Nó có những lợi thế sau:

  1. Sử dụng chỉ số DI và ADX để xác định tín hiệu đảo ngược xu hướng, định vị chính xác điểm vào và điểm ra
  2. Hệ thống lọc EMA nhanh chóng cung cấp sự phán đoán xu hướng lớn, tránh giao dịch sai
  3. Sử dụng giá trị ADX để đánh giá xu hướng mạnh hoặc yếu, chỉ giao dịch khi xu hướng yếu, tránh rủi ro phá vỡ giả
  4. Tham gia vào các cơ chế ngăn chặn để kiểm soát rủi ro giảm giá
  5. Điều kiện nhập cảnh nghiêm ngặt, tránh rủi ro mua và bán agiri
  6. Điều kiện ra sân rõ ràng, dừng lỗ và dừng chân kịp thời

Rủi ro

Chiến lược này cũng có một số rủi ro cần lưu ý:

  1. Chỉ số ADX bị tụt hậu, có thể bỏ lỡ thời điểm tốt nhất để giá đảo ngược
  2. Các chỉ số ADX và DI sẽ tạo ra nhiều tín hiệu sai khi thị trường bị biến động lớn hơn
  3. Thiết lập đường trung bình không chính xác có thể dẫn đến cơ hội giao dịch bị bỏ lỡ hoặc tín hiệu lọc sai
  4. Giá dừng lỗ được thiết lập quá lỏng lẻo, không kiểm soát rủi ro hiệu quả

Những rủi ro này có thể được cải thiện bằng cách tối ưu hóa các tham số ADX và đường trung bình, điều chỉnh mức dừng lỗ, kết hợp với các tín hiệu xác nhận các chỉ số khác.

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa hơn nữa:

  1. ADX có thể được thử nghiệm với các chu kỳ khác nhau để tìm ra sự kết hợp tham số tốt nhất
  2. Các chỉ số khác có thể được thêm vào để xác nhận tín hiệu giao dịch, chẳng hạn như RSI, Bollinger Bands
  3. Có thể tự động tìm các tham số ưu tiên và quy tắc giao dịch dựa trên thuật toán học máy
  4. Bạn có thể điều chỉnh rủi ro lỗ hổng bằng cách động điều chỉnh mức dừng
  5. Có thể xây dựng mô hình xếp hạng đa yếu tố để làm cho các quy tắc nhập cảnh và xuất cảnh trở nên mạnh mẽ hơn

Tóm tắt

Chiến lược xu hướng chéo ADX nói chung là khá ổn định, có thể nắm bắt hiệu quả không gian đảo ngược trước khi biến động, nhưng cần phải chú ý kiểm soát rủi ro. Bằng cách tối ưu hóa thêm các tham số đặt, nhập cảnh nghiêm ngặt và các quy tắc dừng lỗ, lợi nhuận sau khi điều chỉnh rủi ro tốt hơn có thể được. Chiến lược này áp dụng cho tài khoản giao dịch ngắn hạn trong các tài khoản dài hạn.

Mã nguồn chiến lược
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
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/
// © mohanee

//@version=4
//ADX strategy
SmoothedTrueRange=0.00
SmoothedDirectionalMovementPlus=0.00
SmoothedDirectionalMovementMinus=0.00


strategy(title="ADX strategy", overlay=false,pyramiding=3, default_qty_type=strategy.fixed, default_qty_value=3,    initial_capital=10000, currency=currency.USD)

len = input(11, title="ADX Length", minval=1)
threshold = input(30, title="threshold", minval=5)

fastEma=input(13, title="Fast EMA",minval=1, maxval=50)
slowEma=input(55, title="Slow EMA",minval=10, maxval=200)
stopLoss =input(8, title="Stop Loss",minval=1)   //


TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0


SmoothedTrueRange:= nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange

SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus:= nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus

DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = sma(DX, len)

plot(DIPlus, color=color.green, title="DI+")
//plot(DIMinus, color=color.red, title="DI-")
plot(ADX, color=color.black, title="ADX")
hline(threshold, color=color.black, linestyle=hline.style_dashed)

fastEmaVal=ema(close,fastEma)
slowEmaVal=ema(close,slowEma)




//long condition
longCondition=  ADX < threshold  and crossover(DIPlus,ADX)  and fastEmaVal > slowEmaVal


barcolor(longCondition ? color.yellow: na)

strategy.entry(id="ADXLE", long=true,  when= longCondition  and strategy.position_size<1) 

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



//Add
strategy.entry(id="ADXLE", comment="Add", long=true,  when= strategy.position_size>1 and close<strategy.position_avg_price and crossover(DIPlus,ADX) ) 


//calculate stop Loss
stopLossVal =  strategy.position_avg_price -  (strategy.position_avg_price*stopLoss*0.01)

strategy.close(id="ADXLE",comment="SL Exit",    when=close<stopLossVal)   //close all on stop loss


//exit condition
exitCondition=  ADX > threshold  and crossunder(DIPlus,ADX) // and fastEmaVal > slowEmaVal
strategy.close(id="ADXLE",comment="TPExitAll",    qty=strategy.position_size ,   when= exitCondition)   //close all