Análisis de datos de secuencias de tiempo y retrospección de datos de Tick

El autor:La bondad, Creado: 2019-08-08 10:05:45, Actualizado: 2023-10-20 20:11:54

img

Datos de la secuencia de tiempo

Una secuencia de tiempo es una serie de datos obtenidos en intervalos de tiempo consecutivos y iguales. En inversiones cuantitativas, estos datos se presentan principalmente como movimientos de precios y puntos de datos en los que se sigue la indicación de la inversión. Por ejemplo, el precio de las acciones, los datos de la secuencia de tiempo que se registran periódicamente en un período de tiempo determinado.

img

Como se puede ver, las fechas están en el eje x y los precios en el eje y. En este caso, el intervalo de tiempo consecutivo de las cuentas significa que el número de días en el eje x está separado por 14 días: note la diferencia entre el 7 de marzo de 2005 y el siguiente punto, el 31 de marzo de 2005, el 5 de abril de 2005 y el 19 de abril de 2005.

Sin embargo, cuando usas datos de la serie de tiempo, lo que a menudo ves es algo más que este tipo de datos que contiene solo dos columnas de fecha y precio. En la mayoría de los casos, usarás datos que contienen cinco columnas: ciclo de datos, precio de apertura, precio máximo, precio mínimo y precio de cierre. Esto significa que si tu ciclo de datos está configurado para el nivel de línea diurna, los cambios en los precios altos, abiertos, bajos y cerrados del día se reflejarán en los datos de esta serie de tiempo.

¿Qué es la información de Tick?

Los datos de tick son la estructura de datos de transacción más completa de los intercambios. También es una forma extendida de los datos de la secuencia de tiempo mencionados anteriormente, que incluyen: precio de apertura, precio máximo, precio mínimo, precio más reciente, volumen de transacción, volumen de transacción. Si se compara los datos de transacción con un río, los datos de tick son los datos de este río en una intersección transversal.

img

Como se muestra en el gráfico anterior, cada movimiento en los intercambios de divisas nacionales se empuja al mercado en tiempo real; mientras que en los intercambios nacionales, se inspecciona dos veces por segundo y, si hay movimientos en ese período de tiempo, se genera un snapshot y se empuja. En comparación, la cantidad de datos que se empujan solo se puede considerar como OnTime, no como OnTick.

Todos los códigos y datos de secuencias de tiempo de este tutorial se obtienen en la plataforma de cuantificación de los inventores.

Datos de Tick cuantificados por el inventor

A pesar de que los datos de Tick domésticos no son Tick en sentido literal, se pueden utilizar para hacer retrospecciones que se acercan al menos al infinito y reducen la realidad. Cada Tick muestra los parámetros principales del producto en el mercado en ese momento, y en el disco real nuestro código, que sigue la teoría de Tick 2 veces por segundo en el cálculo.

img

No solo eso, sino que en la cuantificación de los inventores, incluso si se cargan datos de ciclos de una hora, todavía se puede ajustar la granularidad de los datos, por ejemplo, ajustar la granularidad de los datos a 1 minuto. En este momento, la línea K de 1 hora se compone de datos de 1 minuto. Por supuesto, cuanto menor sea la granularidad, mayor será la precisión.

img

Ahora, usted ha aprendido los conceptos básicos que necesita para completar este tutorial. Estos conceptos volverán pronto, y usted aprenderá más conceptos relacionados en la parte posterior de este tutorial.

Los amigos interesados en conocer el contenido de esta sección pueden dirigirse a:https://www.fmz.com/bbs-topic/1651Para más información:

Establecer el entorno de trabajo

Para hacer las cosas bien, lo primero que debemos hacer es implementar un administrador antes de que los inventores cuantifiquen la plataforma. Los lectores con experiencia en programación pueden imaginar el concepto de administrador como un sistema Docker envuelto oficialmente, que incluye la interfaz API pública de los principales intercambios y los detalles técnicos para la redacción y revisión de estrategias.

  • Desarrollo del sistema de administradores de la plataforma de inventores cuantificados

Hay dos formas de implementar administradores.

El método A: los usuarios alquilan o compran sus propios servidores y los implementan en las principales plataformas de computación en la nube, como AWS, Ali Cloud, Digital Ocean y Google Cloud. La ventaja es que tanto la seguridad estratégica como la seguridad del sistema están garantizadas.

Para más información sobre este artículo, el lector puede consultar:https://www.fmz.com/bbs-topic/2848

Método B: Despliegue de servidores públicos utilizando la plataforma cuantificada de los inventores, la plataforma ofrece tres lugares de despliegue en Hong Kong, Londres y Hangzhou, donde los usuarios pueden implementar el principio de proximidad en función de la ubicación de la bolsa en la que desean operar. Las ventajas en este sentido son simples y fáciles de completar con un solo botón, especialmente adecuadas para los usuarios principiantes, que no necesitan saber muchas cosas al comprar un servidor Linux.

img

Para que los principiantes lo entiendan, este artículo utilizará el método B.

En concreto, las acciones son:登陆FMZ.COMEn la página de administradores, haga clic en Control Center, Administrador y en el botón Administrador de alquiler.

Ingresando el código, el despliegue fue exitoso, como se muestra en el siguiente gráfico:

img

  • El concepto de sistema robótico y la relación entre administradores

Como se mencionó anteriormente, el administrador es como un sistema docker, un sistema docker es como un conjunto de estándares, y cuando implementamos este conjunto de estándares, lo siguiente que necesitamos es generar un par de ejemplos para este estándar, que es un robot.

