Análisis de la estrategia de arbitraje de impulso

El autor:¿ Qué pasa?, Fecha: 2023-10-25 11:10:59
Las etiquetas:

img

I. Nombre de la estrategia

Basándome en las características clave de esta estrategia, la llamo Momentum Arbitrage Strategy.

II. Resumen de la estrategia

Esta estrategia genera señales comerciales mediante el cálculo del oscilador de impulso de Chande y el establecimiento de umbrales superiores e inferiores, formando oportunidades de arbitraje para obtener ganancias.

III. Lógica de la estrategia

El código establece primero los parámetros Length, TopBand y LowBand, donde Length representa el número de días para el cálculo del impulso, y TopBand y LowBand representan los umbrales superior e inferior.

Luego calcula el impulso absoluto xMom durante los últimos días de longitud, y el promedio móvil simple de xMom durante los días de longitud, xSMA_mom.

Después de eso, calcula el momento acumulado durante los días de longitud, xMomLength.

A continuación, calcula el oscilador de momento nRes, que es igual a xMomLength dividido por xSMA_mom luego multiplicado por Length, amplificado por 100.

Basándose en la comparación entre nRes y los umbrales, determina la dirección larga o corta y la almacena en pos.

Por último, ajusta el posicionamiento basado en si el trading inverso está habilitado, genera el posicionamiento de la señal de trading y crea entradas largas/cortas.

IV. Fortalezas de la estrategia

  1. Identificar los posibles puntos de inflexión de la tendencia utilizando el indicador de impulso, beneficiando la captura de tendencias.

  2. Formar señales largas/cortas claras combinadas con filtro de umbral, evitando operaciones incorrectas.

  3. Aplicar la lógica de negociación inversa para obtener oportunidades de inversión.

  4. Gran espacio de parámetros ajustable, se puede optimizar para diferentes productos y plazos.

  5. Los parámetros visualizados son intuitivos, fáciles de entender la lógica de negociación.

V. Riesgos estratégicos

  1. Solo considere el impulso, puede perder oportunidades formadas por otros indicadores técnicos.

  2. La ruptura del impulso no representa necesariamente una reversión de tendencia, existe el riesgo de error de juicio.

  3. Aunque el comercio inverso tiene potencial de ganancias, también puede amplificar las pérdidas.

  4. La optimización inadecuada de los parámetros puede conducir a un exceso de negociación o a la falta de los mejores puntos de entrada.

  5. Necesitamos filtrar distorsiones de momento a corto plazo causadas por eventos repentinos.

Los riesgos pueden controlarse combinando otros indicadores como la tendencia y la volatilidad para confirmar la fiabilidad de la señal, ajustando los parámetros a una menor frecuencia de negociación, relajando adecuadamente el stop loss, etc.

VI. Direcciones para la optimización de la estrategia

  1. Añadir otros filtros de indicadores técnicos para mejorar la precisión de la señal.

Confirmar que el precio de cierre está por encima del sistema de promedio móvil, o la volatilidad está dentro del rango normal, antes de que se activen las señales de impulso.

  1. Optimizar los parámetros de acuerdo con las características del producto.

Para los productos más volátiles, relajar el intervalo de umbral normal para reducir la frecuencia de negociación.

  1. Optimización de marcos de tiempo múltiples basados en diferentes períodos de tiempo.

Utilice un período más corto para el comercio intradiario a muy corto plazo. Ajuste los parámetros basados en gráficos semanales o mensuales para las tendencias a mediano y largo plazo.

  1. Establezca la condición de divergencia inferior.

Para las señales de compra, requiere que el precio esté por encima del mínimo anterior para evitar señales falsas de reversión.

VII. Conclusión

La estrategia identifica principalmente las reversiones de tendencia a corto plazo a través del indicador de impulso, con filtración de parámetros para generar señales comerciales, seguimiento de tendencias de equilibrio y captura de reversión.


/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 07/02/2017
//    This indicator plots Chande Momentum Oscillator. This indicator was 
//    developed by Tushar Chande. A scientist, an inventor, and a respected 
//    trading system developer, Mr. Chande developed the CMO to capture what 
//    he calls "pure momentum". For more definitive information on the CMO and 
//    other indicators we recommend the book The New Technical Trader by Tushar 
//    Chande and Stanley Kroll.
//    The CMO is closely related to, yet unique from, other momentum oriented 
//    indicators such as Relative Strength Index, Stochastic, Rate-of-Change, 
//    etc. It is most closely related to Welles Wilder`s RSI, yet it differs 
//    in several ways:
//        - It uses data for both up days and down days in the numerator, thereby 
//          directly measuring momentum;
//        - The calculations are applied on unsmoothed data. Therefore, short-term 
//          extreme movements in price are not hidden. Once calculated, smoothing 
//          can be applied to the CMO, if desired;
//        - The scale is bounded between +100 and -100, thereby allowing you to 
//          clearly see changes in net momentum using the 0 level. The bounded scale 
//          also allows you to conveniently compare values across different securities.
////////////////////////////////////////////////////////////
strategy(title="CMO (Chande Momentum Oscillator)", shorttitle="CMO")
Length = input(9, minval=1)
TopBand = input(70, minval=1)
LowBand = input(-70, maxval=-1)
reverse = input(false, title="Trade reverse")
// hline(0, color=gray, linestyle=dashed)
// hline(TopBand, color=red, linestyle=line)
// hline(LowBand, color=green, linestyle=line)
xMom = abs(close - close[1])
xSMA_mom = sma(xMom, Length)
xMomLength = close - close[Length]
nRes = 100 * (xMomLength / (xSMA_mom * Length))
pos = iff(nRes > TopBand, 1,
	   iff(nRes <= LowBand, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
         iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue)
plot(nRes, color=blue, title="CMO")

Más.