Chiến lược này là một chiến lược giao dịch xu hướng dựa trên đường trung bình động. Nó sử dụng 3 đường trung bình động với các tham số khác nhau để tạo ra tín hiệu giao dịch. Nó đi dài khi giá vượt trên đường trung bình động và đi ngắn khi giá vượt dưới. Chiến lược có 3 đường trung bình động để bước vào dài hoặc ngắn, cho phép nó theo xu hướng.
Chiến lược tính toán đường trung bình động ma với chiều dài len bằng hàm sma. Sau đó nó tính toán 3 đường trung bình động khác longline1, longline2, longline3 được dịch chuyển lần lượt -4%, -5%, -6% dựa trên ma.
Đối với việc tạo tín hiệu dài, nếu vị trí hiện tại là bằng phẳng, nó sẽ dài với 1 lô khi giá vượt qua đường dài1. Nếu đã dài 1 lô, nó sẽ thêm 1 lô khi giá vượt qua đường dài2. Nếu đã dài 2 lô, nó sẽ thêm 1 lô khi giá vượt qua đường dài3.
Đối với việc tạo tín hiệu ngắn, nếu đã dài, nó sẽ thoát khỏi tất cả các vị trí dài khi giá vượt dưới ma.
Việc nhập từng giai đoạn cho phép chiến lược theo xu hướng.
Giải pháp rủi ro:
Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:
Thêm các chỉ số khác như MACD để xác định sức mạnh xu hướng
Tối ưu hóa các thông số trung bình động để tìm kết hợp tốt nhất
Điều chỉnh kích thước và tỷ lệ lô nhập khẩu theo giai đoạn để tránh theo đuổi giá cao
Thêm cơ chế dừng mất mát chuyển động dựa trên ATR
Điều chỉnh kích thước vị trí theo cách năng động dựa trên biến động thị trường, giảm kích thước khi biến động cao
Các tham số thử nghiệm trên các sản phẩm khác nhau để tìm ra biểu tượng tối ưu
Phát triển mô-đun thoát để xem xét lợi nhuận ở một số mô hình nhất định
Nhìn chung, chiến lược giao dịch dựa trên hướng xu hướng được xác định bởi đường trung bình động và lợi nhuận từ xu hướng thông qua các mục nhập từng giai đoạn. Nhưng nó có một số vấn đề chậm trễ và rủi ro theo đuổi giá cao. Chúng ta có thể tối ưu hóa nó bằng cách thêm các chỉ số phụ trợ, tối ưu hóa các tham số, điều chỉnh kích thước vị trí, thêm stop loss, vv, để thích nghi với các điều kiện thị trường khác nhau và đạt được lợi nhuận ổn định.
/*backtest start: 2022-10-02 00:00:00 end: 2023-10-08 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2019 //@version=4 strategy(title = "Noro's ShiftMA-multi Strategy v1.0", shorttitle = "ShiftMA-multi", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3) //Settings capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot") len = input(3, minval = 1, title = "MA Lenghs") src = input(ohlc4, title = "MA Source") longlevel1 = input(-4.0, title = "Long line 1") longlevel2 = input(-5.0, title = "Long line 2") longlevel3 = input(-6.0, title = "Long line 3") needoffset = input(true, title = "Offset") //Variables size = strategy.position_size mult = 1 / syminfo.mintick //MA ma = sma(src, len) longline1 = round(ma * ((100 + longlevel1) / 100) * mult) / mult longline2 = round(ma * ((100 + longlevel2) / 100) * mult) / mult longline3 = round(ma * ((100 + longlevel3) / 100) * mult) / mult //Lines offset = needoffset ? 1 : 0 plot(ma, color = color.blue) plot(longline1, offset = offset, color = color.lime) plot(longline2, offset = offset, color = color.lime) plot(longline3, offset = offset, color = color.lime) //Trading lot = 0.0 lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1] lots = 0.0 if ma > 0 lots := round(size / lot) strategy.entry("L1", strategy.long, lot, limit = longline1, when = (lots == 0)) lots := round(size / lot) strategy.entry("L2", strategy.long, lot, limit = longline2, when = (lots <= 1)) lots := round(size / lot) strategy.entry("L3", strategy.long, lot, limit = longline3, when = (lots <= 2)) if size > 0 strategy.entry("TP", strategy.short, 0, limit = ma)