Si eres un principiante en el trading cuantitativo en el ámbito de las criptomonedas, echa un vistazo a este artículo: Te acercamos al trading cuantitativo en el ámbito de las criptomonedas (parte 3)
Mensaje de error
En los artículos anteriores, hemos aprendido que el llamado comercio programado y cuantitativo es un programa de script que realiza algunas operaciones basadas en los datos obtenidos del intercambio después de una serie de cálculos, juicios y desencadenantes para operar la cuenta de intercambio para el comercio. Estas acciones de obtención de datos y operaciones de cuentas se realizan todas a través de la interfaz API de intercambio. En términos simples, es la interacción entre el programa de script y el intercambio. Como es una interacción, debe haber una interacción normal y una interacción anormal. Cuando ocurre una interacción anormal, la interfaz devuelve la información de excepción.
Por supuesto, los sistemas de comercio programados y cuantitativos en el mercado, o los programas desarrollados por nosotros mismos, tendrán varios avisos y mensajes de error. Estos mensajes de error no se limitan a los mensajes de error informados por la interfaz API de intercambio. También existen cosas como: errores de excepción en tiempo de ejecución del programa, errores de configuración, errores de sintaxis del programa, etc.
En la plataforma de negociación cuantitativa de Inventor, los mensajes de error se pueden dividir en varias categorías:
-
Error de sintaxis de la política
Este tipo de error es el más común, generalmente porque los novatos no están familiarizados con la programación y hay errores de sintaxis en el código escrito durante la fase de aprendizaje y prueba. Por ejemplo:El código carece de caracteres como corchetes. Este tipo de error generalmente es visible en la página de edición de políticas y la política no se puede ejecutar (se informará un error directamente durante el tiempo de ejecución, como se muestra en la siguiente figura).

