Descripción del mecanismo de prueba de retroceso FMZ

El autor:No lo sé., Creado: 2022-03-23 10:06:22, Actualizado: 2022-03-28 13:42:35

La mayoría de las estrategias requieren backtests para su verificación antes de que se realicen en bots. FMZ admite el spot, futuros y contratos perpetuos de algunas criptomonedas, así como todas las variedades de futuros de productos básicos. Sin embargo, el mecanismo de backtest de la plataforma FMZ Quant es diferente del backtest onbar común, que ha causado confusión para muchos principiantes.

¿Cómo funciona un sistema de backtest?

img

El tiempo desde el inicio de la prueba hasta el final del tiempo se puede considerar como un eje de tiempo. Durante la prueba posterior, el punto de tiempo de la prueba posterior se mueve de izquierda a derecha a lo largo del eje para comenzar la prueba posterior. En un momento dado, solo se pueden obtener los datos del historial antes de este punto de tiempo. Sobre la base de los datos del historial, la estrategia realiza compras y ventas, y finalmente forma la ganancia y pérdida. Por supuesto, teniendo en cuenta que cuanto más densos sean los puntos de tiempo de backtest, más tiempo se requiere, el sistema de backtest real debe elegir entre precisión y eficiencia.

El sistema tradicional de prueba de retroceso de onBar

El mecanismo de backtest onbar se basa en líneas K, es decir, cada línea K genera un punto de tiempo de backtest. En el punto de tiempo, puede obtener la información, como los precios más altos, más bajos, abiertos y cerrados actuales de la línea K, el volumen de operaciones, etc., así como la información de la línea K anterior a este punto de tiempo.

La desventaja de este mecanismo es obvia: en una línea K, solo se puede generar una operación, y el precio generalmente se basa en el precio de cierre de la línea K. Una línea K solo puede obtener cuatro precios, a saber, los precios de apertura, cierre, más alto y más bajo, pero no puede obtener la información, como los cambios de precio en una línea K, y si el precio más bajo ocurre primero o el precio más alto primero. Tome la línea K de 1 hora como ejemplo. La información del mercado debe obtenerse cada pocos segundos en el bot, y la orden de negociación también se emitirá en el bot en lugar de esperar a que termine la línea K. La ventaja del mecanismo de backtest onbar es que es fácil de entender y la velocidad de backtest es extremadamente rápida.

Sistema de prueba de retroceso FMZ Quant onTick

img

La imagen anterior muestra la interfaz de configuración de pruebas de retroceso de FMZ. El modo de pruebas de retroceso se divide en dos tipos, a saber, el nivel de simulación y el nivel real del mercado, que se presentarán por separado a continuación:

¿Qué es una garrapata?

A diferencia de los datos de la línea K, el tick es el precio en un momento específico. De acuerdo con los datos de la línea K, en realidad solo sabemos cuándo ocurrió el precio de apertura y el precio de cierre. No está claro cuándo el precio alcanza el valor más alto en el período de la línea K. De hecho, los datos de la línea K también se generan en función del tick. De acuerdo con los datos de la línea K, también es posible simular los cambios de un tick específico en un período de la línea K. Aunque no es un tick real, puede hacer que nuestra prueba posterior sea más precisa.

Prueba posterior del nivel de simulación

Para la prueba de retroceso de nivel de simulación, debe seleccionar el período de la línea K y el período de la línea K de la capa inferior utilizado para la prueba de retroceso. Por ejemplo, si la estrategia utiliza la prueba de retroceso de la línea horaria y la línea K de la capa inferior está establecida en 5 minutos, entonces el intervalo de puntos de tiempo de prueba de retroceso se basará en el tick simulado por la línea K de 5 minutos, que se refleja en los cambios continuos del precio de cierre de la línea K en la última hora.https://www.fmz.com/bbs-topic/662

img
Usamos una estrategia simple para demostrar este mecanismo; el código de estrategia:

function main() {
  while(true){
      var records = exchange.GetRecords() //GetRecords can fill the parameters, and obtain K-lines of different periods 
      var ticker = exchange.GetTicker()
      Log('K-line close price: ', records[records.length-1].Close, 'ticker Buy1 Sell1 prices: ', ticker.Buy, ticker.Sell)
      //js backtest does not use Sleep, and it will skip to the next tick; Python needs 1 hour of sleep time 
  }
}

Resultado de la prueba:img

Solo se fijan los ticks abiertos y cerrados de cada línea K, y los 12 ticks simulados se agregan en el medio, de modo que una línea K formará 14 puntos de tiempo de prueba posterior. Si se realiza una prueba posterior durante un día con el período de línea K de la capa inferior de 5 minutos, se generarán un total de 24 × 12 × 14 = 4032 puntos de tiempo, mientras que la prueba posterior tradicional onBar solo tiene 24, por lo que la precisión mejora enormemente. Las operaciones de posición abierta y cerrada también se pueden completar dentro de un período de línea K. Aunque se simulan los ticks generados intermedios, eso no afecta mucho. En la prueba posterior, siempre que el precio del pedido sea mayor que el precio de compra, y el precio del pedido de venta sea menor que el precio de compra, se realizará la prueba posterior.

Prueba de retroceso del nivel real del mercado

El backtest de nivel de mercado real utiliza el tick real, y el intervalo más corto entre cada punto de tiempo es de solo 1s. Este tipo de backtest es preciso para el cambio por segundo, pero debido a la gran cantidad de datos, la velocidad de backtest es lenta y el tiempo de backtest no puede ser demasiado largo.

img

Diferencias entre Backtest y Bot

Incluso el backtest a nivel de mercado real y el trading de bots reales todavía tienen deficiencias obvias de datos, como la incapacidad de obtener operaciones del historial de operaciones, la incapacidad de obtener cambios reales de profundidad, retrasos reales de la red, etc. Aun así, el sistema de backtest actual de FMZ es relativamente completo, y hay muchas funciones pequeñas, como simular errores de red, que se pueden usar para probar la tolerancia a fallos de las estrategias, simular retrasos de la red y dibujar iconos de mercado.

Preguntas frecuentes

¿Por qué sólo unos pocos pares de operaciones y plataformas son compatibles con backtest?

En la actualidad, solo existen datos de unos pocos pares comerciales comunes. De hecho, la relación entre la estrategia y la variedad no es muy estrecha, por lo que es suficiente verificar la estrategia.

¿Puede simular BitMEX para cobrar la tasa de financiación?

Claro, puedes elegir BitMEX backtest para abrir el registro.img

¿Dónde se hace el backtest?

El backtest de las estrategias de JavaScript se realiza en el navegador, mientras que Python puede elegir el servidor FMZ o su propio docker para operar el backtest.

¿Se pueden descargar los registros de las pruebas?

Hay un botón de descarga en la esquina derecha de los registros.

¿Se puede realizar la prueba de retroceso localmente?

FMZ abre el motor de pruebas de Python.https://www.fmz.com/bbs-topic/1687


Más.