Chiến lược chéo hồi quy tuyến tính dài ngắn

Tác giả:ChaoZhang, Ngày: 2024-03-27 17:52:02
Tags:

img

Tổng quan

Chiến lược Chuyển hướng tuyến tính ngắn dài là một chiến lược phân tích kỹ thuật sử dụng mô hình hồi quy tuyến tính để dự đoán các biến động giá trong tương lai của một cổ phiếu. Nguyên tắc cơ bản của chiến lược là: các biến động giá cổ phiếu thường theo một xu hướng tuyến tính nhất định, và bằng cách tính toán hồi quy tuyến tính của giá, giá trong tương lai có thể được dự đoán. Chiến lược đi dài khi giá dự đoán vượt trên giá hiện tại, và thoát khỏi vị trí khi nó vượt dưới.

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

Chiến lược đầu tiên tính toán sự hồi quy tuyến tính của giá cổ phiếu trong một khoảng thời gian nhất định. Sự hồi quy tuyến tính phù hợp với một đường thẳng bằng phương pháp vuông nhỏ nhất, đại diện cho xu hướng thay đổi giá theo thời gian. Chiến lược sau đó vẽ đường giá dự đoán và giá hiện tại trên biểu đồ.

Chiến lược xác định hai tín hiệu:

  1. Tín hiệu dài: được kích hoạt khi giá dự đoán vượt quá giá hiện tại
  2. Tín hiệu ngắn: được kích hoạt khi giá dự đoán vượt dưới giá hiện tại

Khi tín hiệu dài xuất hiện, chiến lược mở một vị trí dài; khi tín hiệu ngắn xuất hiện, nó đóng vị trí.

Các bước chính của chiến lược là như sau:

  1. Tính toán sự hồi quy tuyến tính của giá trong một khoảng thời gian
  2. Chụp đường giá dự đoán và giá hiện tại trên biểu đồ
  3. Định nghĩa các tín hiệu dài và ngắn
  4. Mở một vị trí dài khi tín hiệu dài được kích hoạt
  5. Đóng vị trí khi tín hiệu ngắn được kích hoạt

Phân tích lợi thế

Chiến lược chéo hồi quy tuyến tính ngắn dài có những lợi thế sau:

  1. Đơn giản và hiệu quả: Logic của chiến lược là rõ ràng và dễ thực hiện, và nó có thể nắm bắt xu hướng tuyến tính của giá.
  2. Áp dụng rộng: Chiến lược có thể tạo ra các tín hiệu giao dịch trên cả thị trường xu hướng và dao động.
  3. Khả năng tối ưu hóa mạnh: Chiến lược chứa một số thông số chính, chẳng hạn như thời gian hồi quy tuyến tính, trung bình động, v.v., có thể được tối ưu hóa để cải thiện hiệu suất.

Phân tích rủi ro

Mặc dù có nhiều lợi thế, Chiến lược chéo hồi quy tuyến tính ngắn dài cũng có một số rủi ro:

  1. Rủi ro nhận dạng xu hướng: Khi chuyển động giá không theo xu hướng tuyến tính, chẳng hạn như trong thị trường dao động, chiến lược có thể tạo ra tín hiệu sai. Rủi ro này có thể được giảm bằng cách kết hợp với các chỉ số khác như MACD.
  2. Rủi ro thiết lập tham số: Hiệu suất của chiến lược nhạy cảm với cài đặt tham số và các tham số không phù hợp có thể dẫn đến tổn thất. Do đó, kiểm tra và tối ưu hóa các tham số đầy đủ là cần thiết trước khi giao dịch trực tiếp.
  3. Nguy cơ quá phù hợp: Nếu các thông số được tối ưu hóa quá mức, nó có thể khiến chiến lược quá phù hợp với dữ liệu lịch sử và hoạt động kém trong tương lai.

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

  1. Kết hợp với các chỉ số khác: Tín hiệu hồi quy tuyến tính có thể được kết hợp với các chỉ số kỹ thuật khác như MACD, Bollinger Bands, v.v., để cải thiện độ chính xác của các tín hiệu.
  2. Tối ưu hóa tham số động: Một cơ chế thích nghi cho các tham số có thể được thiết kế để điều chỉnh động các tham số theo điều kiện thị trường, cải thiện khả năng thích nghi.
  3. Thêm một mô-đun kiểm soát rủi ro: Kết hợp các biện pháp kiểm soát rủi ro như dừng lỗ và quản lý tiền vào chiến lược để giảm rủi ro của một giao dịch duy nhất và tăng lợi nhuận tích lũy.
  4. Tối ưu hóa học máy: Các thuật toán học máy có thể được sử dụng để tối ưu hóa liên tục mô hình hồi quy tuyến tính để làm cho dự đoán của nó chính xác hơn.

