Tối ưu hóa các chiến lược dựa trên bộ dao động động lượng


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

Tối ưu hóa các chiến lược dựa trên bộ dao động động lượng

Tổng quan

Chiến lược này là một chiến lược để tối ưu hóa cải tiến dựa trên tốc độ thay đổi của chỉ số động lực ((ROC)). So với chiến lược ROC ban đầu, chiến lược này được tối ưu hóa như sau:

  1. Ghi vào giá trị ROC lịch sử lớn nhất, động lực ROC hiện tại so với ROC lịch sử lớn nhất, để có được giá trị tương đối động lực.
  2. Xử lý trơn giá trị tương đối động lượng, tạo ra tín hiệu.
  3. Thêm dấu hiệu mua bán.

Với các phương tiện tối ưu hóa này, bạn có thể lọc ra nhiều tín hiệu không hiệu quả, làm cho chiến lược ổn định và đáng tin cậy hơn.

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

Chỉ số cốt lõi của chiến lược này là tốc độ thay đổi ((ROC)). ROC đo lường tốc độ thay đổi của giá cổ phiếu trong một chu kỳ nhất định. Chiến lược này đầu tiên tính toán giá trị ROC dài 9 chu kỳ.

Độ mạnh tương đối này được xử lý bằng phẳng thông qua SMA dài 10 và lọc các biến động ngắn hạn để có được đường cong phẳng. Khi đường cong phẳng tăng 3 ngày liên tiếp và giá trị thấp hơn -80%, cho rằng giá cổ phiếu bắt đầu giảm và tạo ra dấu hiệu đáy, vì vậy làm nhiều hơn; Khi đường cong phẳng giảm 3 ngày liên tiếp và giá trị cao hơn 80%, cho rằng giá cổ phiếu bắt đầu giảm và tạo ra dấu hiệu đỉnh, vì vậy giữ vị trí bằng phẳng.

Phân tích lợi thế

Chiến lược này có những ưu điểm chính so với chiến lược ROC ban đầu:

  1. Việc đưa ra so sánh giá trị ROC lịch sử có thể đo lường được độ cao tương đối của chỉ số động lực và lọc các tín hiệu vô hiệu không có giá trị tuyệt đối cao.
  2. Phong cách lọc âm thanh làm cho tín hiệu ổn định và đáng tin cậy hơn.
  3. Thiết lập giá trị mua bán để giảm giao dịch không hiệu lực.

Nhìn chung, chiến lược này đã xử lý hiệu quả chỉ số ROC, giúp nó phù hợp hơn với giao dịch thực.

Phân tích rủi ro

Chiến lược này có những rủi ro:

  1. Chỉ số ROC không thể xác định xu hướng thị trường, có một số sai lầm. Chiến lược này có thể thất bại nếu gặp phải thời gian chuyển đổi bò và gấu.
  2. Mức giới hạn mua và bán không hoàn hảo, đặt mức giới hạn quá cao hoặc quá thấp sẽ ảnh hưởng đến hiệu suất chiến lược.
  3. Các tham số SMA được đặt không đúng cũng ảnh hưởng đến hiệu quả của chiến lược.

Để giảm thiểu rủi ro trên, bạn có thể xem xét kết hợp các chỉ số xu hướng để xác định xu hướng lớn; điều chỉnh tham số giá trị thấp, thử nghiệm tham số tối ưu; tối ưu hóa tham số chu kỳ SMA.

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

Chiến lược này có thể được tối ưu hóa theo các hướng sau:

  1. Kết hợp các chỉ số xu hướng để đánh giá xu hướng chung của thị trường, tránh thất bại khi chuyển đổi bò và gấu.
  2. Kiểm tra các tham số độ dài ROC khác nhau và tham số giá trị thể bán và mua để tìm kiếm sự kết hợp tham số tối ưu.
  3. Tối ưu hóa tham số Smooth SMA để tìm tham số tối ưu.
  4. Tăng hệ thống ngăn chặn thiệt hại.

Tóm tắt

Chiến lược này là chiến lược tối ưu hóa phát triển thứ cấp dựa trên chỉ số ROC. Nó giới thiệu các phương tiện như so sánh giá trị tối đa lịch sử, làm mỏng SMA và giá trị mua bán, có thể lọc tín hiệu không hiệu quả, làm cho chiến lược ổn định hơn. Ưu điểm chính là chất lượng tín hiệu cao, phù hợp với thị trường thực.

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

//@version=5
strategy(title="Rate Of Change Mod Strategy", shorttitle="ROC", format=format.price, precision=2)
//length = input.int(9, minval=1)
//source = input(close, "Source")
//roc = 100 * (source - source[length])/source[length]
//plot(roc, color=#2962FF, title="ROC")
//hline(0, color=#787B86, title="Zero Line")

length = input.int(9, minval=1, title="Length")
maxHistory = input(200, title="Max Historical Period for ROC")
lenghtSmooth = input.int(10, minval=1, title="Length Smoothed ROC")
lenghtBUY = input.int(-80, title="Buy Threshold")
lenghtSELL = input.int(80, title="Buy Threshold")

source = close
roc = 100 * (source - source[length]) / source[length]

// Calculate the maximum ROC value in the historical period
maxRoc = ta.highest(roc, maxHistory)

// Calculate current ROC as a percentage of the maximum historical ROC
rocPercentage = (roc / maxRoc) * 100


rocPercentageS = ta.sma(rocPercentage, lenghtSmooth)
if ta.rising(rocPercentageS, 3) and rocPercentageS < lenghtBUY
    strategy.entry("Buy", strategy.long)

if ta.falling(rocPercentageS, 3) and rocPercentageS > lenghtSELL
    strategy.close("Buy")


plot(rocPercentage, color=color.new(color.blue, 0), title="Percentage ROC")
plot(rocPercentageS, color=color.new(#21f32c, 0), title="Percentage ROC")
hline(0, color=color.new(color.gray, 0), title="Zero Line")