Chiến lược theo xu hướng hồi quy tuyến tính kép


Ngày tạo: 2023-11-17 16:51:33 sửa đổi lần cuối: 2023-11-17 16:51:33
sao chép: 0 Số nhấp chuột: 616
1
tập trung vào
1617
Người theo dõi

Chiến lược theo xu hướng hồi quy tuyến tính kép

Tổng quan

Chiến lược theo dõi xu hướng quay ngược song tuyến sử dụng chênh lệch giữa quay ngược tuyến nhanh và quay ngược tuyến chậm để đánh giá xu hướng giá, và sử dụng nó như một tín hiệu đầu vào. Khi quay ngược tuyến nhanh vượt qua ngưỡng trên, nó làm nhiều hơn, khi vượt qua ngưỡng dưới, nó bằng phẳng. Đồng thời, chiến lược này cũng sử dụng EMA như một điều kiện lọc, chỉ khi giá cao hơn EMA.

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

Chiến lược này đầu tiên tính toán hai đường cong hồi quy tuyến tính với hai chu kỳ khác nhau, một là hồi quy tuyến tính nhanh, có chu kỳ ngắn hơn và một là hồi quy tuyến tính chậm, có chu kỳ dài hơn. Sau đó tính toán chênh lệch giữa hai đường cong, khi hồi quy tuyến tính nhanh cao hơn hồi quy tuyến tính chậm, chênh lệch lớn hơn 0 cho thấy giá đang trong xu hướng tăng; khi hồi quy tuyến tính nhanh thấp hơn hồi quy tuyến tính chậm, chênh lệch nhỏ hơn 0 cho thấy giá đang trong xu hướng giảm.

Chiến lược sử dụng đường chênh lệch vượt qua ngưỡng cửa làm tín hiệu mua, và đường chênh lệch vượt qua ngưỡng cửa làm tín hiệu bán. Đồng thời, yêu cầu giá cao hơn 200 chu kỳ EMA, để lọc ra các hành động không theo xu hướng.

Phân tích lợi thế

  1. Sử dụng hồi quy hai tuyến để nắm bắt xu hướng giá và đo lại hiệu quả tốt hơn.

  2. Thêm bộ lọc EMA để lọc ra một số hành động không theo xu hướng và tránh tín hiệu sai.

  3. Lập luận chiến lược đơn giản, rõ ràng, dễ hiểu và dễ thực hiện.

Phân tích rủi ro

  1. Lần quay trở tuyến tính được thiết lập không đúng, có thể gây ra một số lượng lớn tín hiệu nhiễu.

  2. Trong một xu hướng mạnh, các bộ lọc EMA có thể bỏ lỡ một số cơ hội.

  3. Các nhà đầu tư cũng có xu hướng giao dịch thường xuyên và thua lỗ trong tình trạng chấn động.

Giải pháp:

  1. Tối ưu hóa tham số chu kỳ hồi quy tuyến tính, giảm tiếng ồn.

  2. Chu kỳ EMA có thể được điều chỉnh theo động lực của thị trường.

  3. Tăng Stop Loss để kiểm soát lỗ.

Tối ưu hóa chiến lược

Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Tối ưu hóa các tham số chu kỳ của hồi quy tuyến tính nhanh và hồi quy tuyến tính chậm để tìm các tham số kết hợp tốt nhất.

  2. Thử các chỉ số lọc khác thay cho EMA, như Brinband, KDJ, để xem có thể cải thiện hiệu quả chiến lược hay không.

  3. Tăng mức dừng động để kiểm soát rủi ro và ngăn chặn tổn thất mở rộng.

  4. Kết hợp với cơ chế lựa chọn cổ phiếu, chọn các cổ phiếu có xu hướng mạnh để giao dịch.

  5. Các tham số phát triển có khả năng tự thích ứng, tự động điều chỉnh tham số theo tình trạng thị trường.

Tóm tắt

Chiến lược theo dõi xu hướng hồi phục song tuyến nói chung là đơn giản và trực tiếp, sử dụng giá trị chênh lệch hồi phục song tuyến để xác định xu hướng giá, và sử dụng EMA làm chỉ số lọc, có thể theo dõi hiệu quả xu hướng. Tuy nhiên, chiến lược này cũng có một số rủi ro, cần chú ý đến các khía cạnh tối ưu hóa tham số, kiểm soát lỗ hổng để có thể sử dụng chiến lược hiệu quả tối đa.

Mã nguồn chiến lược
/*backtest
start: 2022-11-10 00:00:00
end: 2023-11-16 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/
// © TradingAmmo

//@version=4
strategy("Linear trend", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075, currency='USD')
startP = timestamp(input(2017, "Start Year"), input(12, "Month"), input(17, "Day"), 0, 0)
end   = timestamp(input(9999, "End Year"),   input(1, "Month"),   input(1, "Day"),   0, 0)
_testPeriod() =>
    iff(time >= startP and time <= end, true, false)

src = close
len1 = input(defval=13, minval=1, title="Fast LR")
len2 = input(defval=55, minval=1, title="Slow LR")

lag1 = input(0, title="Lag for fast")
lag2 = input(0, title="Lag for slow")

threshold  = input(0,step=0.5, title="Threshold")

fast_lr = linreg(src, len1, lag1)
slow_lr = linreg(src, len2, lag2)
lr = fast_lr - slow_lr
plot_fast = plot(lr, color = lr > 0 ? color.green : color.red)
plot(threshold, color=color.purple)

long_condition = crossover(lr, threshold) and close > ema(close, 200) and _testPeriod()
strategy.entry('BUY', strategy.long, when=long_condition) 

short_condition = crossunder(lr, threshold) 
strategy.close('BUY', when=short_condition)