Реальная технология FMZ Quant - как преодолеть ограничения для получения тика

Автор:Нинабадасс., Создано: 2021-03-31 11:14:14, Обновлено: 2021-03-31 14:02:25

В высокочастотной стратегии торговли фьючерсами на сырьевые товары скорость получения котировок на рынке Tick оказывает решающее влияние на результат прибыли стратегии. Однако большинство торговых систем на рынке используют механизм обратного вызова. Потому что в функции onBar/onTick вы должны иметь дело со всей логикой кода, что является тратой времени; хотите вы этого или нет, ваша логика стратегии должна быть прервана, и вы должны использовать режим машины состояния, например:

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

FFMZ Quant не использует механизм обратного вызова, но использует механизм ввода функции main, который не прерывает логику стратегии, чтобы пользователи могли более естественно контролировать поток стратегии; используйте C ++ и Golang в качестве стабильного подслоя стратегии и используйте Javascript / Python на верхнем слое для решения логических проблем. Не думайте, что язык сценариев медленный, если вы не используете его для обучения NNS; даже если вы используете обучение NNS, после добавления Jit горячей компиляции, этого будет достаточно для любого случая; Chrome, мгновенно побеждающий IE, является примером. В сочетании с механизмом запуска событий, стратегия также может обрабатывать TAQ с самой высокой скоростью в первый раз. Например, когда мы получаем доступ к фьючерсной компании, мы можем получить только TAQ этой фьючерсной компании. Скорость и качество TAQ, которые мы получаем, связаны с нашей собственной сетью, а также связаны с нагрузкой фронт-энд-машины фьючерсной компании. Итак, как мы можем получить более точные данные о фьючерсах быстрее?

В рамках стратегии вы можете легко управлять счетами N различных фьючерсных компаний, объединять их TAQ и размещать заказы с самой быстрой скоростью. При нормальных обстоятельствах мы можем получить два тика в секунду от фьючерсных компаний, но с помощью технологии слияния TAQ, принимая MA801 в качестве примера, мы можем получить максимум 6 не повторяющихся тиков в секунду.

img

Давайте перейдем прямо к коду (код может работать только в боте, а не в бэкстесте), и использование функции IO может относиться к:https://www.fmz.cn/api#io函数

Когда бот добавляет платформу, N фьючерсных компаний могут быть добавлены для обработки одновременного слияния TAQ; здесь мы временно добавляем две и демонстрируем это:

Код следующий:

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
        }
    }
}

Результат следующий:

img

Можно увидеть, что в 21:24:44 данные первой фьючерсной компании прибывают до второй, и результат можно увидеть, добавив две фьючерсные компании. Если вы используете его для разработки высокочастотных торговых стратегий, вы решили очень важный и решающий шаг, то есть скорость, стабильность и надежность получения Tick.

FMZ Quant (ранее BotVS) - это платформа, специально созданная для разработчиков, которые имеют критические требования к стабильности и скорости стратегии. Технология протокола подслоя разработана независимо, которая может работать на микрокомпьютерах с одним микросхемой Linux / Windows / Mac / ARM или даже мобильных телефонах, и ее скорость заказа чрезвычайно высока. Реакция на TAQ быстрая, и это лучший выбор для разработки высокочастотных стратегий.


Больше