Entonces, después de escribir la estrategia, habitualmente echo un vistazo a la página de edición de la estrategia de la plataforma para ver si hay una pequeña XX roja. Si la hay, debe haber un error obvio. -
Excepción del programa de tiempo de ejecución causada por el error del programa de políticas
Hay un ERROR en el programa. Cuando el programa se está ejecutando, si se activa una excepción, el programa se detendrá de manera anormal y mostrará este tipo de mensaje de error.Estos errores provocarán que el programa falle y deje de ejecutarse.
-
Errores causados por configuraciones y ajustes incorrectos
En la plataforma FMZ, los pares comerciales se definen uniformemente como
X_YEn este formato, X representa el nombre de la moneda de negociación, e Y representa el nombre de la moneda denominada (la moneda denominada de los pares de negociación de contratos de futuros basados en divisas generalmente se expresa en USD, que se ha presentado en artículos anteriores). Por ejemploBTC_USDT, si escribo el par comercial al azar,BTC-USDT。Error reportado en el sistema de backtesting de la plataforma FMZ:
Reportar un error en el trading real:
Además, un error común que cometen los novatos:
Este tipo de error es causado por cambiar la contraseña de la cuenta de la plataforma FMZ, lo que genera
API KEYNo válido (la CLAVE API del usuario está encriptada en el navegador y luego configurada en la plataforma FMZ), no se puede iniciar la estrategia y se informa un error. -
Error de llamada de interfaz
A menudo se producen errores de llamadas de interfaz al ejecutar estrategias. En artículos anteriores, aprendimos que las interfaces en la plataforma FMZ se dividen enInterfaz para generar solicitudes de red、Interfaz que no genera solicitudes de red. Los errores de interfaz no harán que el programa de políticas se detenga. Esto suele deberse a una excepción de llamada de interfaz, que devuelve datos incorrectos. En ese caso, la política no tiene tolerancia a fallos y el error de excepción del programa causado por los datos incorrectos hace que el programa se detenga. (El concepto de tolerancia a fallos se ha discutido en artículos anteriores).
A continuación se muestran algunos mensajes de error de interfaz que generan solicitudes de red:
-
Tiempo de espera de la red
Uno de los mensajes de error con los que se encuentran a menudo los novatos es el uso de dispositivos de red domésticos (sus propios ordenadores o servidores domésticos). Dado que la mayoría de los intercambios están bloqueados, muchos de ellos son básicamente inaccesibles desde la red doméstica y la interfaz de acceso informará un tiempo de espera. (mencionado en artículos anteriores)
-
Error http 429
Uno de los mensajes de error clásicos. El motivo es que se llama a la interfaz de intercambio con demasiada frecuencia, superando el límite de frecuencia del intercambio. (mencionado en artículos anteriores)
Algunos estudiantes nuevos podrían decir: "Solicitaré más intercambios".API KEYO simplemente puedo solicitar unas cuantas cuentas de intercambio más. Debemos saber que los exchanges suelen limitar la frecuencia de acceso a la interfaz en función de las direcciones IP. En pocas palabras, siempre que todas las solicitudes enviadas desde una dirección IP se cuenten en esta dirección IP, si se supera el límite, el servidor de exchange denegará el acceso a la interfaz. solicitud enviada por esta dirección IP. -
Informe de errores en el nivel empresarial de la interfaz de Exchange
El tiempo de espera y el 429 mencionados anteriormente son errores a nivel de red. También se informarán errores si se producen problemas en el nivel empresarial de la interfaz de intercambio. Por ejemplo, quiero obtener cotizaciones al contado, pero establezco un par de negociación que no existe. Lo probé en la herramienta de depuración de la plataforma FMZ. La herramienta de depuración es una herramienta de prueba muy conveniente, que es muy adecuada para pruebas en tiempo real de llamadas de funciones, adquisición de datos y otras necesidades.
No hay diferencia entre los resultados de ejecución de la herramienta de depuración y la ejecución real.
Huobi 错误 GetTicker: Invalid ticker: {"Info":{"err-code":"invalid-parameter","err-msg":"invalid symbol","status":"error","ts":1620872079355},"High":0,"Low":0,"Sell":0,"Buy":0,"Last":0,"Volume":0,"OpenInterest":0,"Time":0}El mensaje de error aquí significa que el par de transacciones no es válido (como se puede ver aquí)
"err-msg":"invalid symbol")。
Por ejemplo, hay muchos errores relacionados con los negocios. Por ejemplo, al configurar el apalancamiento, algunas bolsas no admiten valores de apalancamiento con partes decimales. En este caso, si el valor del apalancamiento contiene una parte decimal, también provocará un error. Error de llamada de interfaz.
Enumere una llamada de interfaz que no genera una solicitud de red
-
Establecer el código del contrato de futuros
Algunas interfaces solo establecen algunas variables globales en el sistema y no generan solicitudes de red, por ejemplo:Sin embargo, se producirán errores si los parámetros se pasan incorrectamente o se escriben aleatoriamente.
Sin embargo, no importa qué tipo de error sea, el mensaje de error que se muestra es la información clave para encontrar el problema y, generalmente, el problema se puede ver a partir del mensaje de error. Puede utilizar herramientas de traducción para traducir mensajes de error y extraer información clave. Por ejemplo, en el ejemplo anterior
"err-msg":"invalid symbol", traducción: "err msg": "Símbolo inválido". Probablemente sepa que la configuración de los pares comerciales es incorrecta, porque generalmente se utilizan símbolos ingleses para representar códigos comerciales y pares comerciales.
Analizaremos brevemente la información del error. Hay una publicación que seguirá recopilando preguntas frecuentes para consultar: https://www.fmz.com/bbs-topic/1427 -
Sistema de pruebas retrospectivas
El sistema de pruebas retrospectivas también es un punto clave en una herramienta cuantitativa. El sistema de pruebas retrospectivas permite probar de forma conveniente los prototipos de estrategia y comprobar de forma preliminar posibles errores y problemas lógicos en la estrategia. Necesitamos ser racionales respecto del sistema de backtesting. El sistema de backtesting puede reflejar algunos problemas de la estrategia hasta cierto punto.
A continuación explicaremos brevemente el sistema de backtesting en la plataforma FMZ desde la perspectiva de los diferentes lenguajes de estrategia soportados por FMZ. (En artículos anteriores se mencionaron algunas introducciones al sistema de backtesting)
-
JavaScript
La prueba retrospectiva del lado del navegador utiliza los recursos de hardware locales.
-
Python
Al realizar pruebas retrospectivas en un custodio, puede elegir a qué custodio asignar (ya sea su propio custodio o el custodio público de la plataforma FMZ). Dada la gran carga de los custodios públicos en la plataforma FMZ, se recomienda utilizar el custodio local para realizar pruebas retrospectivas (esto también será más rápido). Al realizar pruebas retrospectivas con el custodio público, cuando hay demasiadas tareas que exceden la carga, algunas tareas de prueba retrospectiva se cancelará, lo que provocará una interrupción de la medición de backtesting).
-
C++
A diferencia de los lenguajes de script, las políticas de C++ deben compilarse antes de poder ejecutarse. La estrategia del lenguaje C++ se compilará primero en la plataforma FMZ (servidor) (si hay un problema con el código, la compilación puede fallar y aparecerá un mensaje de error). Después de la compilación, realice una prueba retrospectiva en la plataforma FMZ (servidor).
-
Lenguaje Mai
La implementación subyacente es JavaScript y también se realizan pruebas retrospectivas en el lado del navegador.
-
Visualización
La implementación subyacente es JavaScript y también se realizan pruebas retrospectivas en el lado del navegador.
El sistema de backtesting de la Plataforma de Trading Cuantitativo Inventor tiene dos modos de backtesting (este no distingue entre lenguajes de estrategia, este es la configuración del backtesting y el backtesting de la estrategia en varios lenguajes es el mismo).
Para obtener instrucciones sobre el sistema de backtesting, consulte la información en el tutorial de la plataforma:
-
- Pruebas retrospectivas a nivel de simulación
En pocas palabras, el backtesting a nivel de simulación consiste en simular y generar datos de precios para cada nodo de tiempo basándose en datos de la línea K.
K线中一根柱子不是有高开低收么,构成了一个价格框架,在这个K线代表的时间范围内,价格都在这个价格框架内,所以只要生成的价格在这个K线高开低收框架范围内,这个模拟出来的价格就是合理的。Tal como la simulación en la figura:

