Chiến lược này tối ưu hóa chiến lược đảo ngược điểm pivot truyền thống bằng cách tính toán ATR và thiết lập bộ lọc ATR để loại bỏ các điểm pivot không quan trọng, chỉ giao dịch trên những điểm thực sự quan trọng.
Lý thuyết cốt lõi là xác định các điểm pivot đỉnh và đáy quan trọng.
Lý thuyết để tính toán các pivot trough quan trọng là tương tự.
Sau khi có được các pivot quan trọng, đi ngắn khi giá phá vỡ một pivot đỉnh quan trọng, và đi dài khi nó phá vỡ một pivot đáy quan trọng.
Những lợi thế chính của chiến lược này là:
Những rủi ro chính là:
Để kiểm soát các rủi ro trên, tối ưu hóa từ các khía cạnh sau:
Các hướng tối ưu hóa khác bao gồm:
Kết hợp với các chỉ số khác để xác định chế độ thị trường, tránh đảo ngược giao dịch trong các thị trường xu hướng.
Thêm các thuật toán học máy để tự động tối ưu hóa các tham số. Các phương pháp như thuật toán di truyền, rừng ngẫu nhiên có thể được sử dụng để tìm các tập hợp tham số tối ưu.
Mô hình đào tạo sử dụng dữ liệu định lượng để tìm phạm vi ATR tối ưu.
Xem xét kết hợp với các chiến lược khác, sử dụng điểm mạnh 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 xu hướng, đảo ngược trong khoảng cách, theo xu hướng trong xu hướng bền vững.
Chiến lược đảo ngược pivot quan trọng này lọc ra các biến động nhỏ vô nghĩa bằng cách tính toán ATR và thiết lập bộ lọc. Chỉ có việc đảo ngược giao dịch trên các pivot quan trọng có thể cải thiện hiệu quả lợi nhuận của chiến lược. Trong khi đó, nó cũng làm tăng khó khăn tối ưu hóa tham số. Các tham số tối ưu cần phải được tìm thấy bằng cách xem xét toàn diện phạm vi ATR, tỷ lệ dừng lỗ / lấy lợi nhuận vv. Nếu tối ưu hóa kỹ lưỡng, nó có thể trở thành một chiến lược giao dịch ngắn hạ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)