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.
La estrategia calcula primero el cambio de impulso de los preciosmomm
, luego lo separa en impulso positivom1
y impulso negativom2
A continuación, se suma el impulso positivo y negativo durante un período de reflexión ensm1
ysm2
Por último, el oscilador de momento de ChandechandeMO
El 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.
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.
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}}