0
Seguir
78
Seguidores

Implementación de estrategias comerciales cuantitativas para el análisis del impulso de precios utilizando Python

Creado el: 2019-08-09 15:49:06, Actualizado el: 2024-12-19 21:03:15
comments   1
hits   3524

Implementación de estrategias comerciales cuantitativas para el análisis del impulso de precios utilizando Python

Introducción a la estrategia de trading basada en el impulso del precio

La estrategia de trading de impulso analiza la comparación de fuerzas largas y cortas a través de la relación entre el precio de apertura, el precio más alto y el precio más bajo dentro de un período de tiempo determinado, y comprende indirectamente la distribución de fuerzas largas y cortas en el mercado actual. Analizar las fluctuaciones de precios para realizar un seguimiento de las tendencias de precios futuras.

El análisis del impulso de precios se utiliza ampliamente en el trading manual tradicional, especialmente para determinar tendencias unilaterales intradía. Es un tema común: ¿qué sucede con la tendencia? La mejor manera de cuantificar la tendencia es comparar la fuerza de los lados largo y corto. En términos de comparación cuantitativa, el análisis del impulso de precios es uno de los mejores indicadores.

Este artículo utilizará esta estrategia para desarrollar un programa automatizado de comercio al contado para monedas digitales en Huobi.com.

La fórmula para calcular el impulso de los precios

AR = [La suma de todos (Alto-Apertura) en N días / la suma de todos (Apertura-Bajo) en N días] * 100

Entre ellos:

  • N: La ventana estadística del período de tiempo diario, que generalmente es de 30 días de manera predeterminada, porque hay alrededor de 30 días de negociación válidos en un mes (las criptomonedas se comercializan las 24 horas del día, los 7 días de la semana, por lo que este número puede ser un poco conservador)

  • Alto: El precio más alto del día.

  • Apertura: El precio de apertura del día.

  • Bajo: El precio más bajo del día.

Cómo aprovechar el impulso de los precios

El impulso de los precios refleja la posición del precio de apertura entre el precio más alto y el precio más bajo durante un período de tiempo. Esta posición es la base para juzgar el tira y afloja entre los dos lados.

  • Suponemos que este valor ronda el 100. Si supera el 100, la fuerza alcista comienza a aumentar, y si es inferior a 100, la fuerza bajista comienza a acumularse.
  • Cuando el valor de AR aumenta, significa que el mercado está activo, la popularidad es alta y los toros avanzan rápidamente. Sin embargo, si es demasiado alto, significa que el precio ha ingresado al área de sobrecompra y debe elegir el momento adecuado para cerrar la posición. No existe un estándar específico para la altura del valor AR. En términos generales, cuando el valor AR sube a alrededor de 120, es probable que el precio baje.
  • Cuando el valor AR disminuye, significa que el mercado está en recesión, los bajistas están de buen ánimo y los alcistas deben trabajar más duro. Si es demasiado bajo, sugiere que el precio puede haber caído en la zona de sobreventa y Puede considerar esperar una oportunidad para ir a largo plazo. Generalmente, cuando el valor AR cae por debajo de 50, el precio dejará de caer y comenzará a subir.

Nota: Los números anteriores son todos valores predeterminados y de ninguna manera son ciertos. En el proceso comercial real, necesitamos ajustar este rango para adaptarnos a las condiciones actuales del mercado a medida que el mercado cambia.

Implementación de estrategias comerciales cuantitativas para el impulso de precios utilizando Python

Como de costumbre, abrimos FMZ.COM, iniciamos sesión en nuestra cuenta, hacemos clic en el centro de control y desplegamos hosts y robots.

Para obtener más información sobre cómo implementar hosts y robots, consulte mi artículo anterior: https://www.fmz.com/bbs-topic/4140

Los lectores que quieran comprar su propio servidor de implementación de computación en la nube pueden consultar este artículo: https://www.fmz.com/bbs-topic/2848

A continuación, hacemos clic en la Biblioteca de Estrategias en la columna de la izquierda y hacemos clic en Nueva Estrategia.

En la esquina superior derecha de la página de redacción de la estrategia, recuerda seleccionar Python como lenguaje de programación, como se muestra en la figura:

Implementación de estrategias comerciales cuantitativas para el análisis del impulso de precios utilizando Python

A continuación, escribimos el código Python en la página de edición de código. El código siguiente tiene comentarios muy detallados línea por línea, y los lectores pueden comprenderlo y apreciarlo lentamente. Más importante aún, aunque esta estrategia está escrita en base al comercio al contado, La escalabilidad del código siguiente también tiene en cuenta el trading de futuros. Los lectores interesados ​​pueden intentar reescribir el código siguiente para el trading de futuros. La lógica de la estrategia en sí es universal. En la Plataforma Cuantitativa Inventor, hemos preparado para usted las interfaces API de las principales bolsas al contado y de futuros, por lo que el trabajo de reescritura será muy fácil y conveniente.

Utilizaremos el spot de Bitcoin de Huobi como objetivo comercial y comenzaremos a implementar esta estrategia:

