Estrategia de ruptura de la media móvil de un solo punto

El autor:¿ Qué pasa?, Fecha: 2024-02-02 11:19:19
Las etiquetas:

img

Resumen general

La estrategia de ruptura de promedio móvil de punto único es una estrategia de negociación cuantitativa basada en el oscilador de momento de Chande. Detecta cuando el mercado está en una fase de consolidación mediante el cálculo de los cambios de momento del precio. Cuando la línea de momento de Chande cruza por encima de la línea de compra o cae por debajo de la línea de venta, las operaciones largas o cortas se ejecutarán en consecuencia.

Estrategia lógica

La estrategia calcula primero el cambio de impulso de los preciosmomm, luego lo separa en impulso positivom1y impulso negativom2A continuación, se suma el impulso positivo y negativo durante un período de reflexión ensm1ysm2Por último, el oscilador de momento de ChandechandeMOEl indicador oscila alrededor de la línea cero. Las lecturas por encima de cero indican un mayor impulso ascendente, mientras que las lecturas por debajo de cero indican un mayor impulso descendente.

Cuando la línea de impulso de Chande cruza por encima de la línea de compra desde los niveles más bajos, indica que el precio está saliendo de una tendencia bajista y listo para comenzar una tendencia alcista.

Análisis de ventajas

  • La estrategia es capaz de identificar los puntos de inflexión de la tendencia bajista a la consolidación a la tendencia alcista, lo que permite entradas a precios bajos y salidas a precios altos.
  • El Oscilador de Momentum de Chande considera tanto la magnitud como la tasa de cambios de precios, lo que lo hace muy efectivo para la detección de tendencias.
  • La lógica de la estrategia es simple y fácil de implementar.

Análisis de riesgos

  • El oscilador de momento de Chande es sensible a los parámetros de entrada.
  • Las configuraciones estáticas de líneas de compra y venta también pueden introducir señales falsas excesivas.
  • La falta de stop loss significa que las operaciones perdedoras pueden acumular grandes pérdidas.

Algunas formas de mejorar incluyen el uso de líneas dinámicas de compra / venta, filtrar señales con otros indicadores e implementar stop loss para controlar los riesgos.

Direcciones de optimización

  • Prueba diferentes configuraciones de parámetros para encontrar valores óptimos
  • Adoptar líneas dinámicas de compra y venta
  • Añadir filtros adicionales con otros indicadores
  • Incorporar una lógica de stop loss para reducir las pérdidas

Conclusión

La estrategia de ruptura de promedio móvil de punto único identifica los puntos de inflexión de tendencia desde la tendencia bajista a la consolidación hasta la tendencia alcista utilizando el Oscilador de Momentum de Chande, lo que permite la negociación de compras bajas y ventas altas. A pesar de ser simple e intuitiva, las mejoras en el ajuste de parámetros, el filtrado de señales y el control de riesgos pueden mejorar aún más el rendimiento.


/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

//* Backtesting Period Selector | Component *//
//* https://www.tradingview.com/script/eCC1cvxQ-Backtesting-Period-Selector-Component *//
//* https://www.tradingview.com/u/pbergden/ *//
//* Modifications made *//
testStartYear = input(2021, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(10, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(999999, "Backtest Stop Year")
testStopMonth = input(9, "Backtest Stop Month")
testStopDay = input(26, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true
/////////////// END - Backtesting Period Selector | Component ///////////////
strategy(title="Chande Momentum Strat", shorttitle="ChandeMO Strat", format=format.price, precision=2)
length = input(9, minval=1)
src = input(close, "Price", type = input.source)
momm = change(src)
f1(m) => m >= 0.0 ? m : 0.0
f2(m) => m >= 0.0 ? 0.0 : -m
m1 = f1(momm)
m2 = f2(momm)
sm1 = sum(m1, length)
sm2 = sum(m2, length)
percent(nom, div) => 100 * nom / div
chandeMO = percent(sm1-sm2, sm1+sm2)
plot(chandeMO, "Chande MO", color=color.blue)
hline(0, color=#C0C0C0, linestyle=hline.style_dashed, title="Zero Line")
buyline= input(-80)
sellline= input(80)
hline(buyline, color=color.gray)
hline(sellline, color=color.gray)

if testPeriod()
    if crossover(chandeMO, buyline)
        strategy.entry("Long", strategy.long, alert_message="a=ABCD b=buy e=binanceus q=1.2 s=uniusd")
    //    strategy.exit(id="Long Stop Loss", stop=strategy.position_avg_price*0.8) //20% stop loss 
        
    if crossunder(chandeMO, sellline)
        strategy.entry("Short", strategy.short, alert_message="a=ABCD b=sell e=binanceus q=1.2 s=uniusd")
    //    strategy.exit(id="Short Stop Loss", stop=strategy.position_avg_price*1.2) //20% stop loss

//      remember to alert as    {{strategy.order.alert_message}}

Más.