Chiến lược đảo ngược điểm trục quan trọng


Ngày tạo: 2024-01-29 14:58:15 sửa đổi lần cuối: 2024-01-29 14:58:15
sao chép: 1 Số nhấp chuột: 708
1
tập trung vào
1629
Người theo dõi

Chiến lược đảo ngược điểm trục quan trọng

Tổng quan

Chiến lược này được tối ưu hóa dựa trên chiến lược đảo ngược cổ phiếu truyền thống, chủ yếu bằng cách tính toán ATR và thiết lập yếu tố lọc ATR để lọc ra một số cổ phiếu vô nghĩa và chỉ giao dịch những cổ phiếu thực sự quan trọng.

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

Logic cốt lõi của chiến lược này là tính toán các điểm hỗ trợ cao và điểm hỗ trợ thấp quan trọng. Các bước chính để tính toán các điểm hỗ trợ cao là:

  1. Tính toán ATR, thiết lập yếu tố lọc ATR at_mult
  2. Đi qua một số K đường ở bên trái ((được thiết lập bởi leftBars), nếu điểm cao của điểm cao hơn bất kỳ điểm cao nào của K đường ở bên trái + ATR*atr_mult, thì dấu ngoặc kép không có giá trị.
  3. Đi qua một số K đường ở bên phải (được thiết lập bởi rightBars) + ATR nếu điểm cao hơn bất kỳ điểm cao nào trên đường K bên phải*atr_mult, thì dấu ngoặc kép không có giá trị.
  4. Nếu điểm cao vẫn còn hiệu quả sau khi kiểm tra như trên, hãy quay trở lại điểm cao như là điểm cao quan trọng.

Lý luận của việc tính toán điểm thấp cũng tương tự như vậy.

Sau khi đạt được điểm hỗ trợ quan trọng, khi giá vượt qua điểm hỗ trợ cao quan trọng, hãy làm giảm; khi giá vượt qua điểm hỗ trợ thấp quan trọng, hãy làm nhiều hơn.

Phân tích lợi thế

Những ưu điểm chính của chiến lược này là:

  1. Thông qua các tham số lọc ATR vàatr_mult, bạn có thể lọc ra những biến động nhỏ vô nghĩa, chỉ giao dịch các điểm thực sự quan trọng và tránh giao dịch vô nghĩa.
  2. Các tham số ATR có thể được điều chỉnh động, tự động điều chỉnh phạm vi giao dịch trong thị trường biến động lớn, tránh giao dịch quá mức.
  3. Các chiến lược đảo ngược điểm dựa trên chính nó có tỷ lệ thắng và lợi nhuận cao hơn.

Phân tích rủi ro

Những rủi ro chính của chiến lược này là:

  1. Thiết lập tham số ATR không chính xác có thể lọc quá nhiều cơ hội giao dịch có hiệu lực. Nếu ATR quá lớn, các điểm hỗ trợ có hiệu lực cũng có thể được lọc.
  2. Chính chiến lược đảo ngược điểm dựa vẫn có nguy cơ bị mắc kẹt và cần thiết lập lỗ dừng để kiểm soát rủi ro.
  3. Các chiến lược chuyển đổi ngược nhạy cảm với chi phí giao dịch, cần thiết lập các điểm dừng và dừng hợp lý.

Để kiểm soát các rủi ro trên, có thể tối ưu hóa các khía cạnh sau:

  1. Tối ưu hóa tham số ATR để đảm bảo có đủ cơ hội giao dịch.
  2. Thiết lập tỷ lệ dừng lỗ hợp lý.
  3. Điều chỉnh đúng số lượng người đặt cược để giảm chi phí giao dịch.

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 theo một số hướng sau:

  1. Kết hợp với các chỉ số khác để đánh giá tình trạng xu hướng thị trường, tránh giao dịch đảo ngược xuất hiện trong tình trạng xu hướng. Có thể xem xét thêm các chỉ số như MACD, KDJ.

  2. Thêm thuật toán học máy, tự động tối ưu hóa tham số. Có thể sử dụng thuật toán di truyền, rừng ngẫu nhiên và các phương pháp khác để tìm các tổ hợp tham số tối ưu nhất.

  3. Thêm dữ liệu định lượng để đào tạo và tìm ra phạm vi ATR tốt nhất. Thêm dữ liệu lịch sử có thể giúp tăng độ chính xác trong lựa chọn tham số.

  4. Có thể xem xét sử dụng với các chiến lược khác, kết hợp các lợi thế của các loại chiến lược khác nhau. Ví dụ: kết hợp với chiến lược theo dõi xu hướng, đảo ngược trong tổng hợp, tiến bộ trong xu hướng.

Tóm tắt

Chiến lược đảo ngược điểm chính này có thể làm tăng hiệu quả mức lợi nhuận của chiến lược bằng cách tính ATR và thiết lập các phương pháp lọc các biến động nhỏ vô nghĩa, chỉ giao dịch đảo ngược ở điểm chính. Đồng thời, nó cũng làm tăng sự khó khăn trong việc tối ưu hóa một số tham số, cần phải xem xét tổng hợp các tham số tối ưu nhất từ phạm vi ATR, tỷ lệ dừng lỗ và nhiều khía cạnh khác. Nếu tham số được tối ưu hóa, chiến lược này có thể trở thành chiến lược giao dịch ngắn hiệu quả và ổn định.

Mã nguồn chiến lược
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("QuantNomad - Significant Pivot Reversal Strategy", shorttitle = "SPPS", overlay=true)

// Inputs 
leftBars   = input(4,   title = 'PP Left Bars')
rightBars  = input(2,   title = 'PP Right Bars')
atr_length = input(14,  title = 'ATR Length')
atr_mult   = input(0.1, title = 'ATR Mult')

// Pivot High Significant Function
pivotHighSig(left, right) =>
    pp_ok = true
    atr   = atr(atr_length)
    
    for i = 1 to left
        if (high[right] < high[right+i] + atr * atr_mult)
            pp_ok := false
    for i = 0 to right-1
        if (high[right] < high[i] + atr * atr_mult)
            pp_ok := false
    
    pp_ok ? high[right] : na

// Pivot Low Significant Function
pivotLowSig(left, right) =>
    pp_ok = true
    atr   = atr(atr_length)
    
    for i = 1 to left
        if (low[right] > low[right+i] - atr * atr_mult)
            pp_ok := false
    for i = 0 to right-1
        if (low[right] > low[i] - atr * atr_mult)
            pp_ok := false
    
    pp_ok ? low[right] : na


swh = pivotHighSig(leftBars, rightBars)
swl = pivotLowSig (leftBars, rightBars)

swh_cond = not na(swh)

hprice = 0.0
hprice := swh_cond ? swh : hprice[1]

le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])

if (le)
    strategy.entry("PivRevLE", strategy.long, comment="PivRevLE", stop=hprice + syminfo.mintick)

swl_cond = not na(swl)

lprice = 0.0
lprice := swl_cond ? swl : lprice[1]


se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])

if (se)
    strategy.entry("PivRevSE", strategy.short, comment="PivRevSE", stop=lprice - syminfo.mintick)