
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.
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.
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.
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.
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:

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) # 更新日志信息
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.

Ver resultados de backtest

Se puede ver que esta estrategia funcionó bien en el backtest de este mes.
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.
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.