Comercio cuantitativo de criptomonedas para principiantes - acercándote a la criptomoneda cuantitativa (3)

El autor:- ¿ Por qué?, Creado: 2022-07-29 09:37:22, Actualizado: 2023-09-21 21:03:55

img

Comercio cuantitativo de criptomonedas para principiantes - acercándote a la criptomoneda cuantitativa (3)

Mensaje de error

En los artículos anteriores, hemos aprendido que el llamado comercio programático y cuantitativo es un programa de guión basado en los datos obtenidos del intercambio a través de una serie de cálculos, juicios y disparadores para realizar algunas operaciones y operar la cuenta de intercambio para operar. Estas acciones de adquisición de datos y operaciones de cuentas se llevan a cabo a través de la interfaz API del intercambio. En pocas palabras, el programa de guión interactúa con el intercambio.

Por supuesto, hay todo tipo de mensajes de errores y mensajes de error en los sistemas de comercio programáticos y cuantitativos en el mercado, o en los programas desarrollados por nosotros mismos. Estos mensajes de error no se limitan a los mensajes de error reportados por la interfaz de API de intercambio. También hay errores de excepción de tiempo de ejecución del programa, errores de configuración, errores de gramática del programa y así sucesivamente.

Los mensajes de error en la plataforma de negociación cuantitativa FMZ también se dividen aproximadamente en varias categorías:

  • Error gramatical de la estrategia Este tipo de error es el más común, porque el principiante no está familiarizado con la programación, y hay errores gramaticales en la escritura de código durante la fase de aprendizaje y prueba.

    img

    El código ha perdido caracteres como paréntesis. Tales errores generalmente se pueden ver en la página de edición de la estrategia, y la estrategia no se puede ejecutar (un error se informará directamente en tiempo de ejecución, como se muestra en la figura a continuación).

    imgAsí que después de escribir la estrategia, echa un vistazo habitual a la página de edición de la estrategia de la plataforma para ver si hay un XX rojo, si es así, debe haber un error obvio.

  • Excepciones del programa de tiempo de ejecución causadas por el programa de estrategia BUG Hay un error en el programa. Cuando el programa se está ejecutando, activar una excepción hará que el programa se detenga anormalmente y muestre esos mensajes de error.

    img

    img

    Tales errores harán que el programa sea anormal y el programa dejará de ejecutarse.

  • Errores causados por configuración y configuración incorrectas

    En la plataforma FMZ, el par de operaciones está definido uniformemente en el formato deX_Y, donde X representa el nombre de la moneda de negociación y Y representa el nombre de la moneda denominada (la moneda denominada del par de contratos de negociación de futuros basados en divisas se expresa generalmente en USD, como se describe en los artículos anteriores), tales como:BTC_USDT, si escribo el par de negociación al azar, escribirlo comoBTC-USDT.

    img

    Se ha reportado un error en el sistema de backtesting de la plataforma FMZ:

    img

    Además, un error que los principiantes a menudo encuentran:

    img

    Este tipo de error se debe a la modificación de la contraseña en la cuenta de la plataforma FMZ, lo que resulta en la invalidación de laAPI KEYen el objeto de intercambio configurado (la KEY API del usuario se configura en la plataforma FMZ después de ser cifrada en el navegador), y la estrategia no puede iniciarse, por lo que se informa un error.

  • Se reporta un error en la llamada de interfaz

    En los artículos anteriores, aprendimos que las interfaces en la plataforma FMZ se dividen en:Interfaces que generan solicitudes de redyInterfaces que no generan solicitudes de redEl error de interfaz no hará que el programa de estrategia se detenga, generalmente debido a las excepciones de llamada de interfaz y se devuelven los datos incorrectos, la estrategia no hace tolerancia a fallas, y el error de excepción de programa causado por los datos incorrectos hace que el programa se detenga (el concepto de tolerancia a fallas mencionado en artículos anteriores).

    Aquí hay varios mensajes de error de interfaz que generan solicitudes de red:

    • Tiempo de espera de la red

      Uno de los mensajes de error frecuentes que encuentran los principiantes es el uso de equipos de red domésticos (su propia computadora o servidor doméstico).

    • Error de HTTP 429

      Uno de los mensajes de error clásicos es que la interfaz de intercambio se llama con demasiada frecuencia, excediendo el límite de frecuencia del intercambio (mencionado en artículos anteriores). Algunos principiantes pueden decir que me gustaría solicitarAPI KEYPara obtener más intercambios o solicitar más cuentas de intercambio. Necesitamos saber que la frecuencia de los límites de acceso a la interfaz por los intercambios generalmente se basa en direcciones IP. En pocas palabras, siempre y cuando todas las solicitudes enviadas a una dirección IP se cuenten en esta dirección IP, el servidor de intercambio negará el acceso si la solicitud excede el límite.

    • Notificación de errores en el funcionamiento de la interfaz de intercambio

      El tiempo de espera y el 429 mencionados anteriormente son errores de red. Si hay un problema en el negocio de la interfaz de intercambio, también se reportará un error. Por ejemplo, si quiero obtener el precio del mercado al contado, pero configuro un par comercial no existente. 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 reales de bot de llamadas de funciones y adquisición de datos.

      img

      Como 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 real 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 (como se ve aquí"err-msg":"invalid symbol")). Por ejemplo, hay muchos errores relacionados con el negocio, como establecer apalancamiento cuando algunos intercambios no admiten valores de apalancamiento con partes decimales, en este momento, si el valor de apalancamiento tiene una parte decimal, 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 generan solicitudes de red, por ejemplo:

      img

      Sin embargo, si el parámetro se pasa incorrectamente o se garabatea, se informará de un error.

      img

    Pero independientemente del tipo de error, el mensaje de error que se muestra es la información clave para encontrar el problema, y el problema generalmente se puede ver desde el mensaje de error."err-msg":"invalid symbol"En el ejemplo anterior, la traducción es: err msg: símbolo no válido . Probablemente se sepa que el par de operaciones está establecido incorrectamente, porque los símbolos en inglés se utilizan generalmente para representar el código de operaciones y el par de operaciones. Para problemas comunes, hay un post que continuará siendo recogido para consulta:https://www.fmz.com/bbs-topic/9158

