Estrategia de negociación cuantitativa con análisis de impulso de precios en Python

El autor:- ¿ Por qué?, Creado: 2023-01-11 11:35:36, Actualizado: 2023-09-20 11:20:06

img

Estrategia de negociación cuantitativa con análisis de impulso de precios en Python

Introducción a la estrategia de negociación de impulso de precios

La estrategia de comercio de impulso analiza la comparación de las fuerzas de las posiciones 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 durante un cierto período de tiempo, lo que indirectamente nos permite comprender la distribución actual de las fuerzas largas y cortas en el mercado.

El análisis del momento del precio se ha utilizado ampliamente en las órdenes especulativas manuales tradicionales, especialmente para determinar la tendencia unilateral en el día. El viejo cliché, qué es aprovechar la situación. La mejor cuantificación de la situación es la cuantificación de la comparación de la fuerza entre los lados de la posición larga y corta. El análisis del momento del precio es uno de los mejores indicadores.

Este documento utilizará esta estrategia para desarrollar un programa automatizado de negociación al contado de moneda digital en el mercado de divisas.- ¿ Qué?.

Fórmula de cálculo del impulso de los precios

AR = [Suma de todos (alto abierto) durante N días / Suma de todos (bajo abierto) durante N días] * 100

Entre ellas:

  • N: La ventana estadística del ciclo de tiempo diario es generalmente de 30 días por defecto, ya que el día de negociación efectivo de un mes es de aproximadamente 30 días (transacciones de moneda digital las 24 horas del día, los 7 días de la semana, lo que puede ser conservador)

  • Alto: el precio más alto en un solo día

  • Abierto: precio de apertura de un solo día

  • Bajo: el precio más bajo en un solo día

Cómo utilizar el impulso de precios

El impulso del precio 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 la fuerza de ambas partes que se unen.

  • Supongamos que este valor es de alrededor de 100. si es mayor de 100, la fuerza de posición larga comienza a aumentar. si es menor de 100, la fuerza de posición corta comienza a acumularse.
  • Cuando el valor de AR aumenta, significa que el mercado es activo y popular, y las posiciones largas están subiendo todo el camino, pero si el precio es demasiado alto, significa que el precio ha entrado en el área de sobrecompra, y debe elegir el momento para cerrar la posición. No hay un estándar específico para la altura del valor de AR. En general, cuando el valor de AR se eleva a alrededor de 120, es probable que el precio vuelva a caer.
  • Cuando el valor de AR disminuye, indica que el mercado está disminuyendo, y la posición corta está en pleno apogeo, lo que requiere los esfuerzos de las posiciones largas. Si el valor de AR es demasiado bajo, indica que el precio puede haber caído en el área de sobreventa, y puede considerar esperar a la oportunidad de ir largo.

Nota: Los números anteriores son todos valores predeterminados y no son fórmulas de verdad. En el proceso de negociación real, debemos ajustar este rango para adaptarnos al estado actual del mercado a medida que el mercado cambia.

Implementación de una estrategia de negociación cuantitativa para el impulso de los precios en Python

Como siempre, abrimosFMZ.COM, inicie sesión en nuestra cuenta, haga clic en el panel de control, y desplegar el docker y el robot.

Por favor, consulte mi artículo anterior sobre cómo desplegar un docker y robot:https://www.fmz.com/bbs-topic/9864.

Los lectores que quieran comprar su propio servidor de computación en la nube para implementar dockers pueden consultar este artículo:https://www.fmz.com/digest-topic/5711.

A continuación, hacemos clic en la biblioteca de Estrategia en la columna izquierda y hacemos clic en Agregar estrategia.

Recuerde seleccionar el lenguaje de programación como Python en la esquina superior derecha de la página de edición de estrategias, como se muestra en la figura:

img

A continuación, escribiremos el código de Python en la página de edición de código. El siguiente código tiene comentarios muy detallados línea por línea, los lectores pueden tomarse su tiempo para entender. Más importante aún, aunque esta estrategia está escrita basada en el comercio al contado, la extensibilidad del siguiente código también tiene en cuenta el comercio de futuros. Los lectores interesados pueden intentar reescribir el siguiente código en el comercio de futuros. La lógica de la estrategia en sí es universal. En la plataforma FMZ Quant, hemos preparado las interfaces API de los principales futuros al contado y los intercambios para usted, por lo que la reescritura será muy fácil y conveniente.

Utilizaremos el punto Bitcoin de Huobi como el objetivo de negociación y comenzaremos a implementar esta estrategia:

