avatar of 发明者量化-小小梦 发明者量化-小小梦
Seguir Mensajes Privados
4
Seguir
1271
Seguidores

Estrategia de flujo de orden lineal desarrollada con base en la función de reproducción de datos

Creado el: 2019-12-13 17:13:07, Actualizado el: 2024-12-15 16:04:23
comments   3
hits   2355

Estrategia de flujo de orden lineal desarrollada con base en la función de reproducción de datos

Prefacio

La gente suele decir que el trading es un arte y que el arte surge de la inspiración. Por eso hoy quiero compartir con ustedes cómo utilizar la función de reproducción de datos cuantitativos de Inventor para descubrir su propia inspiración comercial.

Inspiración comercial y sentido del mercado

Lo que habitualmente llamamos inspiración se refiere al estado creativo que las personas experimentan instantáneamente durante el proceso de pensamiento. Para los traders, el hemisferio izquierdo de nuestro cerebro completa la formulación de una serie de reglas como la redacción de estrategias, la asignación de capital y el establecimiento de parámetros. Esas inspiraciones comerciales y el sentido del mercado provienen del hemisferio derecho del cerebro.

Mucha gente ha oído el término “sensación de mercado”, que es una sensación indescriptible, como si lo que está sucediendo ahora les pareciera familiar. A la hora de operar, esta intuición similar al sexto sentido, aunque no se basa en el razonamiento y el análisis lógicos, impulsará a los operadores a tomar decisiones de compra o venta basándose en su premonición de las tendencias futuras del mercado.

Cómo conseguir inspiración

Para los forasteros, el sentido del mercado es un talento misterioso que permite ganar sin hacer ningún movimiento. Con él, se puede ganar un punto de apoyo en el mercado. De hecho, la percepción del mercado es un resumen de la experiencia subjetiva del cerebro en el trading. Es una vaga sensación predictiva que se adquiere a través de años de observación del mercado.

Aunque estrictamente hablando, la inspiración no es completamente igual al sentido del mercado, creo que después de miles de veces de experiencia en el mercado, todos tendrán una comprensión más profunda del mercado y serán expertos en desarrollar estrategias. Por lo tanto, si quieres adquirir este talento y desarrollar más estrategias comerciales, no hay otro camino que practicar hasta que tengas la oportunidad. Sólo a través de un gran número de transacciones podrás perfeccionar tu sistema de trading.

Sin embargo, los futuros y las acciones de materias primas nacionales solo se negocian unas pocas horas al día. Si mejora su experiencia en la observación del mercado a través de operaciones reales, crea su propio modelo de ganancias y reglas de negociación y entrena sus reflejos condicionados de manera subconsciente, obtendrá mejores resultados. Es difícil alcanzar el éxito. No soy capaz de hacerlo. Además de pagar un costo de tiempo más largo, la mayoría de los comerciantes también tienen que soportar el costo de la pérdida de capital. Para resolver este problema, los inventores desarrollaron cuantitativamente una función de reproducción de datos.

Cómo utilizar la repetición de datos

La función de reproducción de datos se puede entrenar sin estar restringida por los horarios de negociación de la bolsa y admite una variedad de futuros de materias primas y variedades de monedas digitales. Las condiciones del mercado se pueden reproducir de forma manual o automática, y las horas de inicio y finalización de las condiciones históricas del mercado y La velocidad de reproducción se puede configurar libremente. En comparación con otro software que comúnmente utiliza métodos de reproducción de datos de línea K, Inventor Quantitative utiliza métodos de reproducción de datos de nivel Tick, que es un entorno de backtesting que es realmente cercano al comercio real, reproduciendo los datos de precio y volumen, lo que permite a los operadores sumergirse en La experiencia.

Abra el sitio web oficial de Inventor Quantitative (fmz.com), regístrese e inicie sesión, luego haga clic en Exploración de datos en el centro de control para mostrar la página de función de reproducción de datos. Hay cuatro cuadros de opciones y un botón de selección. Primero, haga clic en el botón de selección para mostrar solo las variedades que admiten la reproducción en tiempo real. Luego, seleccione la variedad que se reproducirá en la esquina superior izquierda y luego seleccione el inicio y el final. Hora de los datos en los dos cuadros de opciones siguientes. Seleccione el período de tiempo de los datos como reproducción en tiempo real y, por último, haga clic en el botón Ir en el extremo derecho para iniciar la función de reproducción de datos.

Estrategia de flujo de orden lineal desarrollada con base en la función de reproducción de datos

Hay tres secciones bajo la etiqueta de datos. A la izquierda se encuentra el historial de transacciones, que muestra todas las órdenes ejecutadas en orden cronológico. En el medio se encuentran los datos del mercado con 20 niveles de profundidad tanto para compra como para venta. A la derecha se encuentra el área de control de reproducción de datos, donde puedes elegir métodos de reproducción de datos manuales y automáticos, tan fácil como usar un reproductor multimedia.