Por supuesto, cuando el sistema de backtesting real implementa esta simulación, la situación es un poco más complicada que la que se muestra en la figura. No profundizaremos en ello aquí. Es suficiente entender el mecanismo de backtesting a nivel de simulación.
Conociendo este principio, debemos prestar atención a las desventajas del backtesting a nivel de simulación, aunque el backtesting a nivel de simulación es muy rápido (porque los precios generados por la simulación no son los precios reales publicados uno por uno segundo a segundo). Pero si la estrategia encajaTendencia de cambio de tick simuladaEsto hará que la estrategia funcione muy bien (pero en situaciones reales el precio puede no moverse de esta manera, aunque el precio esté dentro del marco de esta columna de la línea K).
La línea K utilizada para generar datos de ticks simulados se denomina línea K subyacente, y el período de esta línea K se denominaCiclo de la línea K inferior, configúrelo como se muestra en la página de configuración de políticas:
La configuración de 1 minuto aquí significa que los datos de la línea K con un período de 1 minuto se utilizan como fuente de datos para generar ticks simulados.Otro punto es que para las estrategias de alta frecuencia, obviamente no es apropiado utilizar pruebas retrospectivas a nivel de simulación. Sin embargo, para las estrategias de tendencia, el uso de pruebas retrospectivas a nivel de simulación aún puede reflejar el desempeño de la estrategia hasta cierto punto.
- Pruebas retrospectivas a nivel de simulación
-
- Backtesting en tiempo real
Habiendo hablado del backtesting a nivel de simulación, hablemos del backtesting a nivel de tiempo real. En pocas palabras, el backtesting en tiempo real significa publicar datos de precios reales segundo a segundo durante el backtesting. Deje que la estrategia retroceda el precio cada segundo en el mercado. En este modo de backtesting, se pueden probar algunas estrategias con alta frecuencia de negociación y se puede obtener un cierto grado de valor de referencia.
La desventaja es que la cantidad de datos de backtesting en tiempo real es demasiado grande para realizar pruebas retrospectivas en un período de tiempo más amplio (generalmente, menos de un día). Puedes cerrarDatos de ticks, reducir el nivel de datos de profundidad (datos de transacciones, los datos de profundidad del mercado también tienen una instantánea segundo a segundo en la prueba retrospectiva en tiempo real, por lo que la cantidad de datos de prueba retrospectiva en tiempo real es enorme), para aumentar adecuadamente el rango de prueba retrospectiva, como se muestra en la figura:
- Backtesting en tiempo real
¿De dónde provienen los datos para el sistema de backtesting de Inventor Quantitative Trading Platform? El sistema de backtesting utiliza los datos del centro de datos de la plataforma FMZ de forma predeterminada. El centro de datos de la plataforma FMZ recopila automáticamente los datos de mercado de cada moneda de cada bolsa y los proporciona al sistema de backtesting de la plataforma.
-
- Utilizar los datos del centro de datos FMZ de forma predeterminada
Mencionado en artículos anteriores: https://www.fmz.com/bbs-topic/6857#量化交易% E5%B9% B3%E5%8F%B0
Los datos de backtesting proporcionados por la plataforma solo admiten pares comerciales limitados (los datos de backtesting para todo el mercado y todas las monedas son una cantidad astronómica, y no es realista recopilarlos todos. La plataforma recopila datos de mercado de las principales bolsas y monedas principales) .
- Utilizar los datos del centro de datos FMZ de forma predeterminada
-
- Utilice datos de fuentes de datos personalizadas
Puede utilizar las opciones de la página de backtesting para configurar una fuente de datos personalizada. En pocas palabras, si tiene datos de un determinado exchange, puede proporcionárselos al sistema de backtesting de la plataforma FMZ para que los realice de acuerdo con los requisitos de formato de FMZ. plataforma.
También hay algunas instrucciones en la documentación de la API de FMZ sobre fuentes de datos personalizadas:
https://www.fmz.com/api#自定义数据源También hay algunas soluciones en la biblioteca FMZ:

