Esta estrategia genera señales de negociación mediante el cálculo del indicador MACD del indicador OBV para determinar la tendencia y los puntos de inflexión del impulso OBV. La idea central es generar señales de compra cuando el histograma OBV MACD atraviesa el eje 0 de la región negativa a la región positiva, y generar señales de venta cuando atraviesa el eje 0 de la región positiva a la región negativa.
El indicador MACD es el indicador de impulso de una acción mediante el análisis estadístico de la relación entre las direcciones cambiantes de los precios de cierre y los volúmenes de negociación durante un período de tiempo para determinar si el impulso al alza se está fortaleciendo o debilitando.
Específicamente, esta estrategia primero calcula el indicador OBV, que calcula la línea de impulso OBV analizando estadísticamente la relación entre las direcciones cambiantes de los precios de cierre y los volúmenes de negociación durante un período de tiempo. Luego, sobre la base de la línea de impulso OBV, se calcula su indicador MACD, que incluye la línea MACD, la línea de señal e histograma. Finalmente, cuando el histograma macd atraviesa el eje 0 desde la región negativa a la región positiva, se genera una señal de compra; cuando el histograma atraviesa el eje 0 desde la región positiva a la región negativa, se genera una señal de venta.
De esta manera, el MACD muestra intuitivamente las características de impulso del volumen OBV y juzga la tendencia de los cambios de volumen.
Esta estrategia combina el análisis de volumen OBV y los indicadores de impulso MACD para juicios relativamente precisos sobre los cambios de tendencia de volumen y precios, que pueden filtrar eficazmente las señales FALS.
La estrategia también presenta algunos riesgos, principalmente en los siguientes aspectos:
Para hacer frente a estos riesgos, pueden adoptarse las siguientes medidas:
La estrategia sigue teniendo posibilidades de ser optimizada, principalmente en las siguientes direcciones:
Mediante pruebas y optimización continuas, esta estrategia puede convertirse en una estrategia comercial cuantitativa estable y eficiente.
Esta estrategia es una estrategia cuantitativa típica que combina análisis de volumen e indicadores de impulso para determinar tendencias de precios y generar señales comerciales. Puede identificar claramente los puntos de inflexión de las fluctuaciones de precios, y las señales comerciales son relativamente confiables. Con ajustes de parámetros razonables, se pueden obtener buenos resultados de estrategia. Pero también tiene algunos riesgos que deben reducirse mediante optimización continua para mejorar el rendimiento. En general, esta estrategia proporciona una idea típica para las estrategias comerciales cuantitativas que vale la pena investigar y aplicar.
/*backtest start: 2023-12-17 00:00:00 end: 2024-01-16 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = "MACD of OBV", overlay = false) //////////////////////// OBV /////////////////////////// src = close obv = cum(change(src) > 0 ? volume : change(src) < 0 ? -volume : 0*volume) //////////////////////// OBV ////////////////////////// //////////////// MACD OF OBV //////////////////////////// sourcemacd = obv fastLength = input(12, minval=1), slowLength=input(26,minval=1) signalLength=input(9,minval=1) fastMA = ema(sourcemacd, fastLength) slowMA = ema(sourcemacd, slowLength) macd = fastMA - slowMA signal = ema(macd, signalLength) delta=macd-signal swap1 = delta>0?green:red plot(delta,color=swap1,style=columns,title='Histo',histbase=0,transp=20) p1 = plot(macd,color=blue,title='MACD Line') p2 = plot(signal,color=red,title='Signal') fill(p1, p2, color=blue) hline(0) /////////////////////////MACD OF OBV ////////////////////////// // Conditions longCond = na sellCond = na longCond := crossover(delta,0) sellCond := crossunder(delta,0) monthfrom =input(6) monthuntil =input(12) dayfrom=input(1) dayuntil=input(31) if ( longCond ) strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND", comment="BUY") else strategy.cancel(id="BUY") if ( sellCond ) strategy.close("BUY")