
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.
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à:
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.
Những ưu điểm chính của chiến lược này là:
Những rủi ro chính của chiến lược này 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:
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:
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.
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.
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ố.
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.
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.
/*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)