Tecnología real de FMZ Quant - Cómo romper los límites para obtener tick

El autor:No lo sé., Creado: 2022-03-31 11:14:14, Actualizado: 2022-03-31 14:02:25

En una estrategia de negociación de futuros de materias primas de alta frecuencia, la velocidad de recepción de las cotizaciones del mercado Tick tiene una influencia decisiva en el resultado de ganancia de la estrategia. Sin embargo, la mayoría de los marcos de negociación en el mercado utilizan el mecanismo de modo de devolución de llamada. Porque en la función onBar/onTick, tienes que lidiar con toda la lógica del código, que es una pérdida de tiempo; lo quieras o no, tu lógica de estrategia debe ser interrumpida, y debes usar un modo de máquina de estado, como:

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

FFMZ Quant no adopta el mecanismo de devolución de llamada hacia atrás, sino que adopta el mecanismo de entrada de función main que no interrumpe la lógica de la estrategia, para que los usuarios puedan controlar el flujo de estrategia de manera más natural; use C ++ y Golang como la capa de estrategia estable, y use Javascript / Python en la capa superior para hacer frente a los problemas de lógica. En combinación con el mecanismo de activación de eventos, la estrategia también puede procesar TAQ a la velocidad más rápida en la primera vez. Por ejemplo, cuando accedemos a una empresa de futuros, solo podemos recibir el TAQ de esta empresa de futuros. La velocidad y calidad del TAQ que obtenemos está relacionada con nuestra propia red, y también está relacionada con la carga de la máquina front-end de la compañía de futuros. Entonces, ¿cómo podemos obtener datos de ticks de futuros más precisos más rápido?

Bajo el modelo de estrategia, usted puede fácilmente operar las cuentas de N diferentes empresas de futuros, fusionar su TAQ, y colocar órdenes a la velocidad más rápida. En circunstancias normales, podemos obtener dos ticks por segundo de las compañías de futuros, pero con la tecnología de fusión TAQ, tomando MA801 como ejemplo, podemos obtener un máximo de 6 ticks no repetitivos por segundo.

img

Vamos directamente al código (el código solo se puede operar en el bot, no en el backtest), y el uso de la función IO puede referirse a:https://www.fmz.cn/api#io函数

Cuando un bot agrega una plataforma, se pueden agregar N compañías de futuros para procesar la fusión simultánea de TAQ; aquí agregamos temporalmente dos y demostramos esto:

Código como sigue:

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

Resultado:

img

Se puede ver que a las 21:24:44, los datos de la primera compañía de futuros llegan antes que la segunda, y el resultado se puede ver agregando dos compañías de futuros. Si lo utilizas para desarrollar estrategias de trading de alta frecuencia, has resuelto un paso muy importante y decisivo, es decir, la velocidad, estabilidad y fiabilidad de obtener Tick.

FMZ Quant (antiguo BotVS) es una plataforma especialmente creada para desarrolladores que tienen requisitos críticos en la estabilidad y velocidad de la estrategia. La tecnología de protocolo de la capa subyacente se desarrolla de forma independiente, que puede operarse bajo microcomputadoras de chip único Linux / Windows / Mac / ARM o incluso teléfonos móviles, y su velocidad de pedido es extremadamente rápida. La reacción a TAQ es rápida, y es la mejor opción para desarrollar estrategias de alta frecuencia.


Más.