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é?.
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
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.
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.
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:
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
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.
Resultados de las pruebas de retroceso:
Podemos ver que la estrategia funcionó bien en el backtest de este mes.
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.