import types # Import the Types module library, which is designed to handle the various data types that will be used in the code.
def main(): # The main function, where the strategy logic begins.
    IDLE = 0 # It is used to mark the position status, which can be understood as 0, that is, idle status, i.e. short position status.
    LONG = 1 # Long positions
    SHORT = 2 # Short position. Note that this strategy is applied to the spot market, so there is no short opening or position. This is written here to facilitate understanding of the strategy and future expansion (such as extending to the futures market).
    state = IDLE # Variables that mark the status of a position
    while True: # Enter the loop
        r = exchange.GetRecords() # GetRecords is the official API of the FMZ Quant Platform, for detailed usage please refer to: https://www.fmz.com/api.
        if len(r) <= 1: # Judge whether the K-line is larger than one, that is, whether it is currently in the open state, or it may enter an endless loop. Here, it is also convenient for readers to expand, and the trend state of a larger K-line period is more stable.
           Log("The number of bars is not enough, wait for the next bar...") # Output logs
           continue # Python loop control statement, continuing with the next part of the loop.

        # Begin quantitative analysis of price momentum
        ar = sum(r.High - r.Open) / sum(r.Open - r.Low) * 100 # Calculation formula

        account = _C(exchange.GetAccount) # Get account information, _C is also the official API of the FMZ Quant platform, for usage, please refer to: https://www.fmz.com/api.

        if ar < 95 and (state == IDLE or state == SHORT) :  # If the AR value is less than the oversold line and the account has funds, then buy all positions.
           
           if account["Balance"] > 50:
                exchange.Buy(-1, account["Balance"] * 0.9) # Buy all positions of the market order
                state = LONG # Change the position status to LONG
                  
        elif ar > 80 and (state == IDLE or state == LONG):  # If the AR value is greater than the overbought line and the account has a position, sell the whole position.
            
           if account["Stocks"] > 0.01:
                exchange.Sell(-1, account["Stocks"] * 0.9) # Sell all positions market order
                state = SHORT # Change the position status to SHORT
                      
        LogStatus(_D(), exchange.GetAccount() , state) # Update log information

Prueba posterior de la estrategia

Después de escribir la estrategia, lo primero que debemos hacer es probarla para ver cómo se comporta en los datos históricos. Pero tenga en cuenta que el resultado de la prueba de retroceso no es igual a la predicción del futuro. La prueba de retroceso solo puede usarse como referencia para considerar la efectividad de nuestra estrategia. Una vez que el mercado cambia y la estrategia comienza a tener grandes pérdidas, debemos encontrar el problema a tiempo, y luego cambiar la estrategia para adaptarnos al nuevo entorno del mercado, como el umbral mencionado anteriormente. Si la estrategia tiene una pérdida mayor al 10%, debemos detener la operación de la estrategia inmediatamente, y luego encontrar el problema. Podemos comenzar a ajustar el umbral.

Haga clic en backtest en la página de edición de la estrategia. En la página de backtest, el ajuste de parámetros se puede llevar a cabo de manera conveniente y rápida de acuerdo con diferentes necesidades. Especialmente para la estrategia con lógica compleja y muchos parámetros, no es necesario volver a la página de código fuente y modificarlo uno por uno.

El tiempo de prueba de retroceso es el último mes.

img

Resultados de las pruebas de retroceso:

img

Podemos ver que la estrategia funcionó bien en el backtest de este mes.

Ventajas y desventajas de la estrategia de impulso de precios

  • Ventajas En comparación con algunos otros indicadores técnicos tradicionales, la ventaja de la dinámica de precios es que no utiliza un único precio de apertura o precio de cierre, sino que introduce los precios más altos y más bajos. Se comparan dinámicamente, lo que hace que la información del mercado sea más completa, receptiva y macro a través de las fluctuaciones de precios intradiarios.

  • Desventajas Utilice el valor del impulso del precio de forma independiente para juzgar si el precio es demasiado alto o bajo, para juzgar largo / corto, es probable que salga temprano en una ola de tendencias importantes, o a la pesca de fondo temprano en una ola de mercado importante.

La configuración del umbral de la estrategia también debe determinarse de acuerdo con las características del objeto de negociación. La fluctuación de precios del mercado de divisas digitales es relativamente grande, y el volumen de negociación es enorme, especialmente en las monedas convencionales como Bitcoin, y no hay límite en el aumento y la caída, por lo que el valor del umbral es más alto que el del mercado de valores tradicional. La línea de sobreventa de 80 generalmente es difícil de tocar, y hay pocas señales de compra; Mientras que la línea de sobreventa de 170 a menudo está por debajo del umbral, la señal de venta se activa con frecuencia. Esto hará que la estrategia esté en posición corta la mayor parte del tiempo, y la utilización de los fondos se vuelva muy baja. Por ejemplo, desde enero de este año, el precio de Bitcoin ha aumentado de 3500 a casi 13000 en una ola de mercado alcista. El valor del umbral ha cruzado la línea de 170 desde muy temprano y no hemos sido muy altos. Si, de acuerdo con la línea de venta tradicional de 170, solo obtendremos una pequeña parte de las ganancias después de la ola

Por lo tanto, nunca ha habido una estrategia comercial del Santo Grial en el mercado. No siempre se puede obtener ganancias sin backtesting y depuración. Al igual que los operadores subjetivos, los operadores cuantitativos terminamos con el mismo objetivo de diferentes maneras. Necesitamos adaptarnos a las condiciones locales de acuerdo con los cambios del mercado y responder a los cambios del mercado. Cuando la estrategia es ineficaz, necesitamos ajustarla a tiempo.

Si tiene alguna pregunta, puede dejar un mensaje enhttps://www.fmz.com/bbs, ya se trate de la estrategia o la tecnología de la plataforma, la plataforma FMZ Quant tiene profesionales listos para responder a sus preguntas.


Relacionados

Más.