La mano a la mano te enseña cómo dar a una vieja estrategia de conexión sin fisuras a la interfaz de mercado del websocket

El autor:Un sueño pequeño., Creado: 2019-09-26 15:47:53, Actualizado: 2023-10-18 19:54:36

img

La mano a la mano te enseña cómo dar a una vieja estrategia de conexión sin fisuras a la interfaz de mercado del websocket

En el caso de los inventores de plataformas de intercambio cuantitativasPlaza de la EstrategiaHay muchas estrategias interesantes que se utilizan en los intercambios de divisas digitales.restLa API del protocolo, muchas de las estrategias están basadas enrestA veces, las actualizaciones son más lentas. Además, en los últimos años también han surgido algunas bolsas.restLos problemas de interfaz que hacen que la política no pueda usarse.websocketEl soporte de la interfaz requiere que se realicen ciertos cambios en el código de la política, lo que suele ser más complicado (cambiar la política es mucho más difícil que reescribirla). ¿Cómo no cambiar la estrategia, pero usarla?websocket¿Y qué hay de las interfaces? En este caso, la plataforma de intercambio cuantitativo de los inventores es muy flexible, y podemos hacerlo a través de:

  • 1. Utilice la política "Biblioteca de plantillas".
  • 2 y sí.exchange.GetTickerLa función que se obtiene en el campo es la operación Hook.

En este caso, la estrategia es la misma, sin cambiar una línea de código, y la estrategia es la misma.websocketEl motor de datos impulsado por la interfaz comercial se pone en marcha. El uso de lenguajes de códigoJavaScriptEl idioma también.

Estrategias de análisis

Por ejemplo, queremos cambiar una vieja estrategia clásica: "Rompe hielo".

Dirección estratégica

Lo primero que hacemos es echar un vistazo al código de la estrategia, y descubrimos que la estrategia está impulsada por el mercado de ticks, y que se usa principalmente para hacer que los ticks se vuelvan más rápidos.tickerEn los datosBuySellLastEstas propiedades son:tickerLos datos se obtienen a través de la función API de la plataforma FMZ:exchange.GetTickerEl objetivo es el de obtener.exchange.GetTickerFunciónHookLa operación ((es decir, reescribir y reemplazar por otra versión) puede hacerse. Pero no podemos reescribir la estrategia de los rompehielos, eso puede afectar la estrategia, lo que queremos es un enlace sin fisuras! Así que el siguiente protagonista debe entrar.

Las funciones de la biblioteca de modelos yinitCoordinación de funciones

Hemos creado una "biblioteca de modelos" llamada:Conexión sin costuraEl código inicial está en blanco.

img

Y luego le damosConexión sin costuraLa plantilla tiene dos parámetros.

  • EsUsedWebSocket
  • Se puede utilizar el código de código de la aplicación.

img

Se utiliza para controlar si se enciende o nowebsocketFunción de interfaz, control para especificar una interfaz de mercado específica.exchange.GetTickerLa interfaz hace la operación de gancho.GetTickerLa interfaz es el parámetro de control del modo websocket: Hook_GetTicker.

La plantilla está creada, puedes escribir en ella el tipo de intercambio al que puedes acceder.websocketEl código de las funciones de las interfaces, la suscripción a ciertos mercados y la espera de que el intercambio envíe datos. El código específico ya no se describe, se puede ver en el código de SeamlessConnWS (publicado) y la documentación de la API.initFunciones y variables globales_DictConnectCreater_ConnMap

El código es:

var _DictConnectCreater = {
    "Huobi" : WSConnecter_Huobi,
    "Binance" : WSConnecter_Binance,
}

var _ConnMap = {}

function init () {
    if (IsUsedWebSocket) {
        var connectCreater = null
        if (exchanges.length != 1) {
            Log("切换为ws接口只针对 exchange 交易所对象(即第一个添加的交易所对象)")
        }
        var isFound = false 
        for (var name in _DictConnectCreater) {
            if (exchange.GetName() == name) {
                connectCreater = _DictConnectCreater[name]
                isFound = true
            }
        }

        if (!isFound) {
            throw "没有找到实现"
        }
        
        if (Hook_GetTicker) {
            var symbol = exchange.GetCurrency()
            _ConnMap.GetTicker = connectCreater("GetTicker", symbol)
            exchange.GetTicker = function () {
                return _C(_ConnMap.GetTicker.Read)
            }
        }
        // ... 
        
    }
}

Como se puede ver, esta plantilla sólo implementa dos intercambios.websocketLas interfaces de transacción, respectivamente, son el dinero en efectivo y el dinero en efectivo de tokens.initLa función es para que la estrategia del Rompehielo se cite.Conexión sin costuraDespués de la plantilla, cuando se ejecuta el disco real, se ejecuta primeroinitFunción que puede ejecutarse automáticamente.exchange.GetTickerContenido de función sustituido por usowebsocketImplementación del código de la interfaz para lograr el emparejamiento sin fisuraswebsocket¿Qué es lo que está pasando?

SeamlessConnWS es una dirección de plantilla

Cómo usarlo

¡Es muy simple!Conexión sin costuraUna vez que la plantilla ha sido copiada a su propia librería de políticas, solo puede ser usada para referirse a la política de "Rompe hielo", como se muestra a continuación:

img

Seleccione, guarde, y ya está.

La estrategia de crear un "rompe hielo" es un robot de escritorio real, y el mercado elige el bitcoin.img¿Qué es esto? EnciendeConexión sin costuraLos parámetros de control en la plantilla.img

¿Qué es lo que está sucediendo?img

Para facilitar la visualización de los datos enviados, he añadido un código de 157 líneas para imprimir los registros, lo que produce los datos enviados por los intercambiadores.img

En el registro del robot se muestra:img

Esto permite que la interfaz websocket y la estrategia se conectan sin cambios en la línea de código de la política.

Este caso es para uso exclusivoexchange.GetTickerLa explicación de la estrategia de la función de interfaz de sector, otras interfaces de sector, por ejemploexchange.GetDepthexchange.GetTradesexchange.GetRecords¡Es el mismo esquema!Conexión sin costuraEn la actualidad, el número de personas afectadas por la pandemia es cada vez mayor.

Enlaces específicos a las plantillaswebsocketLa implementación, el usoDialLas funciones (ver la documentación de la API Dial Function) se pueden ajustar según sea necesario.read()Parámetros de las funciones-2Es decir, sólo regresa.websocketLos datos más recientes en la zona de amortiguación de la conexión que recibe los datos.

Gracias por leer.


Relacionados

Más.

el congcong009Monk, ¿podrías darme un poco más de Python?

Las novias también.Lo bueno, debería ser compartido más temprano.

Un sueño pequeño.Bien, gracias por la sugerencia.