Chiến lược White Box Robot Kênh Giá


Ngày tạo: 2024-02-28 17:51:14 sửa đổi lần cuối: 2024-02-28 17:51:14
sao chép: 0 Số nhấp chuột: 622
1
tập trung vào
1617
Người theo dõi

Chiến lược White Box Robot Kênh Giá

Tổng quan

Chiến lược hộp trắng robot cổng giá là một chiến lược giao dịch cơ giới hóa đơn giản dựa trên chỉ số cổng giá. Nó sử dụng các giới hạn trên và dưới của cổng giá để xác định thời gian nhập và xuất. Chiến lược longtime là nhiều đầu,shortime là trống.

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

Một chiến lược hộp trắng của robot kênh giá có một logic cốt lõi là:

  1. Sử dụng hàm highest và lowest để tính giá cao nhất và giá thấp nhất của dòng K gốc len gần đây, được định nghĩa là giới hạn trên và dưới của kênh giá
  2. Tính giá trung bình của kênh giá: ((giá cao nhất + giá thấp nhất) / 2
  3. Tạo thêm vị trí khi giá vượt qua giới hạn giá
  4. Khi giá vượt qua giới hạn thấp của cổng giá, mở kho
  5. Khi giá quay trở lại giá trung bình của kênh giá, thì giá sẽ nằm ở vị trí bình thường.

Chính sách này cũng có một số tham số có thể cấu hình:

  • Chiều dài kênh giá len: 50 đường K mặc định
  • Loại mở kho: nhiều đầu, đầu trống có thể được cấu hình riêng
  • Khoản mở đầu: 100% lợi nhuận của tài khoản mặc định
  • Hạn chế: có thể chọn sử dụng giá trung bình của kênh giá làm hạn chế
  • Thời gian giao dịch: Có thể cấu hình giao dịch chỉ trong phạm vi ngày được chỉ định

Bằng cách điều chỉnh các tham số này, chiến lược có thể được điều chỉnh tốt hơn cho các giống và môi trường thị trường khác nhau.

Phân tích lợi thế

Chiến lược hộp trắng của robot kênh giá có những ưu điểm sau:

  1. Chiến lược logic đơn giản, dễ hiểu và dễ thực hiện
  2. Sử dụng đầy đủ các chỉ số kênh giá để đánh giá xu hướng và đảo ngược
  3. Có nhiều tham số có thể cấu hình, có khả năng thích ứng
  4. Hệ thống dừng lỗ tích hợp có thể hạn chế lỗ hổng
  5. Hỗ trợ lọc thời gian, tránh ảnh hưởng của các sự kiện lớn

Nhìn chung, chiến lược này là một chiến lược theo dõi xu hướng đơn giản và thực tế, có thể đạt được hiệu quả tốt khi điều chỉnh các tham số.

Phân tích rủi ro

Chiến lược hộp trắng của robot kênh giá cũng có một số rủi ro:

  1. Chỉ số kênh giá nhạy cảm với tham số len, các chu kỳ thời gian và giống khác nhau cần được thử nghiệm và tối ưu hóa độc lập
  2. Theo dõi lỗ hổng có rủi ro bị mạo hiểm, cần điều chỉnh khoảng cách dừng lỗ theo biến động thị trường
  3. Trong trường hợp giao dịch ngang và biến động, sẽ có nhiều giao dịch vô nghĩa, tăng chi phí giao dịch và mất điểm trượt.

Để giảm thiểu những rủi ro này, cần phải tối ưu hóa các khía cạnh sau:

  1. Tự động tối ưu hóa tham số bằng phương pháp Walk Forward Analysis
  2. Thêm vùng đệm vào giá dừng để tránh khả năng bị đánh giá
  3. Tăng các chỉ số đánh giá xu hướng, tránh giao dịch trong thị trường dao động ngang

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

Các chiến lược hộp trắng của robot kênh giá có thể được tối ưu hóa hơn nữa:

  1. Tăng khả năng đánh giá xu hướng chu kỳ lớn, tránh giao dịch ngược
  2. Kết hợp các chênh lệch giá giữa các giống khác nhau để thiết lập các tham số và tận dụng cơ hội đánh giá
  3. Thêm một vùng đệm ngẫu nhiên vào giá dừng để giảm khả năng bị phá giá
  4. Định nghĩa giá trị của giá trị giá trị
  5. Đào tạo chiến lược tối ưu hóa đại lý cho các giống cụ thể bằng phương pháp học sâu

Những phương tiện tối ưu hóa này có thể giúp tăng cường tính ổn định và lợi nhuận của chiến lược.

Tóm tắt

Chiến lược hộp trắng robot kênh giá là một chiến lược theo dõi xu hướng đơn giản nhưng thực tế. Nó đánh giá hướng và điểm đảo ngược của xu hướng thông qua chỉ số kênh giá và đưa ra quyết định giao dịch. Chiến lược này dễ hiểu và thực hiện, có thể nhận được lợi nhuận tốt sau khi tối ưu hóa tham số.

Mã nguồn chiến lược
/*backtest
start: 2023-02-21 00:00:00
end: 2024-02-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro

//@version=4
strategy(title = "Robot WhiteBox Channel", shorttitle = "Robot WhiteBox Channel", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, commission_value = 0.1)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
needstop = input(true, defval = true, title = "Stop-loss")
lotsize = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
len = input(50, minval = 1, title = "Price Channel Length")
showll = input(true, defval = true, title = "Show lines")
showbg = input(false, defval = false, title = "Show Background")
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")

//Price Channel
h = highest(high, len)
l = lowest(low, len)
center = (h + l) / 2

//Lines
pccol = showll ? color.black : na
slcol = showll ? color.red : na
plot(h, offset = 1, color = pccol)
plot(center, offset = 1, color = slcol)
plot(l, offset = 1, color = pccol)

//Background
size = strategy.position_size
bgcol = showbg == false ? na : size > 0 ? color.lime : size < 0 ? color.red : na
bgcolor(bgcol, transp = 70)

//Trading
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * lotsize / 100 : lot[1]
if h > 0
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = h, when = strategy.position_size <= 0 and truetime)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = l, when = strategy.position_size >= 0 and truetime)
    strategy.entry("S Stop", strategy.long, 0, stop = center, when = strategy.position_size[1] <= 0 and needstop)
    strategy.entry("L Stop", strategy.short, 0, stop = center, when = strategy.position_size[1] >= 0 and needstop)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")