Tài nguyên đang được tải lên... tải...

Công nghệ thực sự của FMZ Quant - Làm thế nào để phá vỡ giới hạn để có được Tic

Tác giả:Ninabadass, Tạo: 2022-03-31 11:14:14, Cập nhật: 2022-03-31 14:02:25

Trong một chiến lược giao dịch tương lai hàng hóa tần số cao, tốc độ nhận giá thị trường Tick có ảnh hưởng quyết định đến kết quả lợi nhuận của chiến lược. Tuy nhiên, hầu hết các khung giao dịch trên thị trường sử dụng cơ chế chế gọi lại. Bởi vì trong hàm onBar/onTick, bạn phải xử lý toàn bộ logic mã, đó là lãng phí thời gian; cho dù bạn muốn hay không, logic chiến lược của bạn phải bị gián đoạn, và bạn phải sử dụng chế độ máy trạng thái, chẳng hạn như:

var state = STATE_IDLE;
function onTick() {
  if (state == STATE_IDLE) {
    // do something...
  } else if (state == ....) {
    // do something
  }
}

FFMZ Quant không áp dụng cơ chế gọi ngược, nhưng áp dụng cơ chế nhập hàm main mà không gián đoạn logic chiến lược, để người dùng có thể kiểm soát luồng chiến lược một cách tự nhiên hơn; sử dụng C ++ và Golang như lớp nền chiến lược ổn định, và sử dụng Javascript / Python trên lớp trên để giải quyết các vấn đề logic. Kết hợp với cơ chế kích hoạt sự kiện, chiến lược cũng có thể xử lý TAQ với tốc độ nhanh nhất trong lần đầu tiên. Ví dụ, khi chúng ta truy cập vào một công ty tương lai, chúng ta chỉ có thể nhận được TAQ của công ty tương lai này. Tốc độ và chất lượng của TAQ chúng ta nhận được liên quan đến mạng của riêng chúng ta, và cũng liên quan đến tải của máy front-end của công ty tương lai. Vì vậy, làm thế nào chúng ta có thể có được dữ liệu tick tương lai chính xác hơn nhanh hơn?

Dưới mô hình chiến lược, bạn có thể dễ dàng vận hành tài khoản của N công ty tương lai khác nhau, hợp nhất TAQ của họ, và đặt đơn đặt hàng với tốc độ nhanh nhất. Trong hoàn cảnh bình thường, chúng ta có thể nhận được hai tick mỗi giây từ các công ty tương lai, nhưng bằng công nghệ sáp nhập TAQ, lấy MA801 làm ví dụ, chúng ta có thể nhận được tối đa 6 tick không lặp lại mỗi giây.

img

Hãy đi thẳng đến mã (mã chỉ có thể được vận hành trong bot, không phải trong backtest), và việc sử dụng hàm IO có thể đề cập đến:https://www.fmz.cn/api#io函数

Khi một bot thêm một nền tảng, N công ty tương lai có thể được thêm để xử lý sự sáp nhập đồng thời của TAQ; ở đây chúng tôi tạm thời thêm hai và chứng minh điều này:

Mã như sau:

function main() {
    Log("Prepare to access the platform and subscribe to TAQ")
    // Step 1: all futures front-end processors are subscribing for symbols 
    _.each(exchanges, function(e) {
        // wait to access the platform, and yes, the strategy runs continuously for 365 days, and it can run even after the market is closed, and it is not the logic of event callback
good mistake
        while (!e.IO("status")) Sleep(1000);
        // Use the _C retry function to eliminate network errors, and subscribe to TAQ just access to the platform; there may be an error that CTP is not ready
        _C(e.SetContractType, "MA801")
        // Switch the TAQ receiving mode to immediate return mode instead of event trigger mode, please refer to the API documentation
        e.IO("mode", 0)
    })
    Log("Start to merge data...")
    // Step 2: here comes the important part
    var preVolume = 0
    while (true) {
        var ts = new Date().getTime()
        // If any platform has tick event, return 
        var e = exchange.IO("wait_any")
        // Reset Volume at a proper time 
        if (e.Nano/1000000 - ts > 60000) {
            preVolume = 0
        }

        if (e.Event == 'tick' && e.Ticker.Volume >= preVolume) {
            Log(ret, e.Ticker.Last, e.Ticker.Volume)
            preVolume = e.Ticker.Volume
        }
    }
}

Kết quả như sau:

img

Có thể thấy rằng vào lúc 21:24:44, dữ liệu của công ty tương lai đầu tiên đến trước công ty tương lai thứ hai, và kết quả có thể được nhìn thấy bằng cách thêm hai công ty tương lai. Nếu bạn sử dụng nó để phát triển các chiến lược giao dịch tần số cao, bạn đã giải quyết một bước rất quan trọng và quyết định, đó là tốc độ, sự ổn định và độ tin cậy của việc có được Tick.

FMZ Quant (trước đây là BotVS) là một nền tảng được tạo ra đặc biệt cho các nhà phát triển có yêu cầu quan trọng về sự ổn định và tốc độ chiến lược. Công nghệ giao thức tầng dưới được phát triển độc lập, có thể hoạt động dưới các máy vi tính chip đơn Linux / Windows / Mac / ARM hoặc thậm chí điện thoại di động, và tốc độ đặt hàng của nó cực kỳ nhanh. Phản ứng với TAQ nhanh chóng và đó là lựa chọn tốt nhất để phát triển các chiến lược tần số cao.


Thêm nữa