Sistema de pruebas de retroceso

El sistema de backtesting también es el foco de una herramienta cuantitativa. El sistema de backtesting puede probar prototipos de estrategia convenientemente, posibles errores y problemas lógicos en la estrategia de prueba preliminar.

La siguiente es una breve descripción del sistema de backtesting en la plataforma FMZ desde el nivel de los diferentes lenguajes de estrategia compatibles con FMZ. (Algunas introducciones del sistema de backtesting se mencionaron en los artículos anteriores)

  • JavaScript también

    Las pruebas de retroceso en el navegador utilizan recursos de hardware nativos.

  • Python

    Cuando se realiza backtesting en un docker, se puede elegir a qué docker asignar (ya sea el docker desplegado por usted mismo, o el docker público en la plataforma FMZ). En vista de la gran carga de custodios públicos en la plataforma FMZ, se recomienda utilizar el docker local para backtesting (esto también será rápido, cuando el docker público está backtesting, si las tareas exceden la carga, algunas tareas de backtesting se cancelarán, lo que resultará en interrupción de backtesting).

  • C++

    A diferencia de los lenguajes de script, 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 el código, la compilación puede no pasar, y un mensaje de error aparecerá directamente).

  • Mi Lenguaje

    La implementación subyacente es JavaScript, y el backtesting también se realiza en el navegador.

  • Visualización

    La implementación subyacente es JavaScript, y el backtesting también se realiza en el navegador.

El sistema de backtesting en la plataforma de negociación FMZ Quant está dividido en dos modos de backtesting (esto es independientemente del lenguaje de estrategia, esta es la configuración de backtesting, y la estrategia de backtesting en todos los idiomas son los mismos).

img

    1. Pruebas de retroceso a nivel de simulación En términos simples, el backtesting de nivel de simulación se refiere a los datos de precios de cada nodo de tiempo que se simula y genera de acuerdo con los datos de la línea K.
    A bar in the K-line opens high and closes low, which constitutes a price framework, within which the prices are all in this price frame, so as long as the generated price opens high and closes low in this K-line frame within the range, the simulated price is reasonable.
    

    Es como una simulación así:https://www.fmz.comimgPor supuesto, cuando el sistema de backtesting real implementa esta simulación, la situación es ligeramente más complicada que la que se muestra en la figura. Conociendo este principio, es importante tener en cuenta los inconvenientes 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 precios reales segundo a segundo liberados uno por uno).Tendencia de movimiento de garrapatas simulada, la estrategia funcionará muy bien (pero en realidad, el precio puede no ser esta tendencia, aunque el precio está dentro del marco de esta 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 esta línea K se llamael período de la línea K inferior, que se establece como se muestra en la página de configuración de la estrategia:

    imgEl ajuste 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 el tick simulado.

    Otro punto es que para las estrategias de alta frecuencia, obviamente no es apropiado utilizar backtesting a nivel de simulación. Sin embargo, para las estrategias de tendencia, el uso de backtesting a nivel de simulación aún puede reflejar el rendimiento de la estrategia hasta cierto punto.

    1. Prueba de retroceso a nivel de bot real Después de hablar de backtesting a nivel de simulación, hablemos de backtesting a nivel de bot real. En pocas palabras, backtesting a nivel de bot real es la liberación real de datos de precios cada segundo durante el backtesting. Permite a la estrategia rastrear el precio por segundo del mercado. Este modo de backtesting le permite backtestar estrategias con alta frecuencia comercial y obtener un cierto grado de valor de referencia. La desventaja es que la cantidad de datos de backtesting a nivel de bot real es demasiado grande para ser backtested en un gran intervalo de tiempo (el tiempo es generalmente menos de 1 día).datos divididos(los datos de transacción tick-by-tick, y los datos de profundidad del mercado también tienen instantáneas segundo por segundo en el backtesting real del bot, por lo que la cantidad de datos de backtesting real del bot es enorme) para aumentar el rango de backtesting apropiadamente, como se muestra en la figura:

    img

