avatar of 发明者量化-小小梦 发明者量化-小小梦
tập trung vào tin nhắn riêng tư
4
tập trung vào
1271
Người theo dõi

Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

Được tạo ra trong: 2019-07-17 10:22:20, cập nhật trên: 2023-10-24 21:40:50
comments   3
hits   4351

Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

Tìm hiểu chiến lược giao dịch của việc xây dựng mô-đun trực quan - chương giới thiệu và hiểu biết khái niệm về việc xây dựng và ghép nối các mô-đun trực quan. Sau đó, bạn có thể dễ dàng học cách sử dụng các mô-đun khác. Một số chức năng phức tạp hơn có thể được kết hợp.

  • ## Mô-đun danh mục giao dịch

Trong các nghiên cứu và thử nghiệm trước đây, chúng tôi đã tiếp xúc với một số mô-đun “danh mục giao dịch”. Ví dụ: Mô-đun “Trao đổi báo giá” Mô-đun “Trao đổi lấy K-line” …

Tôi sẽ không đi sâu vào chi tiết về những phương pháp đã được sử dụng.

  • 1. Lấy số lượng trao đổi

    Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    Khi viết chiến lược giao dịch bằng robot, bạn có thể thêm nhiều đối tượng trao đổi, ví dụ như chiến lược phòng ngừa rủi ro. Hoặc bạn cần phải duyệt qua (duyệt qua có nghĩa là ghé thăm từng đối tượng một) các đối tượng trao đổi để tiếp cận các điều kiện thị trường. Lúc này, bạn cần sử dụng một module để lấy số lượng trao đổi.

    Đầu tiên chúng ta có thể sử dụng một cấu trúc đơn giản để in số lượng trao đổi hiện được cấu hình: Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    Trên thực tế, nó giống như việc gọi mã chính sách JavaScript sau:

    function main () {
        Log(exchanges.length)
    }
    

    Hãy cùng xem kết quả khi chạy mô-đun kết hợp này: Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    Bạn có thể thấy rằng chúng tôi đã thêm 3 đối tượng trao đổi, đại diện cho ba tài khoản trao đổi khác nhau và kết quả đầu ra của nhật ký kiểm tra ngược là 3.

  • 2. Lấy tên trao đổi

    Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    Khi thêm ba đối tượng trao đổi, hộp thả xuống sẽ hiển thị ba tùy chọn. Tìm hiểu trước về mô-đun vòng lặp trong loại vòng lặp. Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    Chúng ta hãy cùng tìm hiểu trước một mô-đun phán đoán có điều kiện: Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao Điều kiện phán đoán có thể được viết như sau: Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    Chúng tôi sử dụng mô-đun vòng lặp để lặp lại các tên trao đổi đã thêm Sử dụng mô-đun phán đoán có điều kiện để xác định xem số vòng lặp hiện tại có tương ứng với tên trao đổi cần in hay không.

    Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    Kết quả chạy thử nghiệm ngược: Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    Giống như mã chiến lược JavaScript:

    function main () {
        for (var i = 1 ; i <= exchanges.length ; i++) {
            if (i == 1) {
                Log(exchanges[0].GetName())
            } else if (i == 2) {
                Log(exchanges[1].GetName())
            } else {
                Log(exchanges[2].GetName())
            }
        }
    }
    
  • 3. Nhận cặp giao dịch hiện tại của sàn giao dịch

    Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    Một ví dụ đơn giản lấy cặp giao dịch của đối tượng trao đổi đầu tiên hiện được thiết lập và gán nó cho biến văn bản (được tạo trước trong danh mục biến).

    Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao Kết quả kiểm tra ngược: Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    Nếu bạn gọi mã chính sách JavaScript:

    function main () {
        var text = exchange.GetCurrency()
        Log(text)
    }
    
  • 4. Mô-đun đặt hàng

    Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao Mô-đun này rất quan trọng và được sử dụng cho các hoạt động đặt hàng. Biến giá được nhúng vào vị trí mộng (rãnh) đầu tiên để chỉ định giá đặt hàng. Bạn cũng có thể nhập trực tiếp giá trị cố định. Vị trí mộng thứ hai (chấm) nhúng biến số lượng đặt hàng, được sử dụng để chỉ định số lượng đặt hàng.

    Ví dụ, chúng tôi sẽ tạo một ví dụ về việc đặt lệnh mua dựa trên giá mới nhất của dữ liệu thị trường hiện tại, với mức trượt giá 10 nhân dân tệ, đặt số lượng lệnh là 0,1 xu và in ID lệnh. Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    Kết quả chạy thử nghiệm ngược: Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    Giống như mã chính sách JavaScript sau đây:

    function main () {
        var id = exchange.Buy(_C(exchange.GetTicker).Last + 10, 0.1)
        Log(id)
    }
    
  • 5. Module để lấy lệnh ủy thác cặp giao dịch hiện tại

    Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    Mô-đun này sẽ trả về tất cả các lệnh chưa hoàn thành cho cặp giao dịch hiện tại. Cấu trúc trả về là một danh sách (mảng), có thể được xử lý bởi các mô-đun loại danh sách (hoạt động duyệt, v.v.). Ví dụ: Chúng tôi sửa đổi một chút ví dụ về mô-đun lệnh [4] ở trên và thay đổi mức giá 10 nhân dân tệ được thêm vào khi đặt lệnh thành mức giá trừ đi 10 nhân dân tệ. Lệnh sẽ không được thực hiện ngay lập tức mà sẽ ở trạng thái chờ trong độ sâu mua và bán (tức là ở một mức nhất định giữa Mua 1, Mua 2 và Mua N), do đó lệnh sẽ ở trạng thái chờ thực hiện. Sau đó, chúng tôi sử dụng mô-đun “Lấy lệnh giao dịch của cặp giao dịch hiện tại” để lấy danh sách các lệnh đang ở trạng thái CHỜ (chờ thực hiện). Để tránh việc thực hiện lệnh trong các điều kiện thị trường tiếp theo và ảnh hưởng đến việc quan sát cuối cùng của backtest, sau khi mô-đun “Lấy lệnh ủy thác cặp giao dịch hiện tại” được thực hiện và danh sách lệnh được in ra, chúng tôi ngay lập tức sử dụng “Ném ngoại lệ” “mô-đun để dừng chương trình.

    Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    Kiểm tra ngược cho thấy: Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    Giá lệnh mua thấp hơn 10 nhân dân tệ so với giá mới nhất tại thời điểm đó nên giao dịch sẽ không được hoàn tất ngay lập tức. Sau đó lấy các lệnh đang chờ thực hiện và in chúng ra. Cuối cùng, một ngoại lệ được đưa ra để dừng chương trình.

    Toàn bộ mô-đun được lắp ráp giống như việc gọi một chiến lược JavaScript:

    function main () {
        var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
        Log(id)
        Log(exchange.GetOrders())
        throw "stop"
    }
    
  • 6. Module hủy đơn hàng

    Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    Mô-đun này được sử dụng để hủy đơn hàng.

    Có nhiều trường hợp cần phải thực hiện điều này khi viết chính sách:

    Hủy tất cả các đơn hàng đang chờ xử lý.

    Không nghi ngờ gì nữa, điều này sẽ yêu cầu sử dụng “mô-đun hủy lệnh”. Trong khi tìm hiểu mô-đun hủy lệnh, chúng ta có thể sử dụng [5] để lấy mô-đun cho lệnh ủy thác của cặp giao dịch hiện tại và kết hợp chúng để đạt được chức năng này.

    Đầu tiên, để kiểm tra lệnh hủy tất cả đơn hàng, việc đặt hàng không thực sự rõ ràng, chúng ta bắt đầu bằng cách đặt hai đơn hàng có giá và số lượng khác nhau để phân biệt hai đơn hàng.

    Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    Sử dụng mô-đun “Duyệt từng phần tử trong danh sách” trong mô-đun loại vòng lặp để duyệt các thứ tự trong danh sách thứ tự đang chờ xử lý hiện tại. Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao Trong quá trình duyệt, mỗi thứ tự được truy xuất sẽ được gán cho biến module order (được tạo trong biến module type, như được hiển thị bên dưới:) Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao Sử dụng mô-đun loại công cụ: Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao Lấy ID lệnh và chuyển đến vị trí mộng (lõm) của mô-đun hủy lệnh, mô-đun hủy lệnh sẽ thực hiện lệnh hủy.

    Chạy thử nghiệm ngược: Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    Sử dụng mô tả chính sách JavaScript:

    function main () {
        var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
        Log(id)
        var id2 = exchange.Buy(_C(exchange.GetTicker).Last - 12, 0.2)
        Log(id2)
        var orders = exchange.GetOrders()
        Log(orders)
        for (var i in orders) {
            var order = orders[i]
            Log(exchange.CancelOrder(order.Id))
        }
    }
    
  • 7. Một mô-đun để lấy thông tin chi tiết về đơn hàng dựa trên ID đơn hàng

    Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    Mô-đun này có thể trả về thông tin đơn hàng chi tiết bằng cách kết nối mô-đun biến ID đơn hàng với vị trí mộng và chốt.

    Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    Chú ý đến thứ tự trả về sau khi chạy: Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    So sánh với kết quả chạy trong ví dụ [5], có thể thấy rằng thứ tự in là thông tin thứ tự riêng biệt.[] Được đặt trong dấu ngoặc vuông. Vì ví dụ [5] trả về một danh sách, ví dụ này trả về một thông tin thứ tự duy nhất (được lấy dựa trên biến ID module tại vị trí mộng được module truyền vào).

    Ví dụ trên tương đương với việc thực thi chính sách JavaScript:

    function main () {
        var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
        Log(exchange.GetOrder(id))
    }
    
  • 8. Mô-đun giao dịch tương lai

    Chúng ta sẽ nghiên cứu từng mô-đun trên và thiết lập sàn giao dịch thử nghiệm cho hợp đồng tương lai hàng hóa.

    Thiết lập kiểm tra ngược: Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao Ví dụ sau đây sẽ kiểm tra lại thiết lập này.

    • Mô-đun đánh giá trạng thái kết nối giữa máy chủ của công ty giao dịch hàng hóa tương lai CTP và máy chủ của công ty giao dịch hàng hóa tương lai

    Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    Hợp đồng tương lai hàng hóa có thời gian mở và đóng. Khi thị trường đóng cửa, bạn không thể kết nối.

    • Thiết lập mô-đun hợp đồng

    Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    Khi đối tượng trao đổi được cấu hình là sàn giao dịch tương lai, nếu bạn không thiết lập hợp đồng và không trực tiếp lấy thông tin thị trường, lỗi sẽ được báo cáo: Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    Chúng tôi thiết lập hợp đồng là MA909, đây là hợp đồng chính hiện tại về methanol. Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao Theo cách này, giá trị giá mới nhất trên thị trường tích tắc hiện tại của hợp đồng MA909 sẽ được thu thập.

    • Thiết lập mô-đun hướng lệnh giao dịch tương lai

    Trong mô-đun lệnh thực hiện Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao
    Hướng lệnh cần phải được chỉ định vì hợp đồng tương lai có: mua: mở một vị thế mua dài bán: mở một vị thế bán khống closebuy : đóng vị thế mua dài closesell : đóng vị thế bán khống Bốn hướng (hợp đồng tương lai hàng hóa có thêm hai hướng nữa: closebuy_today đóng các vị thế mua hôm nay, closesell_today đóng các vị thế bán hôm nay).

    Ví dụ, nếu mô-đun lệnh được thiết lập là mua, thì sẽ có hai ý nghĩa: mở một vị thế mua và đóng một vị thế bán, điều này tạo ra sự mơ hồ. Do đó, cần có mô-đun “Thiết lập hướng lệnh giao dịch tương lai” để thiết lập hướng lệnh rõ ràng.

    Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    Kiểm tra ngược cho thấy: Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    Giống như mã chiến lược JavaScript:

      function main () {
          while (true) {
              if (exchange.IO("status")) {
                  exchange.SetContractType("MA909")
                  Log(exchange.GetTicker().Last)
                  exchange.SetDirection("buy")
                  Log(exchange.Buy(1000, 1))
                  throw "stop"
              } else {
                  Log("未连接商品期货前置机")
              }
              Sleep(1000)
          }
      }
    
  • 9. Mô-đun giao dịch tương lai tiền điện tử

    Việc sử dụng hợp đồng tương lai tiền kỹ thuật số về cơ bản giống như việc sử dụng hợp đồng tương lai hàng hóa trong [8] ở trên.

    • Lấy OKEX làm ví dụ, mã hợp đồng có thể là:

      • this_week : tuần này
      • next_week : tuần tới
      • quý : quý
      • hoán đổi : vĩnh viễn
    • BitMEX :

      • XBTUSD
      • ETHUSD
    • Thiết lập Mô-đun Đòn bẩy

    Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao

    Được sử dụng để thiết lập đòn bẩy cho hợp đồng tương lai tiền kỹ thuật số.

      # 注意 : 回测不支持。
    

    Như trong chiến lược JavaScript:

      function main () {
          exchange.SetMarginLevel(10)
      }
    

Ví dụ về chiến lược trực quan hóa:

Có thêm nhiều chiến lược tại: https://www.fmz.com/square

Các bài viết khác trong loạt bài này

Có thể dễ dàng hoàn thành chương trình nhàm chán bằng cách sử dụng các khối xây dựng. Hãy thử xem, rất thú vị!