Los novatos que estén interesados pueden estudiarlo y consultarlo.
- Utilice datos de fuentes de datos personalizadas
Aprende, prueba, piensa
El trading programático y cuantitativo son inseparablesestudiar、prueba、pensar。
No se puede pensar en los problemas en el vacío, eso sería ineficiente. La forma más eficaz de resolver los problemas y pensar en ellos esEncuentre información,EntoncesPruébelo usted mismo、Análisis del pensamientoSi el problema no se resuelve, repita los pasos anteriores.
Pero por lo general, cuando un novato se encuentra con un problema, siente:
"Oh~ La programación, la cuantificación y la redacción de estrategias son demasiado difíciles".
"Lo he estado mirando durante mucho tiempo, ¡pero todavía estoy confundido!"
“¡Aún no he empezado y quiero rendirme!”
....
En realidad, es muy sencillo comenzar a utilizar la plataforma FMZ. En primer lugar, es necesario saber buscar información. Hay mucha información disponible para referencia en la Estrategia Plaza, la Comunidad y la Biblioteca de la Plataforma de Comercio Cuantitativo de Inventor.
Luego está la habilidad práctica. El uso del sistema de backtesting y de herramientas de depuración puede facilitar las pruebas. Esto no significa probar una estrategia completa. De hecho, si no tienes ningún conocimiento básico, incluso puedes aprender los conceptos básicos de programación en JavaScript en el sistema de backtesting cuantitativo FMZ.
Este es el sitio web tutorial donde a menudo aprendo JS: https://www.runoob.com/js/js-loop-for.html No se limita a JS, aquí se pueden buscar y aprender todo tipo de conocimientos de TI.
Por ejemplo, no sé cómo utilizar la expresión regular de JS, ¿qué debo hacer?
Por supuesto, primero verifique la información y luego pruébelo.
Vi un ejemplo como este:

Quiero probarlo, e incluso puedo usar el sistema de backtesting de la plataforma FMZ para probar y aprender.
Configurar un intercambio de forma aleatoria en el sistema de backtest

Pruebe el siguiente código:
function IsEmail(str) {
var reg=/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/;
return reg.test(str);
}
function main() {
var strEmailAddress1 = "13512345678"
Log(strEmailAddress1, " 是邮件地址么 ? ", " 回答:", IsEmail(strEmailAddress1))
var strEmailAddress2 = "[email protected]"
Log(strEmailAddress2, " 是邮件地址么 ? ", " 回答:", IsEmail(strEmailAddress2))
}
¡Mira qué gran herramienta de aprendizaje!
Por ejemplo, quiero aprender a escribir lógica de bucle en JavaScript, así que intentémoslo:
Recorrer los elementos de una variable de matriz en el orden en que aparecen en la matriz:
function main() {
var arr = [{coinName: "BTC", price: 10000}, {coinName: "LTC", price: 100}, {coinName: "ETH", price: 2000}, {coinName: "ETC", price: 500}]
for (var i = 0 ; i < arr.length ; i++) {
Log(arr[i])
}
}
¿Te sientes motivado a estudiar al instante?
De hecho, en FMZ, puedes ver el tutorial de JavaScript mientras aprendes los conceptos básicos de JavaScript en el sistema de backtesting. La sintaxis de JavaScript está casi dominada. Para pasar a la siguiente etapa, es necesario utilizar la interfaz de intercambio para obtener datos para realizar pruebas. También se puede utilizar la plataforma FMZHerramientas de depuraciónRealizar pruebas de interfaz reales.
Luego hay que pensar más, sacar conclusiones de un ejemplo, probar y verificar, comparar y analizar, etc. De esta manera podrás empezar muy rápidamente.
- 1



















