Hệ thống giao dịch trung bình động thích nghi Donchian

Tác giả:ChaoZhang, Ngày: 2024-02-21 15:08:27
Tags:

img

Tổng quan

Hệ thống giao dịch trung bình động thích nghi Donchian là một chiến lược giao dịch định lượng theo dõi xu hướng giá. Chiến lược này sử dụng chỉ số kênh Donchian kết hợp với các đường trung bình động dài hạn và ngắn hạn để đánh giá và theo dõi xu hướng giá và nắm bắt xu hướng giá trung và dài hạn cho giao dịch xu hướng.

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

Chiến lược này đầu tiên tính toán phạm vi biến động thực sự. Khoảng biến động thực sự đề cập đến phạm vi chuyển động giá từ giá đóng của nến trước đến giá cao nhất và thấp nhất của nến hiện tại. Sau đó nó tính toán trung bình di chuyển đơn giản của phạm vi biến động thực sự như băng thông của kênh Donchian. Kết hợp với trung bình di chuyển của hai khoảng thời gian, nó đánh giá xu hướng giá. Các quy tắc đánh giá cụ thể như sau:

Khi giá vượt qua đường trung bình chuyển động dài hạn cộng với băng thông và đường trung bình chuyển động ngắn hạn cộng với băng thông, đi dài; khi giá giảm xuống dưới đường trung bình chuyển động dài hạn trừ băng thông và đường trung bình chuyển động ngắn hạn trừ băng thông, đi ngắn. Các điều kiện đóng là đóng các vị trí dài khi giá giảm xuống dưới đường trung bình chuyển động dài và ngắn tăng theo băng thông; đóng các vị trí ngắn khi giá tăng trên đường trung bình chuyển động dài và ngắn tăng theo băng thông.

Do đó, bằng cách điều chỉnh năng động băng thông của kênh Donchain dựa trên sự biến động thực sự và lọc bằng đường trung bình động kép, chiến lược có thể theo dõi hiệu quả xu hướng giá trung bình đến dài hạn, giảm tín hiệu sai và có được cơ hội giao dịch lâu dài ổn định.

Phân tích điểm mạnh

Chiến lược này có những lợi thế sau:

  1. Sử dụng biến động thực sự để điều chỉnh băng thông kênh một cách năng động tránh các thông số tĩnh và thích nghi tốt hơn với những thay đổi của thị trường.

  2. Sự kết hợp của hai đường trung bình động có thể lọc hiệu quả tiếng ồn và giảm tín hiệu sai.

  3. Theo dõi xu hướng trung và dài hạn có thể giảm giao dịch lặp đi lặp lại và giảm tần suất giao dịch để có được cơ hội lợi nhuận dài hạn.

  4. Logic chiến lược đơn giản và rõ ràng, dễ thực hiện, dung nạp lỗi và phù hợp với giao dịch thuật toán tự động.

Rủi ro và tối ưu hóa

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

  1. Thật khó để nắm bắt thời điểm tốt nhất cho các giao dịch dài hạn trong thời gian điều chỉnh ngắn hạn.

  2. Các tham số cần tối ưu hóa cho các lĩnh vực khác nhau và các cổ phiếu riêng lẻ.

  3. Các điểm dừng lỗ cần phải được nới lỏng thích hợp đối với những thay đổi xu hướng đáng kể từ các trường hợp khẩn cấp.

Tóm lại

Tóm lại, hệ thống giao dịch trung bình chuyển động thích nghi Donchian là một chiến lược định lượng tổng thể ổn định, đơn giản và dễ thực hiện. Bằng cách sử dụng các kênh năng động và lọc trung bình chuyển động kép, nó có thể theo dõi hiệu quả xu hướng thị trường trung hạn đến dài hạn, giảm tần suất giao dịch và đạt được lợi nhuận bền vững dài hạn. Trong khi đó, cũng nên lưu ý tối ưu hóa cài đặt tham số, ngăn ngừa rủi ro và dừng lỗ thích hợp để thích nghi với trường hợp khẩn cấp. Nhìn chung, chiến lược này có hiệu suất xuất sắc và phù hợp với việc theo dõi xu hướng thuật toán trung hạn đến dài hạn.


/*backtest
start: 2023-02-14 00:00:00
end: 2024-02-20 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/
// © dongyun

//@version=4
strategy("唐齐安移动平均交易系统", overlay=true)

longperiod = input(20,'长线')
shortperiod = input(5,'短线')
bandfactor = input(1.0,'')

TrueHigh = 0.0
TrueLow = 0.0
TrueRange = 0.0

TrueHigh := close[1] > high ? close[1] : high
TrueLow := close[1] < low ? close[1] : low
TrueRange := TrueHigh - TrueLow
AvgTrueRange = sma(TrueRange,longperiod)

MAlong = sma(close,longperiod)
MAshort = sma(close,shortperiod)
band =  AvgTrueRange * bandfactor

if close > MAlong[1] + band[1] and close >  MAshort[1] + band[1]
	strategy.entry("Long", strategy.long, when=strategy.position_size < 1)
else
	if close < MAlong[1] - band[1] and close < MAshort[1] - band[1]
		strategy.entry("Short", strategy.short, when=strategy.position_size > -1)

if close < MAlong[1] - band[1] or close < MAshort[1] - band[1]
	strategy.close("Long", when=strategy.position_size > 0)
else
	if close > MAlong[1] + band[1] or close > MAshort[1] + band[1]
		strategy.close("Short", when=strategy.position_size < 0)

Thêm nữa