import types # 导入Types模块库,这是为了应对代码中将要用到的各种数据类型
def main(): # 主函数,策略逻辑从这里开始
    IDLE = 0 # 用来标记持仓状态,可以理解为0即为空闲状态,也就是空仓状态
    LONG = 1 # 多头持仓
    SHORT = 2 # 空头持仓,注意,此策略应用于现货市场,所以不存在空头开仓或者持仓情况,这里这样写,是为了方便理解策略和以后的扩展(如扩展到期货市场)
    state = IDLE # 标记持仓状态的变量
    while True: # 进入循环
        r = exchange.GetRecords() #GetRecords是发明者量化平台的官方API,详细用法请参见:https://www.fmz.com/api
        if len(r) <= 1: # 判断K线是否大于一根,也就是当前是否为开盘状态,否则可能会进入死循环,这里也方便读者进行扩展,大一些的K线周期趋势状态更稳定。
           Log("bar的数量不足, 等待下一根bar...") # 输出日志
           continue # Python循环控制语句,继续下边的循环内容

        # 开始进行价格动量的量化分析
        ar = sum(r.High - r.Open) / sum(r.Open - r.Low) * 100 # 计算公式

        account = _C(exchange.GetAccount) # 获取账户信息,_C同样为发明者量化平台的官方API,用法请参见:https://www.fmz.com/api

        if ar < 95 and (state == IDLE or state == SHORT) :  # AR值小于超卖线且账户拥有资金,则全仓买入
           
           if account["Balance"] > 50:
                exchange.Buy(-1, account["Balance"] * 0.9) # 市价单全仓买入
                state = LONG # 改变持仓状态为LONG
                  
        elif ar > 80 and (state == IDLE or state == LONG):  # AR值大于超买线且账户有持仓,则全仓卖出
            
           if account["Stocks"] > 0.01:
                exchange.Sell(-1, account["Stocks"] * 0.9) # 市价单全仓卖出
                state = SHORT # 改变持仓状态为SHORT
                      
        LogStatus(_D(), exchange.GetAccount() , state) # 更新日志信息

Backtesting de estrategia

Después de escribir la estrategia, lo primero que debemos hacer es realizar pruebas retrospectivas para ver cómo funciona en los datos históricos. Sin embargo, tenga en cuenta que los resultados de las pruebas retrospectivas no son iguales a las predicciones del futuro. Las pruebas retrospectivas solo se pueden utilizar como una herramienta de predicción. Consulte la información para considerar la efectividad de nuestra estrategia. Una vez que el mercado cambia y la estrategia comienza a sufrir grandes pérdidas, debemos identificar rápidamente el problema y luego cambiar la estrategia para adaptarnos al nuevo entorno del mercado. Por ejemplo, si la estrategia sufre una pérdida de más del 10%, debemos Detener la estrategia y buscar el problema, empezando por ajustar el umbral.

Haga clic en el backtest simulado en la página de edición de estrategias. En la página de backtest, los parámetros se pueden ajustar según las diferentes necesidades para una depuración rápida y conveniente. Especialmente para las estrategias con lógica compleja y muchos parámetros, no es necesario volver a la página de edición de estrategias. código fuente y modificarlos uno por uno.

Para el tiempo de prueba retrospectiva, elegimos el mes más reciente, haga clic para agregar el intercambio al contado de Huobi y el objetivo comercial de BTC.

Implementación de estrategias comerciales cuantitativas para el análisis del impulso de precios utilizando Python

Ver resultados de backtest

Implementación de estrategias comerciales cuantitativas para el análisis del impulso de precios utilizando Python

Se puede ver que esta estrategia funcionó bien en el backtest de este mes.

Ventajas y desventajas de las estrategias de impulso de precios

  • Ventajas

La ventaja del impulso de precios sobre otros indicadores técnicos tradicionales es que, en lugar de utilizar un único precio de apertura o cierre, incorpora los precios más altos y más bajos. Se comparan dinámicamente y, a través de las fluctuaciones de precios intradía, la información del mercado es más completa, la respuesta es más rápida y es más macro.

  • Desventajas

Usar el valor del impulso del precio de forma independiente para juzgar si el precio es demasiado alto o bajo, para juzgar si comprar o vender, es probable que salga demasiado pronto en una gran tendencia o compre el mínimo demasiado pronto en una gran caída del mercado. . En términos generales, esta estrategia todavía pertenece a una estrategia de efectividad de choque.

El umbral de la estrategia también debe determinarse en función de las características del objetivo de la transacción. Las fluctuaciones de precios en el mercado de divisas digitales son relativamente grandes y el volumen de transacciones es enorme, especialmente para las monedas principales como Bitcoin, que no tienen límite de precio, por lo que el umbral es más alto que el del mercado de valores tradicional y el 80 por ciento de sobreventa. La línea de sobrecompra de 170 suele ser difícil de tocar, por lo que hay menos señales de compra y la línea de sobrecompra de 170 suele estar por debajo del umbral, por lo que las señales de venta se activan con frecuencia. Esto hará que la estrategia esté en una posición vacía la mayor parte del tiempo cuando se esté ejecutando y la tasa de utilización de capital será muy baja. Desde enero de este año, Bitcoin ha estado en una tendencia alcista, con el precio aumentando desde un máximo de \(3,500 a casi \)13,000. El umbral cruzó la línea 170 muy pronto y se ha mantenido alto desde entonces. Si hubiéramos vendido según la tradicional línea de sobrecompra de 170, habríamos salido del mercado en aproximadamente 5.000 y no habría habido ninguna señal para abrir una posición después, por lo que solo obtuvimos una pequeña ganancia en un gran mercado alcista.

Por lo tanto, nunca ha existido ninguna estrategia comercial del santo grial en este mercado, una estrategia que pueda generar dinero para siempre sin realizar pruebas retrospectivas ni depurar errores. Los traders cuantitativos, al igual que los traders subjetivos, llegamos en última instancia al mismo destino. Necesitamos adaptarnos a los cambios del mercado, a las condiciones locales y responder a circunstancias en constante cambio. Cuando una estrategia no es eficaz, debemos hacer ajustes oportunos.

Los amigos que tengan preguntas pueden dejar un mensaje en https://www.fmz.com/bbs. Ya sea que se trate de estrategias o tecnología de la plataforma, la Plataforma Cuantitativa Inventor cuenta con personal profesional para responderle en cualquier momento.