Type/to search
8
Follow
1364
Followers
Mô-đun trực quan để xây dựng chiến lược giao dịch - Nâng cao
Original
Created 2019-07-17 10:22:20  Updated 2023-10-24 21:40:50
 3
 4790

img

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

      img

      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:
      img

      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:
      img

      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

      img

      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.
      img

      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:
      img
      Điều kiện phán đoán có thể được viết như sau:
      img

      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.

      img

      Kết quả chạy thử nghiệm ngược:
      img

      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

      img

      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).

      img
      Kết quả kiểm tra ngược:
      img

      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

      img
      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.
      img

      Kết quả chạy thử nghiệm ngược:
      img

      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

      img

      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.

      img

      Kiểm tra ngược cho thấy:
      img

      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

      img

      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.

      img

      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.
      img
      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:)
      img
      Sử dụng mô-đun loại công cụ:
      img
      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:
      img

      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

      img

      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.

      img

      Chú ý đến thứ tự trả về sau khi chạy:
      img

      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:
      img
      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

        img

        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

        img

        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:
        img

        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.
        img
        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
        img
        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.

        img

        Kiểm tra ngược cho thấy:
        img

        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

        img

        Đượ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ị!

Related Recommendations
Comment
All comments (2)

    学了一个多月编程还是写不了策略,,现在全靠积木了!

    7 years ago

    感谢支持,这个系列文章会继续做的。
    其实根据每个范例后面对应的JavaScript策略代码,很容易就能掌握用JS 写策略的。

    7 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)