Chiến lược theo dõi trung bình động động

Tác giả:ChaoZhang, Ngày: 2023-12-04 15:38:09
Tags:

img

Tổng quan

Chiến lược này sử dụng cách tiếp cận được giải thích bởi Larry Williams trong cuốn sách của ông Long-Term Secrets to Short-Term Trading , sử dụng hai trung bình động 3 giai đoạn, một đại diện cho mức cao và mức thấp. Khi giá giảm xuống dưới mức EMA thấp 3 giai đoạn, chúng ta có tín hiệu dài. Thương mại được đóng khi giá đóng trên mức EMA cao 3 giai đoạn.

Chiến lược logic

Lý thuyết cốt lõi của chiến lược này là tính toán trung bình động 3 giai đoạn của giá cao và giá thấp. Cụ thể, nó sử dụng hàm ta.ema để tính toán trung bình động nhân của giá cao và giá thấp trong 3 thanh gần đây nhất để tạo ra mức hỗ trợ và kháng cự năng động. Khi giá phá vỡ dưới mức thấp EMA, nó chỉ ra xu hướng giảm, vì vậy chúng ta có thể đi dài. Khi giá tăng trở lại trên mức cao EMA, nó cho thấy xu hướng tăng đã kết thúc và chúng ta nên đóng vị trí của mình. Bằng cách này, chiến lược có thể theo dõi thay đổi giá năng động và đạt được mức mua thấp và bán cao.

Phân tích lợi thế

Lợi thế lớn nhất của chiến lược này là tính đơn giản và năng động của nó. So với việc sử dụng trung bình động cao/dưới trong thời gian cố định, chiến lược này sử dụng trung bình động ngắn hạn liên tục, có thể nắm bắt sự thay đổi giá một cách nhạy cảm và kịp thời hơn. Điều này cho phép nó nhanh chóng xác định các cơ hội giao dịch để vào và ra khỏi thị trường. Ngoài ra, tải lượng tính toán thấp là một lợi thế khác để giảm độ trễ giao dịch.

Rủi ro và giải pháp

Rủi ro chính của chiến lược này là nó phản ứng chậm hơn với các sự kiện đột ngột như tin tức quan trọng. Bởi vì thời gian trung bình động của nó rất ngắn, phải mất một thời gian để điều chỉnh mức trung bình động khi có sự gia tăng giá mạnh. Điều này có thể dẫn đến tổn thất hoặc bỏ lỡ cơ hội. Ngoài ra, quá nhạy cảm có thể gây ra các giao dịch sai. Để giảm thiểu những rủi ro này, chúng ta có thể tăng đúng thời gian trung bình động hoặc thêm các bộ lọc để tránh tín hiệu sai.

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

Ngoài ra, chúng ta có thể điều chỉnh các tham số trung bình động dựa trên tình trạng thị trường, sử dụng các khoảng thời gian dài hơn trong xu hướng và ngắn hơn trong các thị trường dao động. Ngoài ra, phân tích nhiều khung thời gian, nhận dạng mẫu bằng máy học v.v. có thể giúp cải thiện hiệu suất chiến lược.

Kết luận

Tóm lại, đây là một chiến lược rất đơn giản và thực tế, xác định xu hướng bằng cách sử dụng trung bình động cao / thấp ngắn hạn. Ưu điểm của nó là năng động mạnh mẽ, tính toán thấp và khả năng phản hồi cao, phù hợp với giao dịch tích cực. Nhưng nó cũng có những thiếu sót trong việc phản ứng với các sự kiện cực đoan và rủi ro tín hiệu sai cao hơn. Có hướng dẫn để giải quyết các vấn đề này thông qua điều chỉnh tham số, thêm bộ lọc và kỹ thuật nhận dạng mẫu để nâng cao hiệu quả chiến lược.


/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(
     "Larry Williams 3 Period EMAs strategy",
     overlay=true,
     calc_on_every_tick=true,
     currency=currency.USD
     )

// Time range for backtesting
startDate = input.int(title="Start Date", defval=1, minval=1, maxval=31)
startMonth = input.int(title="Start Month", defval=1, minval=1, maxval=12)
startYear = input.int(title="Start Year", defval=2018, minval=1800, maxval=2100)

endDate = input.int(title="End Date", defval=31, minval=1, maxval=31)
endMonth = input.int(title="End Month", defval=12, minval=1, maxval=12)
endYear = input.int(title="End Year", defval=2041, minval=1800, maxval=2100)

inDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0)) and
     (time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0))

// EMA
period = 3

emaH = ta.ema(high, period)
emaL = ta.ema(low, period)

// PLOT:
// Draw the EMA lines on the chart
plot(series=emaH, color=color.green, linewidth=2)
plot(series=emaL, color=color.red, linewidth=2)

// Conditions
if(inDateRange and close < emaL)
    strategy.entry("Long", strategy.long, comment="Long")
if(close > emaH)
    strategy.close("Long", comment="Close Long")

// Uncomment to enable short entries
//if(inDateRange and close > emaH)                                    
//    strategy.entry("Short", strategy.short, comment="Short")    
//if(close < emaL)
//    strategy.close("Short", comment="Close Short")

Thêm nữa