Chiến lược Phân biệt hướng động lực

Tác giả:ChaoZhang, Ngày: 2023-12-27 15:37:31
Tags:

img

Tổng quan

Chiến lược chênh lệch hướng động lực là một trong những kỹ thuật được mô tả bởi William Blau trong cuốn sách của ông Momentum, Direction and Divergence. Chiến lược tập trung vào ba khía cạnh chính: động lực, hướng và chênh lệch. Blau, là một kỹ sư điện trước khi trở thành một nhà giao dịch, nghiên cứu kỹ lưỡng mối quan hệ giữa giá và động lực. Từ nền tảng này, ông sau đó xem xét những thiếu sót trong các dao động khác và giới thiệu một số kỹ thuật sáng tạo, bao gồm một sự xoay quanh Stochastics. Về các vấn đề hướng, ông phân tích các phức tạp của ADX và cung cấp một cách tiếp cận độc đáo để giúp xác định các giai đoạn xu hướng và không xu hướng.

Chiến lược vẽ Ergotic CSI và đường thẳng của nó để lọc ra tiếng ồn.

Chiến lược logic

Mã bắt đầu bằng cách xác định hàm chỉ số hướng thích ứng (ADX) fADX, lấy tham số Len làm thời gian làm mịn. Chức năng tính toán RMA của True Range (TR) làm tên, và RMA của động lượng tăng và động lượng giảm như số, sau đó chia chúng để có được tỷ lệ cho thấy sức mạnh tương đối của tăng và giảm. Cuối cùng, ADX được thu được bằng cách kết hợp sức mạnh tăng và sức mạnh giảm.

Sau đó, các tham số chiến lược được xác định. r là tham số làm mịn cho ATR, Dài là chiều dài của ADX, BigPointValue là giá trị điểm lớn, SmthLen là chiều dài làm mịn cho CSI, SellZone và BuyZone là bán và mua khu vực đáp ứng các tiêu chí. ngược chỉ ra liệu có nên đảo ngược các tín hiệu giao dịch.

Điều quan trọng là tính toán CSI. Đầu tiên ATR và ADX được tính toán. Sau đó, hệ số phạt K được tính toán, kết hợp các cân nhắc về giá trị điểm lớn, ATR và ADX. NRes còn lại tiêu chuẩn kết hợp thông tin từ ATR, ADX và giá đóng. Cuối cùng, giá trị CSI được lấy và SMA được tính toán.

Hướng giao dịch được xác định theo giá trị SMA của CSI. Đi dài nếu trên BuyZone, đi ngắn nếu dưới SellZone. Kéo đường cong CSI và SMA của nó, mã màu các khu vực giao dịch khác nhau.

Phân tích lợi thế

Chiến lược kết hợp các lợi thế của chỉ số động lực ATR và chỉ số xu hướng ADX, xem xét cả biến động thị trường và sức mạnh xu hướng, tránh những hạn chế của việc sử dụng ATR hoặc ADX một mình.

Các nRes còn lại tiêu chuẩn hóa kết hợp thông tin giá, chú ý không chỉ đến xu hướng động lực mà còn là mức giá tuyệt đối, khác với các dao động điển hình, nâng cao hiệu suất của chiến lược.

Quá trình làm mịn và xác định vùng cung cấp các tín hiệu giao dịch rõ ràng cho giao dịch thực tế.

Phân tích rủi ro

Chiến lược này khá nhạy cảm với các thiết lập tham số như thời gian ATR và ADX, giá trị điểm lớn vv, có thể ảnh hưởng đến hiệu suất.

Là một bộ dao động mới được đề xuất, hiệu quả của CSI cần xác nhận trên các thị trường đa dạng hơn.

Chính chiến lược này không có cơ chế dừng lỗ, chỉ trực tiếp dài hoặc ngắn theo tín hiệu CSI. Có những rủi ro cần được giảm thiểu bằng cách kết hợp dừng lỗ.

Hướng dẫn tối ưu hóa

Kiểm tra các kết hợp tham số trên các thị trường khác nhau để tìm các thiết lập tương đối phổ biến.

Thiết lập một cơ chế ADX thời gian năng động điều chỉnh các thông số ADX dựa trên tình trạng thị trường.

Kết hợp các chỉ số dao động khác để xác định các bước vào và ra để làm cho chiến lược mạnh mẽ hơn.

Thêm cơ chế dừng lỗ để hoàn thành chiến lược.

Tóm lại

Chiến lược Divergence Định hướng Động lực tích hợp các lợi thế của nhiều chỉ số, sử dụng kích thước giá, động lực, xu hướng để thiết kế chỉ số CSI cho giao dịch. Với các thiết lập tham số linh hoạt và khả năng mạnh mẽ, chiến lược xứng đáng được thử nghiệm và tối ưu hóa hơn nữa và có thể trở thành một công cụ giao dịch định lượng có lợi.


/*backtest
start: 2022-12-20 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 20/06/2018
// This is one of the techniques described by William Blau in his book 
// "Momentum, Direction and Divergence" (1995). If you like to learn more, 
// we advise you to read this book. His book focuses on three key aspects 
// of trading: momentum, direction and divergence. Blau, who was an electrical 
// engineer before becoming a trader, thoroughly examines the relationship between 
// price and momentum in step-by-step examples. From this grounding, he then looks 
// at the deficiencies in other oscillators and introduces some innovative techniques, 
// including a fresh twist on Stochastics. On directional issues, he analyzes the 
// intricacies of ADX and offers a unique approach to help define trending and 
// non-trending periods.
// This indicator plots Ergotic CSI and smoothed Ergotic CSI to filter out noise. 
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
fADX(Len) =>
    up = change(high)
    down = -change(low)
    trur = rma(tr, Len)
    plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, Len) / trur)
    minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, Len) / trur)
    sum = plus + minus 
    100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), Len)

strategy(title="Ergodic CSI Backtest")
r = input(32, minval=1)
Length = input(1, minval=1)
BigPointValue = input(1.0, minval=0.00001)
SmthLen = input(5, minval=1)
SellZone = input(0.004, minval=0.00001)
BuyZone = input(0.024, minval=0.001)
reverse = input(false, title="Trade reverse")
hline(BuyZone, color=green, linestyle=line)
hline(SellZone, color=red, linestyle=line)
source = close
K = 100 * (BigPointValue / sqrt(r) / (150 + 5))
xTrueRange = atr(1) 
xADX = fADX(Length)
xADXR = (xADX + xADX[1]) * 0.5
nRes = iff(Length + xTrueRange > 0, K * xADXR * xTrueRange / Length,0)
xCSI = iff(close > 0,  nRes / close, 0)
xSMA_CSI = sma(xCSI, SmthLen)
pos = iff(xSMA_CSI > BuyZone, 1,
       iff(xSMA_CSI <= SellZone, -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(xCSI, color=green, title="Ergodic CSI")
plot(xSMA_CSI, color=red, title="SigLin")

Thêm nữa