¿Dónde está la fuente de datos del sistema de backtesting de la plataforma de comercio cuántico FMZ? El sistema de backtesting utiliza los datos del centro de datos de la plataforma FMZ por defecto.

    1. Utilice datos del centro de datos FMZ por defecto Como se mencionó en artículos anteriores:https://www.fmz.com/bbs-topic/9536Los datos de backtesting proporcionados por la plataforma solo admiten un número limitado de pares comerciales (los datos de backtesting de todo el mercado y todas las monedas son una cifra astronómica, y no es realista recopilarlos todos.
    1. Utilice datos de origen de datos personalizados Puede usar las opciones de la página de backtesting para configurar un origen de datos personalizado.

    img

    También hay algunas notas sobre fuentes de datos personalizadas en la documentación de la API de FMZ:https://www.fmz.com/api#custom-data-source

Aprender, probar, pensar

No se puede hacer comercio programático y cuantitativo sinaprendizaje, pruebas, yPensamiento¿ Qué pasa? El pensamiento sobre los problemas no puede ser un pensamiento en vano, es ineficiente.encontrar informaciónEntonces...Pruébalo., pensar y analizar, si el problema no se resuelve, repita las acciones anteriores.

Pero cuando un principiante se encuentra con problemas, él o ella se sentirá:

Ups~ es demasiado difícil de programar, cuantificar y escribir estrategias. ¡Después de verlo durante mucho tiempo, todavía estoy aturdido! ¡Quiero rendirme antes de comenzar! - ¿ Qué?

Empezar en la plataforma FMZ es muy simple en realidad. En primer lugar, debe ser bueno en la búsqueda de información. Hay mucha información disponible en la plaza de estrategia, la comunidad y la biblioteca de la Plataforma de Comercio Cuántico FMZ.

img

La segunda es la habilidad práctica, que se puede probar fácilmente usando el sistema de backtesting y las herramientas de depuración. Esto no significa probar una estrategia completa. De hecho, incluso puedes aprender los conceptos básicos de los programas JavaScript en el sistema de backtesting FMZ Quant si eres completamente básico.

Este es el sitio web de tutoriales donde a menudo aprendo JS:https://www.runoob.com/js/js-loop-for.html, no se limita a JS, todo tipo de conocimiento de TI se puede consultar y aprender aquí. Por ejemplo, no sé cómo usar las expresiones regulares de JS, ¿qué debo hacer? Por supuesto, buscar la información primero, y luego tratar de hacerlo ~

Vi un ejemplo de esto:imgQuiero probarlo, y puedo usar el sistema de backtesting de la plataforma FMZ para probar y aprender.

Configurar un intercambio aleatorio en el sistema de backtestingimg

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 an email address? ", " Answer: ", IsEmail(strEmailAddress1))
    
    var strEmailAddress2 = "123456789@qq.com"
    Log(strEmailAddress2, " Is it an email address? ", " Answer: ", IsEmail(strEmailAddress2))
}

img

¡Mira qué herramienta de aprendizaje! Por ejemplo, quiero aprender a escribir la lógica del bucle del lenguaje JavaScript, y probarlo:

Loop a través de 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])
    }
}

img

¿Te sientes motivado para aprender en un instante? De hecho, en FMZ, puedes aprender los conceptos básicos de JavaScript en el sistema de backtesting mientras ves el tutorial de JavaScript. La gramática de JavaScript está casi dominada, y al entrar en la siguiente etapa, necesitas usar la interfaz de intercambio para obtener pruebas de datos.herramienta de depuraciónde la plataforma FMZ para llevar a cabo pruebas reales de interfaz.

Luego es pensar más, extraer inferencias de un caso, verificación de pruebas, análisis comparativo, etc. Esto hace que el aprendizaje comience muy rápido.


Relacionados

Más.