Chiến lược theo dõi xu hướng giao dịch năng động

Tác giả:ChaoZhang, Ngày: 2024-02-22 17:54:26
Tags:

img

Tổng quan

Chiến lược này là một thiết kế được cải tiến dựa trên các ý tưởng được trình bày bởi Andrew Abraham trong bài báo "Trading the Trend" được xuất bản trên tạp chí Technical Analysis of Stocks & Commodities vào tháng 9 năm 1998, được sử dụng để theo dõi động xu hướng giá cổ phiếu và tạo ra các tín hiệu giao dịch phù hợp.

Chiến lược logic

Chiến lược đầu tiên tính toán mức giá trung bình thực tế trong 21 ngày qua như một ngưỡng tham chiếu, sau đó tính toán giá cao nhất và thấp nhất trong 21 ngày qua, và thiết lập giới hạn trên và dưới của kênh theo đó. Giới hạn trên của kênh được thiết lập là giá cao nhất trong 21 ngày trừ 3 lần mức giá trung bình thực tế, và giới hạn dưới được thiết lập là giá thấp nhất trong 21 ngày cộng với 3 lần mức giá trung bình thực tế. Khi giá đóng cao hơn giới hạn trên của kênh, đó là tín hiệu áp lực bán hàng; khi giá đóng thấp hơn giới hạn dưới của kênh, đó là tín hiệu mua. Để lọc ra các tín hiệu sai, một trung bình theo hàm số 21 giai đoạn cũng được tính toán, và một tín hiệu giao dịch thực tế chỉ được tạo ra khi giá đóng vượt qua giới hạn trên kênh theo cùng hướng như mức trung bình động ban đầu. Ngoài ra, chiến lược cũng cung cấp một thông số đầu vào ngược, có thể đảo ngược các hoạt động ngắn và dài.

Phân tích lợi thế

Lợi thế lớn nhất của chiến lược này là nó có thể theo dõi xu hướng giá và tạo ra tín hiệu giao dịch tương ứng. So với các chiến lược trung bình động với các tham số cố định, nó có thể nắm bắt tốt hơn xu hướng thay đổi giá. Ngoài ra, việc thiết lập kênh kết hợp phạm vi thực sự, tránh những thiếu sót của việc thiết lập giới hạn kênh chỉ dựa trên giá cao nhất và thấp nhất. Phạm vi biến động của giới hạn trên và dưới của kênh cũng rất hợp lý, tránh đột phá sai ở một mức độ nào đó. Tính tùy chỉnh của tham số ngược cũng làm tăng tính linh hoạt của chiến lược.

Phân tích rủi ro

Có hai rủi ro chính với chiến lược này: một là rủi ro giao dịch quá mức do tăng tín hiệu giao dịch; thứ hai là rủi ro có thể phát sinh từ cài đặt tham số không chính xác. Vì chiến lược này sử dụng các tham số động, tín hiệu giao dịch sẽ thường xuyên hơn các chiến lược trung bình động truyền thống, điều này có thể dẫn đến một mức độ rủi ro giao dịch quá mức. Ngoài ra, nếu các tham số được đặt không chính xác, chẳng hạn như nếu thời gian được đặt quá ngắn hoặc các giá trị giới hạn kênh quá nhỏ, các tín hiệu sai cũng sẽ tăng lên, do đó làm tăng rủi ro.

Để kiểm soát rủi ro, các tham số có thể được điều chỉnh thích hợp bằng cách chọn các khoảng thời gian dài hơn và nới lỏng một cách vừa phải các hạn chế giới hạn trên và dưới kênh.

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

Ngoài ra, các giá trị tham số tối ưu có thể khác nhau giữa các cổ phiếu và môi trường thị trường khác nhau. Do đó, chúng ta cũng có thể xem xét xây dựng một bộ cơ chế tối ưu hóa tham số để lựa chọn động các tham số tối ưu dựa trên đặc điểm cổ phiếu và thị trường để cải thiện sự ổn định của chiến lược.

Tóm lại

Nhìn chung, đây là một chiến lược theo dõi xu hướng rất thực tế. So với các chiến lược trung bình động truyền thống, nó linh hoạt và thông minh hơn và có thể nắm bắt xu hướng thay đổi giá một cách năng động. Với điều chỉnh tham số thích hợp, chất lượng tín hiệu giao dịch của nó tương đối cao và có thể mang lại lợi nhuận tốt.


/*backtest
start: 2023-02-15 00:00:00
end: 2024-02-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 10/10/2018
// This is plots the indicator developed by Andrew Abraham 
// in the Trading the Trend article of TASC September 1998  
// It was modified, result values wass averages.
////////////////////////////////////////////////////////////
strategy(title="Trend Trader AVR Backtest", overlay = true)
Length = input(21, minval=1),
LengthMA = input(21, minval=1),
Multiplier = input(3, minval=1)
reverse = input(false, title="Trade reverse")
avgTR      = wma(atr(1), Length)
highestC   = highest(Length)
lowestC    = lowest(Length)
hiLimit = highestC[1]-(avgTR[1] * Multiplier)
loLimit = lowestC[1]+(avgTR[1] * Multiplier)
ret = 0.0
ret :=  iff(close > hiLimit and close > loLimit, hiLimit,
         iff(close < loLimit and close < hiLimit, loLimit, nz(ret[1], 0)))
nResMA = ema(ret, LengthMA)        
pos = 0
pos := iff(close < nResMA, -1,
       iff(close > nResMA, 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(nResMA, color= blue , title="Trend Trader AVR")

Thêm nữa