Chiến lược này dựa trên phương pháp đa luồng của đường trung bình di chuyển. Nó sử dụng 3 đường trung bình di chuyển với các tham số khác nhau để tạo tín hiệu giao dịch. Khi giá vượt qua đường trung bình di chuyển, hãy làm nhiều hơn, khi đi xuống, hãy làm trống.
Chiến lược này sử dụng hàm sma để tính toán đường trung bình di chuyển có chiều dài len là ma. Sau đó, tính toán đường trung bình di chuyển có tỷ lệ nhất định của 3 đường ngang theo ma: longline1, longline2, longline3. Trong đó, longline1 di chuyển -4%, longline2 di chuyển -5%, và longline3 di chuyển -6%.
Khi phát ra tín hiệu mua, nếu hiện tại không có vị trí, hãy mở thêm vị trí khi giá vượt qua longline 1; nếu đã có vị trí 1 tay, hãy mở thêm 1 tay khi giá vượt qua longline 2; nếu đã có vị trí 2 tay, hãy mở thêm 1 tay khi giá vượt qua longline 3, giữ tối đa 3 tay.
Trong các tín hiệu bán ra được tạo ra, nếu hiện đang giữ nhiều vị trí, khi giá đè xuống ma sẽ bị giảm.
Chiến lược này có thể làm nhiều hơn bằng cách phân cấp theo lô để đạt được hiệu quả theo dõi xu hướng.
Phương pháp giải quyết rủi ro:
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Thêm một số chỉ số khác để xác định xu hướng, ví dụ như kết hợp MACD để xác định xu hướng mạnh
Tối ưu hóa tham số trung bình di chuyển để tìm các tham số kết hợp tối ưu
Điều chỉnh số lượng và tỷ lệ giết người theo nhóm để tránh bị truy lùng
Thêm cơ chế dừng chân di động, có thể thiết lập điểm dừng chân theo ATR
Có thể điều chỉnh số vị trí theo biến động của tỷ lệ biến động thị trường, giảm vị trí khi biến động lớn
Kiểm tra hiệu quả của các tham số trên các giống khác nhau để tìm ra giống phù hợp nhất với chiến lược
Xây dựng mô-đun Exit, xem xét việc dừng xuất cảnh khi một hình thức cụ thể xuất hiện
Nhìn chung, chiến lược này sử dụng đường trung bình di chuyển để xác định xu hướng giao dịch, có thể theo dõi xu hướng và kiếm lợi nhuận bằng cách phân loại theo từng đợt. Tuy nhiên, có một số rủi ro bị chậm trễ. Chúng ta có thể tối ưu hóa chiến lược này bằng cách thêm các chỉ số phán đoán hỗ trợ, tham số tối ưu hóa, điều chỉnh quản lý vị trí, tăng cơ chế dừng lỗ, v.v.
/*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)