Chiến lược giao dịch trung bình động đa cấp


Ngày tạo: 2023-09-23 15:55:20 sửa đổi lần cuối: 2023-09-23 15:55:20
sao chép: 0 Số nhấp chuột: 686
1
tập trung vào
1617
Người theo dõi

Tổng quan

Chiến lược giao dịch đường trung bình di chuyển đa cấp bằng cách thiết lập đường trung bình di chuyển với nhiều tham số khác nhau, để thực hiện nhiều bước vào và dừng lỗ. Chiến lược đầu tiên tính toán 3 đường dài và 3 đường ngắn, đường dài thấp hơn đường ngắn thì làm nhiều, đường ngắn thấp hơn đường dài thì không có. Chiến lược có thể thiết lập các tham số như độ dài chu kỳ tính toán đường trung bình di chuyển, tỷ lệ chênh lệch, phạm vi thời gian giao dịch, và các tham số khác, áp dụng cho giao dịch xu hướng đường dài trung bình.

Nguyên tắc chiến lược

  1. Đường trung bình di chuyển đơn giản của chu kỳ len của giá src nguồn trong tham số tính toán, làm đường trung bình chuẩn.

  2. Số lượng đường dài và đường ngắn tương ứng theo các tham số long và short.

  3. longline1 và các dòng ngắn tương đương với longline1 và các dòng ngắn tương đương với longline1 và các dòng ngắn tương đương với longline1 và các dòng ngắn tương đương với longline1.

  4. Trong thời gian giao dịch, đánh giá mối quan hệ giữa giá và đường trung bình, để thực hiện nhiều cấp nhập cảnh.

  5. Hạn chế khi giá chạm đến đường trung bình chuẩn.

  6. Cần bắt buộc thanh toán ngay khi kết thúc.

Phân tích lợi thế

Chiến lược này có những ưu điểm sau:

  1. Có nhiều cấp độ nhập cảnh, có thể lấy xu hướng ở các giai đoạn khác nhau để kiếm tiền.

  2. Có nhiều tham số tùy chỉnh, có thể điều chỉnh theo các giống và phong cách giao dịch khác nhau.

  3. Dựa trên một hệ thống đồng tuyến, đánh giá đột phá có độ tin cậy cao hơn.

  4. Thiết lập các khoảng thời gian có thể giao dịch để tránh các thời điểm có ảnh hưởng lớn như phát hành dữ liệu quan trọng.

  5. Có một hệ thống ngăn chặn để kiểm soát tổn thất đơn lẻ.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Các nhà đầu tư có thể có những rủi ro lớn và cần được hỗ trợ tài chính.

  2. Thiết lập tham số không đúng có thể dẫn đến hoạt động đường siêu ngắn, nên thiết lập tham số đúng.

  3. Thời gian ra sân cố định có thể bỏ lỡ lợi nhuận xu hướng giai đoạn cuối. Bạn có thể thiết lập theo dõi dừng lỗ để tối ưu hóa.

  4. Không tính đến các trường hợp giữ cổ phiếu ban đêm và đêm. Có thể thêm kiểm soát chi phí giữ cổ phiếu.

  5. Không kiểm soát số vị trí có thể dẫn đến việc giữ một vị trí quá lớn.

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Tăng thời gian dừng di chuyển để thay thế thời gian ra sân cố định.

  2. Xem xét việc giữ vị trí qua đêm, thêm phí giữ vị trí và kiểm soát điểm trượt.

  3. Tham gia theo dõi dừng lỗ để có được lợi nhuận cuối cùng.

  4. Điều chỉnh số bàn tay đơn tùy theo vị trí, điều khiển vị trí một chiều.

  5. Kiểm tra hiệu quả của các tham số khác nhau đối với các giống khác nhau, thiết lập cơ chế tối ưu hóa tham số.

  6. Tối ưu hóa điểm dừng thử nghiệm, giảm thiểu điểm dừng không cần thiết.

Tóm tắt

Chiến lược đường trung bình chuyển động nhiều cấp thông qua nhập cảnh nhiều cấp trung bình, để theo dõi xu hướng và kiếm lợi nhuận. Thời gian giao dịch và điểm dừng lỗ được thiết lập kiểm soát rủi ro tốt hơn. Có thể tăng cường hiệu quả chiến lược thông qua kiểm soát chi phí nắm giữ, tối ưu hóa tham số, tối ưu hóa lỗ hổng và các cách khác, đáng để nghiên cứu và tối ưu hóa thêm.

Mã nguồn chiến lược
/*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()