Chiến lược theo xu hướng dựa trên đột phá hồi quy trung bình động


Ngày tạo: 2024-02-23 14:46:37 sửa đổi lần cuối: 2024-02-23 14:46:37
sao chép: 0 Số nhấp chuột: 651
1
tập trung vào
1617
Người theo dõi

Chiến lược theo xu hướng dựa trên đột phá hồi quy trung bình động

Tổng quan

Chiến lược phá vỡ đường trung bình là một chiến lược giao dịch định lượng điển hình để theo dõi xu hướng. Chiến lược này sử dụng đường trung bình di chuyển và kênh chênh lệch tiêu chuẩn của nó để đánh giá xu hướng thị trường và tạo ra tín hiệu giao dịch khi giá phá vỡ kênh chênh lệch tiêu chuẩn.

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

Chiến lược này bắt đầu bằng cách tính toán SMA trung bình di chuyển đơn giản trong N ngày ([50 ngày mặc định]), sau đó tính toán chênh lệch chuẩn StdDev của giá trong chu kỳ đó dựa trên SMA. Với SMA là trục trung tâm, trên và dưới sử dụng gấp 2 lần StdDev để xây dựng đường dẫn chênh lệch chuẩn trên và dưới.

Sau khi vào thị trường, chiến lược sẽ thiết lập lệnh dừng lỗ. Cụ thể, sau khi làm nhiều, đường dừng là giá đóng cửa khi vào thị trường ((100 - phần trăm dừng lỗ); sau khi làm trống, đường dừng là giá đóng cửa khi vào thị trường ((100 + phần trăm dừng).

Phân tích lợi thế

Chiến lược này có những ưu điểm sau:

  1. Có khả năng theo dõi xu hướng mạnh mẽ. Sử dụng kênh chênh lệch chuẩn có thể theo dõi động sự biến động của thị trường.
  2. Khả năng kiểm soát rút lui mạnh mẽ. Sử dụng dừng di động có thể kiểm soát hiệu quả tổn thất đơn lẻ.
  3. Dễ thực hiện. Không cần tối ưu hóa nhiều tham số, rất dễ thực hiện.

Phân tích rủi ro

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

  1. Rủi ro đảo ngược xu hướng. Chiến lược theo dõi xu hướng dễ bị thua lỗ và sau đó đảo ngược.
  2. Rủi ro nhạy cảm với tham số. Lựa chọn tham số có chu kỳ trung bình di chuyển và số nhân chênh lệch chuẩn sẽ có ảnh hưởng lớn đến hiệu suất của chiến lược.
  3. Đặt điểm dừng quá mạnh có thể gây ra tổn thất thêm. Đặt điểm dừng không đúng có thể gây ra tổn thất thêm.

Các giải pháp đối phó với rủi ro như sau:

  1. Kết hợp với chỉ số biến động để tránh phá vỡ giả.
  2. Tối ưu hóa các tham số để tìm kiếm sự kết hợp tham số tối ưu nhất.
  3. Điều chỉnh hệ thống ngăn chặn thiệt hại để ngăn chặn quá mức cực đoan

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa hơn nữa:

  1. Sử dụng đường trung bình của nhiều chu kỳ thời gian để xác minh, tránh đường cong quá nhạy cảm.

  2. Kết hợp với các chỉ số khác như MACD để đánh giá xu hướng và sự khác biệt.

  3. Ghi nhận các tham số tối ưu hóa động của thuật toán học máy.

Tóm tắt

Phương pháp phá vỡ sự trở lại trung bình là một chiến lược giao dịch định lượng rất thực tế. Nó có lợi thế theo dõi xu hướng, kiểm soát sự rút lui, thực hiện đơn giản, phù hợp với nhu cầu giao dịch định lượng. Ngoài ra, cũng cần chú ý đến một số vấn đề về lựa chọn tham số và cài đặt dừng lỗ, kết hợp với phân tích đa thời gian và tối ưu hóa tham số, có thể đạt được hiệu suất chiến lược tốt hơn.

Mã nguồn chiến lược
/*backtest
start: 2023-02-16 00:00:00
end: 2024-02-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Standard Deviation Bands with Buy/Sell Signals", overlay=true)

// Input for the number of standard deviations
deviationMultiplier = input.float(2.0, title="Standard Deviation Multiplier")

// Input for the length of the moving average
maLength = input.int(50, title="Moving Average Length")

// Input for the stop loss percentage
stopLossPercentage = input.float(12, title="Stop Loss Percentage")

// Calculate the moving average
sma = ta.sma(close, maLength)

// Calculate the standard deviation of the price
priceDeviation = ta.stdev(close, maLength)

// Calculate the upper and lower bands
upperBand = sma + (priceDeviation * deviationMultiplier)
lowerBand = sma - (priceDeviation * deviationMultiplier)

// Plot the bands
plot(upperBand, color=color.green, title="Upper Band")
plot(lowerBand, color=color.red, title="Lower Band")

// Plot the moving average
plot(sma, color=color.blue, title="SMA", linewidth=2)

// Buy Signal
buyCondition = ta.crossover(close, lowerBand)
sellCondition = ta.crossunder(close, upperBand)

// Calculate stop loss level
stopLossLevelBuy = close * (1 - stopLossPercentage / 100)
stopLossLevelSell = close * (1 + stopLossPercentage / 100)

// Create Buy and Sell Alerts
alertcondition(buyCondition, title="Buy Signal", message="Buy Signal - Price Crossed Below Lower Band")
alertcondition(sellCondition, title="Sell Signal", message="Sell Signal - Price Crossed Above Upper Band")

// Plot Buy and Sell Arrows on the chart
plotshape(buyCondition, style=shape.triangleup, location=location.belowbar, color=color.green, title="Buy Signal Arrow")
plotshape(sellCondition, style=shape.triangledown, location=location.abovebar, color=color.red, title="Sell Signal Arrow")

// Exit Long and Short Positions
var float stopLossBuy = na
var float stopLossSell = na

if ta.crossover(close, sma)
    stopLossBuy := stopLossLevelBuy
if ta.crossunder(close, sma)
    stopLossSell := stopLossLevelSell

strategy.entry("Buy", strategy.long, when = buyCondition)
strategy.exit("Stop Loss/Take Profit Buy", from_entry = "Buy", stop = stopLossBuy)
strategy.entry("Sell", strategy.short, when = sellCondition)
strategy.exit("Stop Loss/Take Profit Sell", from_entry = "Sell", stop = stopLossSell)