En los artículos anteriores, hemos aprendido que el llamado comercio programado y cuantitativo es un programa de script basado en los datos obtenidos de las plataformas, después de una serie de cálculos, juicios y disparadores para realizar algunas operaciones y operar las cuentas de la plataforma para operar. Estas acciones de adquisición de datos y operaciones de cuentas se llevan a cabo a través de las interfaces API de la plataforma. En pocas palabras, los programas de script interactúan con las plataformas. Dado que es interacción, debe haber interacción normal e interacción anormal. Cuando ocurre una interacción anormal, una interfaz devuelve la información de excepción.
Por supuesto, los sistemas de negociación programados y cuantitativos en el mercado o programas desarrollados por uno mismo tendrán varios mensajes y mensajes de error. Estos mensajes de error no se limitan a los mensajes de error reportados por las API de la plataforma. También hay otros errores, como: error de excepción del programa durante la operación, error de configuración, error de sintaxis del programa y así sucesivamente.
En la plataforma de negociación de FMZ Quant, los mensajes de error se pueden dividir aproximadamente en varias categorías:
Error de sintaxis de la estrategia Este tipo de error es el error más común, que generalmente es causado por la situación de que los principiantes no están familiarizados con la programación, y el código que escriben durante el estudio tiene errores de sintaxis.
El código fue escrito sin caracteres como paréntesis. Para este tipo de error, el mensaje de error generalmente se puede ver en la página de edición de la estrategia, y bajo la circunstancia, la estrategia no puede ejecutarse (una vez que se ejecuta la estrategia, se reportará un error, como se muestra en la imagen).
Por lo tanto, puede hacer un hábito de echar un vistazo a la página de edición de la estrategia después de terminar de escribir el código, para ver si hay una pequeña cruz roja; si hay uno, que significa que definitivamente hay un error obvio.
Excepción del programa durante el funcionamiento causada por el programa de estrategia BUG Si un programa tiene errores durante su operación, el disparador de la excepción hará que el programa se detenga anormalmente, y este tipo de mensajes de error se mostrarán.
Este tipo de errores pueden causar la excepción del programa, y detener el programa de ejecución.
Error causado por configuración y configuración incorrectas
En la plataforma FMZ, todos los pares de negociación se definen en la forma deX_Y
, en el que BTC_USDT
; supongamos que lo escribo mal, lo escribo enBTC-USDT
.
Notificación de errores en el sistema de backtest en la plataforma FMZ:
Informe de errores en un bot:
O, el error más común que los principiantes a menudo encuentran:
Este tipo de error es causado por la invalidación de laAPI KEY
en el objeto de intercambio configurado después de la modificación de la contraseña de una cuenta FMZ (las claves API de los usuarios están todas cifradas por el extremo del navegador y configuradas en la plataforma FMZ). Eso hará que una estrategia no pueda comenzar, lo que causará un error reportado.
Error causado por la interfaz de llamada
En los artículos anteriores hemos estudiado y aprendido que las interfaces en la plataforma FMZ se dividen en:Interfaces que hacen solicitudes de redyInterfaces que no hacen solicitudes de red. El error de interfaz no hará que el programa de estrategia se detenga directamente. Por lo general, debido a la excepción de llamada de interfaz, se devuelven los datos incorrectos, y la estrategia no hace la tolerancia a fallas. Luego, el error de excepción de programa causado por los datos incorrectos hace que el programa se detenga (el concepto de tolerancia a fallas ya se introdujo en los artículos anteriores).
Aquí enumero varios mensajes de error de las interfaces que hacen solicitudes de red:
Tiempo de espera de la red
Uno de los mensajes de error que a menudo encuentran los principiantes es causado por el uso de un dispositivo de red doméstica (PC o servidores domésticos).
Error de HTTP 429
Es uno de los mensajes de error clásicos; la razón es que una interfaz de plataforma se llama con demasiada frecuencia, superando el límite de frecuencia de la plataforma. (mencionado en los artículos anteriores). Algunos estudiantes nuevos pueden decir que el error no se plantearía si solicitan claves API de varias plataformas más o varias cuentas de plataforma más. Necesitamos saber que el límite de frecuencia de acceso a las interfaces por plataformas generalmente se basa en direcciones IP. En pocas palabras, siempre y cuando todas las solicitudes enviadas desde una dirección IP se cuenten en la dirección, el servidor de la plataforma negará el acceso a la IP, si el número de solicitudes excede el límite.
Error del servicio de interfaz de plataforma
El tiempo de espera y los errores 429 mencionados anteriormente son errores en la capa de red. Si hay un problema en la capa del servicio de interfaz de la plataforma, también se reportará un error. Por ejemplo, quiero obtener las cotizaciones del mercado al contado, pero configuro un par de operaciones no existente. Lo pruebo 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 la prueba real de bot de llamadas de funciones y adquisición de datos.
El resultado de la ejecución de la herramienta de depuración; no hay diferencia entre la ejecución de la herramienta de depuración y la ejecución del bot.
Huobi error 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 operaciones es inválido (ver aquí:"err-msg":"invalid symbol"
) y de la Comisión).
Por ejemplo, hay muchos errores relacionados con el servicio. Por ejemplo, al establecer apalancamiento, algunas plataformas no admiten valores de apalancamiento con decimales. Si un valor de apalancamiento tiene decimales, también causará un error en la llamada de la interfaz.
Enumere una llamada de interfaz que no genere una solicitud de red:
Código del contrato de futuros establecidos Algunas interfaces solo establecen algunas variables globales en el sistema y no realizan solicitudes de red. Por ejemplo:
Sin embargo, si los parámetros se pasan o se escriben incorrectamente, también se reportarán errores.
No importa qué tipo de error sea, el mensaje de error que se muestra es la información clave para encontrar el problema, es decir, puede distinguir el problema del mensaje de error. Puede usar una herramienta de traducción para traducir la información de error en el idioma que puede leer, para extraer las palabras clave."err-msg":"invalid symbol"
Probablemente usted puede saber que el error es causado por la configuración incorrecta del par de negociación, para el símbolo
El sistema de backtest también es el punto clave de una herramienta cuantitativa. El sistema de backtest puede probar fácilmente el prototipo de una estrategia, y inicialmente comprobar los posibles errores y problemas lógicos en la estrategia, pero el sistema de backtest necesita ser visto racionalmente.
La siguiente es una breve descripción del sistema de backtest en la plataforma FMZ desde el nivel de los diferentes lenguajes de estrategia soportados por FMZ. (Algunas introducciones del sistema de backtest se mencionaron en los artículos anteriores.)
JavaScript también
La prueba de retroceso se realiza en el navegador, y utiliza los recursos de hardware locales.
Python
En el backtest en un docker, puede elegir a qué docker asignar (ya sea el docker desplegado por usted mismo, o el docker público de la plataforma FMZ). En vista de la gran carga del docker público en la plataforma FMZ, se recomienda usar el backtest del docker local (Eso también será más rápido. En el backtest del docker público, cuando está sobrecargado, algunas tareas de backtest se cancelarán, con el resultado de la interrupción del backtest).
C++
A diferencia de los lenguajes de scripting, las estrategias de lenguaje C++ necesitan ser compiladas y luego ejecutadas. La estrategia de lenguaje C++ se compilará primero en la plataforma FMZ (servidor) (si hay un problema con la escritura del código, la compilación puede no pasar, y un mensaje de error será solicitado directamente).
El tamaño de la lengua
La capa subyacente es implementada por JavaScript, y la backtest también se realiza en el navegador.
Visualización
La capa inferior está implementada por JavaScript, y el backtest también se realiza en el navegador
El sistema de backtest de la plataforma de comercio de FMZ Quant tiene dos modos de backtest (sin importar en qué idioma esté escrita una estrategia, el modo de backtest es un ajuste del sistema de backtest, y las opciones de ajuste son las mismas para todos los idiomas compatibles en FMZ).
Para la instrucción del sistema de backtest, puede consultar la parte relacionada del tutorial de escritura de estrategias en la plataforma FMZ:
There are the highest, the lowest, open and close prices in one bar, which forms a price structure. Within the time range represented by the K-line, the prices are all in the price structure. Therefore, as long as the generated price is within the K-line structure of the four prices, the simulated price is reasonable.
Al igual que la simulación que se muestra en la siguiente imagen:
Claro, es un poco más complicado que lo que se muestra en la imagen para realizar la simulación en el sistema de backtest, que no se discutirá más aquí. Después de conocer el principio, es necesario prestar atención a los inconvenientes de la prueba de retroceso de nivel de simulación. Aunque la prueba de retroceso de nivel de simulación es muy rápida (porque los precios generados por la simulación no son precios reales segundo a segundo liberados sucesivamente). Sin embargo, si la estrategia coincide con elTendencia de cambio de la tick simulada, la estrategia funcionará excelentemente (pero en realidad, el precio puede no cambiar con la tendencia, aunque el precio esté dentro de la estructura de la barra de la línea K). La línea K utilizada para generar los datos de tick simulados aquí se llama la línea K inferior, y el período de la línea K se llamael período de la línea K inferior, que aparece en la página de configuración de la estrategia como la siguiente imagen:
Aquí establezco 1 minuto, lo que significa usar los datos de la línea K con un período de 1 minuto como fuente de datos para generar los datos de tick simulados.
Hay un punto más que, para una estrategia de alta frecuencia, la prueba de retroceso a nivel de simulación obviamente no es apropiada, pero, para una estrategia de tendencia, la prueba de retroceso a nivel de simulación puede, en cierta medida, mostrar el rendimiento de la estrategia.
¿Dónde está la fuente de datos del sistema de backtest de FMZ Quant? El sistema de backtest utiliza los datos del panel de control en la plataforma de FMZ por defecto. El panel de control de FMZ recopila automáticamente los datos del mercado de cada moneda en cada plataforma y los proporciona al sistema de backtest de la plataforma.
También hay algunas instrucciones sobre el origen de datos personalizados en la documentación de la API de FMZ:La información de los datos de los Estados miembros sobre las actividades de los Estados miembros en el ámbito de la protección del medio ambiente y la protección de la salud pública se incluye en el anexo II.
También hay algunos esquemas en el Digest en la plataforma FMZ. Los principiantes, que estén interesados en eso, pueden consultar esos esquemas y estudiarlos.
No se puede hacer un comercio programado y cuantitativo sinestudiando, pruebasyPensamiento¿ Qué pasa? Es ineficiente pensar en preguntas desde la nada.búsqueda de informaciónEntonces...Prueba por ti mismo., yPiensa y analizaSi el problema no se resuelve, repita las acciones anteriores.
Pero, por lo general, cuando los principiantes encuentran problemas, se sentirán:
¡Oh, escribir estrategias programadas y cuantitativas es muy difícil! ¡Todavía estoy confundido, incluso yo lo he estado estudiando por un tiempo! ¡Sólo quiero rendirme antes de empezar! - ¿ Qué?
Comenzar con la plataforma FMZ es en realidad muy fácil y simple. En primer lugar, debe ser bueno en la búsqueda de información. Hay mucha información en
Luego, está la capacidad operativa; usando el sistema de backtest y la herramienta de depuración puede hacer fácilmente una prueba. Esto no significa probar una estrategia completa. De hecho, si tienes completamente cero conceptos básicos, incluso puedes aprender los conceptos básicos de los programas JavaScript directamente en el sistema de backtest de FMZ Quant.
Este es el sitio web de tutoriales donde a menudo estudio JS:https://www.runoob.com/js/js-loop-for.html; el sitio web no se limita a JS, y todos los tipos de conocimientos de TI se pueden consultar y aprender aquí. Por ejemplo, no sé cómo usar la expresión regular de JS, ¿qué debo hacer? Por supuesto, busque la información primero, y luego pruebe!
Vi un ejemplo como este:Si quiero probarlo, puedo usar el sistema de backtest de FMZ para probarlo para su estudio.
Coloca una plataforma al azar en el sistema de pruebas.
Prueba 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, " Is it the email address? ", " Answer:", IsEmail(strEmailAddress1))
var strEmailAddress2 = "123456789@qq.com"
Log(strEmailAddress2, " Is it the email address? ", " Answer:", IsEmail(strEmailAddress2))
}
¡Qué maravillosa herramienta para estudiar! Por ejemplo, si quiero aprender a escribir la lógica del bucle del lenguaje JavaScript, y luego probarlo:
De acuerdo con la secuencia de una matriz, imprima cada elemento de una variable de matriz en un bucle:
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])
}
}
¿Se siente motivado a aprender inmediatamente? De hecho, en FMZ, puedes aprender completamente los conceptos básicos de JavaScript probando operaciones en el sistema de backtest mientras ves los tutoriales de JavaScript. Después de que la sintaxis de JavaScript esté casi dominada, puedes entrar en la siguiente etapa, para usar realmente la interfaz de la plataforma para obtener datos y probar. También puedes usar elherramienta de depuraciónen FMZ para llevar a cabo pruebas de interfaz reales. Luego, necesitas pensar más, extraer inferencias de un caso, con pruebas, verificación y análisis comparativo, etc. Eso hace que aprender y comenzar sea muy rápido.