Estrategia de flujo de orden lineal desarrollada con base en la función de reproducción de datos

El índice de posición se puede arrastrar hacia adelante y hacia atrás para seleccionar rápidamente la hora de inicio de la reproducción de datos.

Estrategia de flujo de orden lineal desarrollada con base en la función de reproducción de datos

En la parte inferior, también puedes controlar la velocidad de reproducción de los datos moviendo el cursor hacia la derecha o hacia la izquierda. La unidad de tiempo es milisegundos. Puedes acelerar o ralentizar la reproducción de los datos.

Estrategia de flujo de orden lineal desarrollada con base en la función de reproducción de datos

Desarrollar la lógica de la estrategia

Si bien hay muchos factores que afectan las fluctuaciones de precios, entre ellos: el entorno económico global, las políticas macroeconómicas nacionales, las políticas industriales relevantes, las relaciones de oferta y demanda, los eventos internacionales, las tasas de interés y los tipos de cambio, la inflación y la deflación, la psicología del mercado, factores desconocidos, etc. , la situación final del mercado El precio anterior es el resultado de la competencia entre alcistas y bajistas. Si hay más compradores que vendedores, el precio subirá; por el contrario, si hay más vendedores que compradores, el precio bajará. Luego solo nos queda analizar el precio para elaborar una estrategia de trading.

A través de la reproducción cuantitativa del inventor del par comercial btc_usdt en Binance Exchange durante el último mes, descubrimos que cuando el mercado subía o bajaba, el volumen de órdenes de los lados largo y corto del libro de órdenes de datos Tick era obviamente asimétrico. Cuando el mercado sube bruscamente, el volumen de órdenes largas es significativamente mayor que el volumen de órdenes cortas; cuando el mercado cae bruscamente, el volumen de órdenes cortas es significativamente menor que el volumen de órdenes largas. Entonces, ¿podemos predecir el aumento y la caída de los precios en un corto período de tiempo en función del número de pedidos en la cartera de pedidos?

La respuesta es sí.

Estrategia de flujo de orden lineal desarrollada con base en la función de reproducción de datos Estrategia de flujo de orden lineal desarrollada con base en la función de reproducción de datos

Podemos recopilar datos de ticks profundos, calcular el volumen de órdenes largas y cortas y compararlos. Si el volumen combinado de órdenes largas y cortas es muy diferente, puede ser una oportunidad potencial de compra o venta. Por ejemplo, cuando el número de órdenes largas es N veces el de órdenes cortas, podemos suponer que la mayoría de las personas en el mercado son optimistas y la probabilidad de aumentos de precios en el corto plazo aumentará; cuando el número de órdenes cortas es N veces mayor que las órdenes largas, En este momento, podemos asumir que la mayoría de las personas en el mercado son bajistas y la probabilidad de una disminución de precios en el corto plazo en el futuro aumentará.

Cómo escribir una estrategia comercial

De acuerdo con la lógica de la estrategia anterior, comience a implementarla con código. Abrir en secuencia: sitio web fmz.com > Iniciar sesión > Centro de control > Biblioteca de políticas > Nueva política > Haga clic en el menú desplegable en la esquina superior derecha y seleccione el lenguaje Python para comenzar a escribir políticas. Esta estrategia es solo un punto de partida para la enseñanza, por lo que traté de que fuera lo más concisa posible. Preste atención a los comentarios en el código que aparece a continuación.

Paso 1: Redactar un marco de políticas

# 策略主函数
def onTick():
    pass


# 程序入口
def main():
    while True:  # 进入无限循环模式
        onTick()  # 执行策略主函数
        Sleep(1000)  # 休眠1秒

Cuando escribimos estrategias, debemos escribir de lo grande a lo pequeño, tal como cuando construimos una casa: primero construimos el marco y luego las paredes. En este marco, utilizamos dos funciones: la función principal y la función onTick. La función principal es el punto de entrada del programa, lo que significa que el programa se ejecutará desde aquí y luego ingresará al modo de bucle infinito, ejecutando repetidamente la función onTick. Luego solo necesitamos escribir el contenido de la estrategia en la función onTick.

Paso 2: Escribe variables globales

vol_ratio_arr = []  # 多空挂单比率数组
mp = 0  # 虚拟持仓

La razón por la que vol_ratio_arr se define como una variable global es que mi estrategia necesita recopilar la relación entre órdenes largas y cortas durante un período de datos de ticks. Si colocamos la variable vol_ratio_arr en la función onTick, obviamente no es razonable ejecutarla con la función bucle. Lo que necesitamos es que en un patrón, el valor de una variable cambie solo cuando se cumpla una determinada condición. El enfoque más razonable es poner la variable fuera del bucle.

La gestión de posiciones es muy necesaria porque está relacionada con la lógica de compra y venta. Generalmente, en el trading al contado, calculamos los pares de divisas que tenemos al abrir la cuenta. Para simplificar el código, aquí se define directamente una variable de posición virtual global para controlar la lógica de compra y venta.

