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.rest
La API del protocolo, muchas de las estrategias están basadas enrest
A veces, las actualizaciones son más lentas. Además, en los últimos años también han surgido algunas bolsas.rest
Los problemas de interfaz que hacen que la política no pueda usarse.websocket
El 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:
exchange.GetTicker
La 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.websocket
El motor de datos impulsado por la interfaz comercial se pone en marcha.
El uso de lenguajes de códigoJavaScript
El idioma también.
Por ejemplo, queremos cambiar una vieja estrategia clásica: "Rompe hielo".
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.ticker
En los datosBuy
、Sell
、Last
Estas propiedades son:ticker
Los datos se obtienen a través de la función API de la plataforma FMZ:exchange.GetTicker
El objetivo es el de obtener.exchange.GetTicker
FunciónHook
La 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.
init
Coordinación de funcionesHemos creado una "biblioteca de modelos" llamada:Conexión sin costuraEl código inicial está en blanco.
Y luego le damosConexión sin costuraLa plantilla tiene dos parámetros.
Se utiliza para controlar si se enciende o nowebsocket
Función de interfaz, control para especificar una interfaz de mercado específica.exchange.GetTicker
La interfaz hace la operación de gancho.GetTicker
La 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.websocket
El 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.init
Funciones 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.websocket
Las interfaces de transacción, respectivamente, son el dinero en efectivo y el dinero en efectivo de tokens.init
La 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 primeroinit
Función que puede ejecutarse automáticamente.exchange.GetTicker
Contenido de función sustituido por usowebsocket
Implementació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
¡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:
Seleccione, guarde, y ya está.
La estrategia de crear un "rompe hielo" es un robot de escritorio real, y el mercado elige el bitcoin.¿Qué es esto? EnciendeConexión sin costuraLos parámetros de control en la plantilla.
¿Qué es lo que está sucediendo?
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.
En el registro del robot se muestra:
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.GetTicker
La explicación de la estrategia de la función de interfaz de sector, otras interfaces de sector, por ejemploexchange.GetDepth
、exchange.GetTrades
、exchange.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 plantillaswebsocket
La implementación, el usoDial
Las funciones (ver la documentación de la API Dial Function) se pueden ajustar según sea necesario.read()
Parámetros de las funciones-2
Es decir, sólo regresa.websocket
Los datos más recientes en la zona de amortiguación de la conexión que recibe los datos.
Gracias por leer.
el congcong009Monk, ¿podrías darme un poco más de Python?
Las novias también.Lo bueno, debería ser compartido más temprano.
Los inventores cuantifican - sueños pequeñosBien, gracias por la sugerencia.