Tóm lại

Chiến lược Long-Short Linear Regression Crossover tạo ra các tín hiệu giao dịch dựa trên việc so sánh giá dự đoán từ hồi quy tuyến tính và giá hiện tại. Logic của chiến lược đơn giản và rõ ràng, và nó có thể nắm bắt xu hướng tuyến tính của giá và có thể áp dụng cho các điều kiện thị trường khác nhau. Đồng thời, chiến lược dễ thực hiện và tối ưu hóa, và các tham số có thể được điều chỉnh linh hoạt, kết hợp với các chỉ số khác, các mô-đun kiểm soát rủi ro có thể được thêm vào, v.v., để liên tục cải thiện hiệu suất của chiến lược. Tuy nhiên, chiến lược cũng có những rủi ro như nhận dạng xu hướng không chính xác, cài đặt tham số không phù hợp và quá tải dữ liệu lịch sử, vì vậy cần thận trọng trong ứng dụng thực tế. Nhìn chung, Chiến lược Long-Short Linear Regression Crossover là một chiến lược giao dịch đơn giản và định lượng hiệu quả đáng để tiếp tục khám phá và tối ưu hóa.


/*backtest
start: 2024-02-25 00:00:00
end: 2024-03-26 00:00:00
period: 3h
basePeriod: 15m
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/
// © stocktechbot
//@version=5
strategy("Linear Cross", overlay=true, margin_long=100, margin_short=0)

//Linear Regression

vol = volume

// Function to calculate linear regression
linregs(y, x, len) =>
    ybar = math.sum(y, len)/len
    xbar = math.sum(x, len)/len
    b = math.sum((x - xbar)*(y - ybar),len)/math.sum((x - xbar)*(x - xbar),len)
    a = ybar - b*xbar
    [a, b]

// Historical stock price data
price = close

// Length of linear regression
len = input(defval = 21, title = 'Strategy Length')
linearlen=input(defval = 9, title = 'Linear Lookback')
[a, b] = linregs(price, vol, len)

// Calculate linear regression for stock price based on volume
//eps = request.earnings(syminfo.ticker, earnings.actual)
//MA For double confirmation

out = ta.sma(close, 200)
outf = ta.sma(close, 50)
outn = ta.sma(close, 90)
outt = ta.sma(close, 21)
outthree = ta.sma(close, 9)

// Predicted stock price based on volume
predicted_price = a + b*vol

// Check if predicted price is between open and close
is_between = open < predicted_price and predicted_price < close

//MACD
//[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)

// Plot predicted stock price
plot(predicted_price, color=color.rgb(65, 59, 150), linewidth=2, title="Predicted Price")
plot(ta.sma(predicted_price,linearlen), color=color.rgb(199, 43, 64), linewidth=2, title="MA Predicted Price")
//offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
plot(out, color=color.blue, title="MA200")
[macdLine, signalLine, histLine] = ta.macd(predicted_price, 12, 26, 9)

//BUY Signal

longCondition=false
mafentry =ta.sma(close, 50) > ta.sma(close, 90)
//matentry = ta.sma(close, 21) > ta.sma(close, 50)
matwohun = close > ta.sma(close, 200)
twohunraise = ta.rising(out, 2)
twentyrise = ta.rising(outt, 2)
macdrise = ta.rising(macdLine,2)
macdlong = ta.crossover(predicted_price, ta.wma(predicted_price,linearlen))  and (signalLine < macdLine)
if macdlong and macdrise
    longCondition := true

if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)
//Sell Signal
lastEntryPrice = strategy.opentrades.entry_price(strategy.opentrades - 1)
daysSinceEntry = len
daysSinceEntry := int((time - strategy.opentrades.entry_time(strategy.opentrades - 1)) / (24 * 60 * 60 * 1000))
percentageChange = (close - lastEntryPrice) / lastEntryPrice * 100
//trailChange = (ta.highest(close,daysSinceEntry) - close) / close * 100

//label.new(bar_index, high, color=color.black, textcolor=color.white,text=str.tostring(int(trailChange)))
shortCondition=false
mafexit =ta.sma(close, 50) < ta.sma(close, 90)
matexit = ta.sma(close, 21) < ta.sma(close, 50)
matwohund = close < ta.sma(close, 200)
twohunfall = ta.falling(out, 3)
twentyfall = ta.falling(outt, 2)
shortmafall = ta.falling(outthree, 1)
macdfall = ta.falling(macdLine,1)
macdsell = macdLine < signalLine
if macdfall and macdsell and (macdLine < signalLine) and ta.falling(low,2)
    shortCondition := true

if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)




Thêm nữa