Paso 3: Calcular la relación actual entre posiciones largas y cortas

depth = exchange.GetDepth()  # 获取深度数据
asks = depth['Asks']  # 获取卖价数组
bids = depth['Bids']  # 获取买价数组
asks_vol = 0  # 所有卖价挂单
bids_vol = 0  # 所有买价挂单
for index, ask in enumerate(asks):  # 遍历卖价数组
    # 线性计算所有卖价挂单
    asks_vol = asks_vol + ask['Amount'] * (20 - index)
for index, bid in enumerate(bids):  # 遍历买价数组
    # 线性计算所有买价挂单
    bids_vol = bids_vol + bid['Amount'] * (20 - index)
bidask_ratio = bids_vol / asks_vol  # 计算多空比率

Como todos sabemos, las monedas digitales suelen tener 20 niveles de profundidad de datos, por lo que podemos sumar las órdenes largas y cortas para calcular la relación entre las largas y las cortas. Cuando este valor es mayor que 1, significa que hay más personas optimistas que optimistas. bajista. , indicando que el precio subirá en el corto plazo en el futuro; cuando este valor es menor a 1, significa que el número de personas bajistas es mayor que el número de personas alcistas, lo que indica que el precio caerá en el corto plazo. a corto plazo en el futuro.

Pero hay que distinguir una cosa: cuanto más cerca esté la orden pendiente del precio de mercado, más fuerte será el sentimiento alcista o bajista. Por ejemplo, una orden de compra colocada en el primer nivel indica definitivamente un sentimiento alcista más fuerte que una orden de compra colocada en el nivel 20. Por lo tanto, al acumular órdenes pendientes, necesitamos dar diferentes pesos a las 20 órdenes de manera lineal, lo que será más razonable.

Paso 4: Calcular linealmente la relación largo-corto plazo durante un período de tiempo

global vol_ratio_arr, mp  # 引入全局变量
vol_ratio_arr.insert(0, bidask_ratio)  # 把多空比率放到全局变量数组里面
if len(vol_ratio_arr) > 20:  # 如果数组超过指定长度
    vol_ratio_arr.pop()  # 删除最旧的元素
all_ratio = 0  # 临时变量,所有多空挂单比率
all_num = 0  # 临时变量,所有线性乘数
for index, vol_ratio in enumerate(vol_ratio_arr):  # 变量全局变量数组
    num = 20 - index  # 线性乘数
    all_num = all_num + num  # 线性乘数累加
    all_ratio = all_ratio + vol_ratio * num  # 所有多空挂单比率累加
ratio = all_ratio / all_num  # 线性多空挂单比率

La relación entre posiciones largas y cortas se puede obtener dividiendo las órdenes largas acumuladas por las órdenes cortas acumuladas, pero estos son solo los datos de un tick. Puede que no sea una buena opción decidir sobre transacciones de compra y venta basándose únicamente en los datos de un tick. , porque en un mercado en constante cambio, un tick puede cambiar la tendencia del mercado. Los datos de ticks no son convincentes. Por lo tanto, necesitamos recopilar un período fijo de datos de ticks y luego usar un cálculo lineal para obtener un valor justo.

Paso 5: Realizar un pedido

last_ask_price = asks[0]['Price']  # 最新卖一价,用于买入的价格
last_bid_price = bids[0]['Price']  # 最新买一价,用于卖出的价格
if mp == 0 and ratio > buy_threshold:  # 如果当前无持币,并且比率大于指定值
    exchange.Buy(last_ask_price, 0.01)  # 买入
    mp = 1  # 设置虚拟持仓的值
if mp == 1 and ratio < sell_threshold:  # 如果当前持币,并且比率小于指定值
    exchange.Sell(last_bid_price, 0.01)  # 卖出
    mp = 0  # 重置虚拟持仓的值

Debido a que necesitamos especificar un precio al realizar un pedido, podemos usar directamente el último precio de venta al comprar y el último precio de oferta al vender. Finalmente, una vez realizada la orden y completada la transacción, restablezca el valor de la posición virtual.

Conclusión

Lo anterior es el análisis de código de la estrategia de flujo de órdenes lineal desarrollada en base a la función de reproducción de datos. Si es un principiante en el trading, la función de reproducción de datos puede ayudarlo a aprender a operar sin costo alguno y acortar el tiempo necesario para comprender el trading. Se necesitan varios años para aprender a operar en operaciones reales o simuladas. Los primeros resultados se ven. El mismo efecto se puede lograr en unas pocas semanas utilizando la función de reproducción de datos, lo que le permite aprender a operar con pérdidas mínimas sin perder tiempo. Para los traders avanzados, la revisión dinámica puede ayudarlo a analizar sus problemas pasados, verificar y mejorar las estrategias comerciales, aumentar la confianza de los traders en las estrategias y ayudar a generar nueva inspiración para las estrategias.