Chiến lược đảo ngược đường trung bình động đôi là một chiến lược theo xu hướng. Nó tính toán đường trung bình động của các giai đoạn khác nhau để xác định xem xu hướng giá có đảo ngược hay không, để nắm bắt các điểm ngoặt và đạt được mức mua thấp và bán cao.
Chiến lược này đầu tiên tính toán hai bộ trung bình động với các khoảng thời gian khác nhau. Một bộ là trung bình động dài hạn, được sử dụng để xác định xu hướng tổng thể. Bộ khác là trung bình động ngắn hạn, được sử dụng để xác định xu hướng địa phương. Bằng cách so sánh mối quan hệ giữa hai bộ trung bình động, chiến lược đánh giá liệu xu hướng tổng thể đã đảo ngược hay không.
Cụ thể, chiến lược đầu tiên tính toán hai đường trung bình động dài hạn (ví dụ 60 ngày), đó là đường trung bình động đơn giản 60 ngày và đường trung bình động cân 60 ngày.
Khi trung bình di chuyển ngắn hạn vượt qua trên trung bình di chuyển dài hạn, nó cho thấy giá đã đảo ngược từ xu hướng giảm sang xu hướng tăng. Chiến lược sẽ mở các vị trí dài. Khi trung bình di chuyển ngắn hạn vượt qua dưới trung bình di chuyển dài hạn, nó cho thấy giá đã đảo ngược từ xu hướng tăng xuống xu hướng giảm. Chiến lược sẽ mở các vị trí ngắn.
Các bước cụ thể là:
Tính toán trung bình di chuyển đơn giản 60 ngày nma và trung bình di chuyển cân nhắc 60 ngày n2ma
Tính toán trung bình di chuyển đơn giản 5 ngày nma1 và trung bình di chuyển cân nhắc 5 ngày n2ma1
So sánh n2ma1 và nma1: nếu n2ma1 vượt trên nma1, mở các vị trí dài; nếu n2ma1 vượt dưới nma1, mở các vị trí ngắn
So sánh n2ma và nma: nếu n2ma vượt trên nma và vị trí dài được mở, tiếp tục giữ dài; nếu n2ma vượt dưới nma và vị trí ngắn được mở, tiếp tục giữ ngắn
Đóng các vị trí khi giá vượt quá mức dừng lỗ hoặc đạt mức lấy lợi nhuận
Lặp lại quy trình trên để nắm bắt sự đảo ngược xu hướng và đạt được mua thấp và bán cao
Lợi thế của chiến lược này là sự kết hợp của hai đường trung bình động có thể bắt được sự đảo ngược của xu hướng giá một cách nhạy cảm.
Rủi ro của chiến lược này là việc chéo trung bình động kép có thể có tín hiệu sai, gây ra sự nhầm lẫn khi nhập hoặc ra khỏi các vị trí, do đó làm tăng rủi ro giao dịch. Ngoài ra, các hệ thống trung bình động có xu hướng có tín hiệu sai trong các thị trường giới hạn phạm vi. Cuối cùng, hệ thống trung bình động kép đòi hỏi thời gian kiểm tra ngược tương đối dài để xác minh sự ổn định của cài đặt tham số.
Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:
Tối ưu hóa các khoảng thời gian trung bình động để tìm kết hợp thông số tốt nhất
Thêm các bộ lọc chỉ số kỹ thuật khác để tránh đột phá sai
Thêm stop loss và take profit để kiểm soát rủi ro giao dịch duy nhất
Kết hợp với thời gian giao dịch xu hướng để tránh các giao dịch sai trong thị trường bên cạnh
Điều chỉnh động kích thước vị trí để thích nghi với biến động thị trường thay đổi
Tóm lại, chiến lược đảo ngược trung bình di chuyển kép nắm bắt các điểm chuyển đổi xu hướng giá bằng cách so sánh các mức trung bình di chuyển giai đoạn khác nhau, để đạt được mức mua thấp và bán cao. Tối ưu hóa cài đặt tham số, thêm bộ lọc và kiểm soát rủi ro là các hướng để cải thiện chiến lược. Khi được sử dụng đúng cách, nó có thể là một công cụ hiệu quả để nắm bắt định lượng các sự đảo ngược xu hướng.
/*backtest start: 2022-10-10 00:00:00 end: 2023-06-08 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 // //////////////// Attempt to Reduced ReDraw version ///////////////////// // // Microcana.com strategy by pilotgsms - version 4.20b <<<< Edited by Seaside420 >>>> special thanks to 55cosmicpineapple // Hull_MA_cross added to script strategy("M&H_v420b", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0) dt = input(defval=0.0010, title="Decision Threshold", type=float, step=0.0001) dd = input(defval=1, title="Post Signal Bar Delay", type=float, step=1) df = input(defval=5, title="Close Position Bar Delay", type=float, step=1) keh=input(title="Double HullMA Cross",defval=7, minval=1) confidence=(request.security(syminfo.tickerid, 'D', close)-request.security(syminfo.tickerid, 'D', close[1]))/request.security(syminfo.tickerid, 'D', close[1]) prediction = confidence > dt ? true : confidence < -dt ? false : prediction[1] n2ma=2*wma(close,round(keh/2)) nma=wma(close,keh) diff=n2ma-nma,sqn=round(sqrt(keh)) n2ma1=2*wma(close[2],round(keh/2)) nma1=wma(close[2],keh) diff1=n2ma1-nma1,sqn1=round(sqrt(keh)) n1=wma(diff,sqn) n2=wma(diff1,sqn) openlong=prediction[dd] and n1>n2 and strategy.opentrades<1 if (openlong) strategy.entry("Long", strategy.long) openshort=not prediction[dd] and n2>n1 and strategy.opentrades<1 if (openshort) strategy.entry("Short", strategy.short) closeshort=prediction and close<low[df] if (closeshort) strategy.close("Short") closelong=not prediction and close>high[df] if (closelong) strategy.close("Long")