Chiến lược giao dịch trung bình chuyển động đa cấp nhập và dừng lỗ ở nhiều cấp bằng cách thiết lập một số đường trung bình chuyển động chuyển động với các tham số khác nhau. Chiến lược đầu tiên tính toán 3 đường dài và 3 đường ngắn. Nó đi dài khi các đường dài nằm dưới các đường ngắn, và đi ngắn khi các đường ngắn nằm dưới các đường dài. Chiến lược cho phép tùy chỉnh các tham số như thời gian trung bình chuyển động, tỷ lệ chuyển động, phạm vi thời gian giao dịch, v.v. Nó phù hợp với giao dịch xu hướng trung bình dài hạn.
Tính toán trung bình di chuyển đơn giản của giá src trong thời gian len như đường cơ sở.
Đặt số lượng đường dài và đường ngắn dựa trên các thông số dài và ngắn.
Các đường dài1 vv được thiết lập bằng cách di chuyển đường cơ sở theo tỷ lệ đường dài1 vv. Các đường ngắn được thiết lập tương tự.
Nhập giao dịch ở nhiều cấp khi giá vượt qua các đường trong thời gian giao dịch.
Dừng lỗ khi giá chạm vào đường cơ sở.
Lập tất cả các vị trí sau giờ kết thúc.
Chiến lược có những lợi thế sau:
Nhập nhiều cấp độ cho phép kiếm lợi nhuận ở các giai đoạn khác nhau của xu hướng.
Rất tùy chỉnh với các tham số cho các sản phẩm khác nhau và phong cách giao dịch.
Hệ thống đột phá đáng tin cậy dựa trên đường trung bình động.
Tránh các sự kiện lớn bằng cách thiết lập phạm vi thời gian giao dịch.
Các khoản lỗ bị hạn chế thông qua lệnh dừng lỗ.
Một số rủi ro của chiến lược:
Rủi ro cao từ các vị trí kim tự tháp, cần đủ vốn.
Các thông số không đúng có thể dẫn đến giao dịch quá mức.
Thời gian thoát cố định có thể bỏ lỡ lợi nhuận xu hướng muộn.
Không tính đến các vị trí qua đêm và chi phí mang theo.
Không kiểm soát kích thước vị trí.
Chiến lược có thể được cải thiện trong các khía cạnh sau:
Thêm stop loss theo sau thay vì thời gian thoát cố định.
Xem xét chi phí mang lại cho các vị trí qua đêm.
Thêm stop loss để nắm bắt lợi nhuận muộn.
Định vị kích thước năng động dựa trên phơi nhiễm hiện tại.
Kiểm tra các thông số trên các sản phẩm khác nhau và xây dựng phương pháp tối ưu hóa.
Tối ưu hóa mức dừng lỗ để tránh dừng không cần thiết.
Chiến lược chuyển động trung bình đa cấp có lợi từ xu hướng thông qua nhập nhập đa cấp dựa trên đường trung bình chuyển động. Thời gian giao dịch và kiểm soát dừng lỗ có rủi ro tốt. Những cải tiến hơn nữa về kiểm soát chi phí mang theo, tối ưu hóa tham số, tối ưu hóa dừng lỗ vv có thể nâng cao chiến lược và đáng nghiên cứu.
/*backtest start: 2022-09-16 00:00:00 end: 2023-09-22 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.1", shorttitle = "ShiftMA-multi", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3) //Settings long = input(3, defval = 3, minval = 0, maxval = 3, title = "Lines for long") short = input(3, defval = 3, minval = 0, maxval = 3, title = "Lines for short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot") len = input(3, minval = 1, title = "MA Length") src = input(ohlc4, title = "MA Source") shortlevel3 = input(15.0, title = "Short line 3") shortlevel2 = input(10.0, title = "Short line 2") shortlevel1 = input(5.0, title = "Short line 1") longlevel1 = input(-5.0, title = "Long line 1") longlevel2 = input(-10.0, title = "Long line 2") longlevel3 = input(-15.0, title = "Long line 3") needoffset = input(true, title = "Offset") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //Variables size = strategy.position_size mult = 1 / syminfo.mintick //MA ma = sma(src, len) longline1 = long >= 1 ? round(ma * ((100 + longlevel1) / 100) * mult) / mult : close longline2 = long >= 2 ? round(ma * ((100 + longlevel2) / 100) * mult) / mult : close longline3 = long >= 3 ? round(ma * ((100 + longlevel3) / 100) * mult) / mult : close shortline1 = short >= 1 ? round(ma * ((100 + shortlevel1) / 100) * mult) / mult : close shortline2 = short >= 2 ? round(ma * ((100 + shortlevel2) / 100) * mult) / mult : close shortline3 = short >= 3 ? round(ma * ((100 + shortlevel3) / 100) * mult) / mult : close //Lines colorlong1 = long >= 1 ? color.lime : na colorlong2 = long >= 2 ? color.lime : na colorlong3 = long >= 3 ? color.lime : na colorshort1 = short >= 1 ? color.red : na colorshort2 = short >= 2 ? color.red : na colorshort3 = short >= 3 ? color.red : na offset = needoffset ? 1 : 0 plot(shortline3, offset = offset, color = colorshort1) plot(shortline2, offset = offset, color = colorshort2) plot(shortline1, offset = offset, color = colorshort3) plot(ma, offset = offset, color = color.blue) plot(longline1, offset = offset, color = colorlong1) plot(longline2, offset = offset, color = colorlong2) plot(longline3, offset = offset, color = colorlong3) //Trading lot = 0.0 lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1] lots = 0.0 needtime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59) if ma > 0 lots := round(size / lot) strategy.entry("L1", strategy.long, lot, limit = longline1, when = (lots == 0 and long >= 1 and needtime)) lots := round(size / lot) strategy.entry("L2", strategy.long, lot, limit = longline2, when = (lots <= 1 and long >= 2 and needtime)) lots := round(size / lot) strategy.entry("L3", strategy.long, lot, limit = longline3, when = (lots <= 2 and long >= 3 and needtime)) lots := round(size / lot) strategy.entry("S1", strategy.short, lot, limit = shortline1, when = (lots == 0 and short >= 1 and needtime)) lots := round(size / lot) strategy.entry("S2", strategy.short, lot, limit = shortline2, when = (lots >= -1 and short >= 2 and needtime)) lots := round(size / lot) strategy.entry("S3", strategy.short, lot, limit = shortline3, when = (lots >= -2 and short >= 3 and needtime)) if size > 0 strategy.entry("TPL", strategy.short, 0, limit = ma) if size < 0 strategy.entry("TPS", strategy.long, 0, limit = ma) if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all()