Crear un robot es muy sencillo, después de implementar un buen administrador, haga clic en el menú de bots a la izquierda, haga clic en crear un robot, complete un nombre en el nombre de la etiqueta y seleccione el administrador que acaba de implementar. La opción de parámetros en el cuadro de diálogo inferior y el ciclo de la línea K pueden seleccionarse según las circunstancias, principalmente para seleccionar la estrategia de negociación.

img

En este punto, nuestro entorno de trabajo está construido y, como se puede ver, es muy simple y eficaz, cada función tiene su función. A continuación, vamos a comenzar a escribir estrategias cuantitativas.

Utilice Python para implementar una estrategia de línea media simple

Hemos mencionado los conceptos de datos de secuencias de tiempo y datos de ticks anteriormente, y luego vinculamos los dos conceptos con una sencilla estrategia de línea recta.

  • Principios básicos de la estrategia uniforme

Aplicándolos a la misma gráfica K, cuando una línea recta recorre una línea recta recorrida por una línea recorrida por una línea recorrida por una línea recorrida por una línea recorrida por una línea recorrida por una línea recorrida por una línea recorrida por una línea recorrida por una línea recorrida por una línea recorrida por una línea recorrida por una línea recorrida por una línea recorrida.

La base de la apertura de la bolsa es que el trozo de oro se abre más de una sola vez, el trozo muerto se abre con una sola vez, y la misma teoría de la posición plana.

让我们打开FMZ.COMEn la esquina superior izquierda, seleccione Python. A continuación se muestra el código de la estrategia, con una nota muy detallada en cada línea, para que los lectores lo entiendan lentamente. Esta estrategia no es una estrategia de disco real, nunca experimente con dinero real.

import types # 导入Types模块库,这是为了应对代码中将要用到的各种数据类型

def main(): # 主函数,策略逻辑从这里开始
    STATE_IDLE = -1 # 标记持仓状态变量
    state = STATE_IDLE # 标记当前持仓状态
    initAccount = ext.GetAccount() #这里用到了现货数字货币交易类库(python版),编写策略时记得勾选上,作用是获得账户初始信息
    while True: # 进入循环
        if state == STATE_IDLE : # 这里开始开仓逻辑
            n = ext.Cross(FastPeriod,SlowPeriod) # 这里用到了指标交叉函数,详情请查看https://www.fmz.com/strategy/21104
            if abs(n) >= EnterPeriod : # 如果n大于等于入市观察期,这里的入市观察期是为了防止一开盘就胡乱开仓。
                opAmount = _N(initAccount.Stocks * PositionRatio,3) # 开仓量,关于_N的用法,请查看官方API文档
                Dict = ext.Buy(opAmount) if n > 0 else ext.Sell(opAmount) # 建立一个变量,用于存储开仓状态,并执行开仓操作
                if Dict :  # 查看dict变量的情况,为下面的日志输出做准备
                    opAmount = Dict['amount']
                    state = PD_LONG if n > 0 else PD_SHORT # PD_LONG和PD_SHORT均为全局常量,分别用来表示多头和空头仓位。
                    Log("开仓详情",Dict,"交叉周期",n) # 日志信息
        else: # 这里开始平仓逻辑
            n = ext.Cross(ExitFastPeriod,ExitSlowPeriod) # 指标交叉函数,
            if abs(n) >= ExitPeriod and ((state == PD_LONG and n < 0) or (state == PD_SHORT and n > 0)) : # 如果经过了离市观察期且当前账户状态为持仓状态,进而判断金叉或者死叉
                nowAccount = ext.GetAccount() # 再次刷新和获取账户信息
                Dict2 = ext.Sell(nowAccount.Stocks - initAccount.Stocks) if state == PD_LONG else ext.Buy(initAccount.Stocks - nowAccount.Stocks) # 平仓逻辑,是多头就平多头,是空头就平空头。
                state = STATE_IDLE # 标记平仓后持仓状态。
                nowAccount = ext.GetAccount() # 再次刷新和获取账户信息
                LogProfit(nowAccount.Balance - initAccount.Balance,'钱:',nowAccount.Balance,'币:',nowAccount.Stocks,'平仓详情:',Dict2,'交叉周期:',n) # 日志信息
        Sleep(Interval * 1000) # 循环暂停一秒,防止API访问频率过快导致账户被限制。

  • Reevaluación de la estrategia uniforme

En la página de edición de estrategias, hemos terminado de redactar la estrategia, y a continuación vamos a hacer un repaso de la estrategia para ver cómo se desempeña en la industria histórica. El repaso juega un papel importante en el desarrollo de cualquier estrategia cuantitativa, pero también solo puede ser una referencia importante.

Al hacer clic en la revisión de la analogía, se puede ver que hay muchos parámetros que se pueden ajustar, que se pueden modificar directamente en el interior, para que las políticas posteriores sean cada vez más complejas y con más parámetros.

img

Las opciones de optimización en la parte posterior optimizan automáticamente los parámetros establecidos, y el sistema prueba con una variedad de parámetros óptimos para ayudar a los desarrolladores de políticas a encontrar la mejor opción.

A partir de los ejemplos anteriores, podemos ver que la base de la transacción de cuantificación es el análisis de los datos de la secuencia de tiempo, y la interacción de la revisión de los datos de ticks, y la lógica compleja, no se puede separar de estos dos elementos básicos. Las diferencias son sólo de dimensión. Por ejemplo, las transacciones de alta frecuencia requieren una intersección de datos más detallada y datos de secuencia de tiempo más ricos.


Relacionados

Más.