Estrategia de negociación del oscilador de la OCM

El autor:¿ Qué pasa?, Fecha: 19 de septiembre de 2023 21:16:26
Las etiquetas:

Resumen general

Esta estrategia utiliza el oscilador de momento de Chande (CMO) para determinar los niveles de sobrecompra y sobreventa para las señales de negociación.

Estrategia lógica

La lógica clave incluye:

  1. Cálculo de los valores absolutos de las OCM durante 3 períodos diferentes
  2. Tomando la media de los valores absolutos de OCM de tres períodos
  3. En caso de que el valor medio exceda el umbral superior
  4. Ventajas en el mercado cuando el valor medio cae por debajo del umbral inferior
  5. Posiciones de cierre cuando la OCM vuelva al rango normal

La OCM refleja el impulso de los cambios de precios. Los valores absolutos altos representan la divergencia de precios que entran en zonas de sobrecompra / sobreventa. La estrategia utiliza esta característica de la OCM, utilizando un promedio de varios períodos para suavizar la curva para identificar los extremos.

Ventajas

  • Utiliza la OCM para identificar las regiones sobrecompradas/sobrevendidas
  • La media de varios períodos suaviza la curva y evita señales falsas
  • Bases teóricas sólidas para la detección de sobrecompra/sobreventa
  • Los límites de parámetros personalizables para adaptar
  • Implementación simple de la reversión de la media

Riesgos y mitigaciones

  • Posibilidad de señales falsas de OCM
  • Requiere una optimización continua del umbral
  • Los extremos sostenidos durante las tendencias pueden causar pérdidas

Mitigantes:

  1. Añadir un filtro de tendencia para evitar operaciones contrarias a la tendencia
  2. Optimización de parámetros para una mejor sensibilidad de la OCM
  3. Uso de paradas para limitar las pérdidas

Oportunidades de mejora

La estrategia puede reforzarse mediante:

  1. Confirmación del volumen para evitar errores
  2. Incorporación de paradas de seguimiento para una mejor gestión del riesgo
  3. Optimización automática de parámetros mediante aprendizaje automático
  4. Tamaño de las posiciones basado en la volatilidad
  5. Combinar con otras estrategias para diversificar y mejorar los rendimientos

Conclusión

Esta estrategia utiliza CMO para identificar sobrecompra/sobreventa para la negociación de reversión media. El promedio de varios períodos ayuda a evitar señales falsas.


/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-14 07:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////7////////////
//  Copyright by HPotter v1.0 21/02/2017
//    This indicator plots the absolute value of CMO averaged over three 
//    different lengths. This indicator plots a classical-looking oscillator, 
//    which is really an averaged value based on three different periods.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="CMOabsav", shorttitle="CMOabsav")
Length1 = input(5, minval=1)
Length2 = input(10, minval=1)
Length3 = input(20, minval=1)
TopBand = input(58, minval=1)
LowBand = input(5, minval=0)
reverse = input(false, title="Trade reverse")
hline(0, color=green, linestyle=hline.style_dashed)
hline(TopBand, color=purple, linestyle=hline.style_solid)
hline(LowBand, color=red, linestyle=hline.style_solid)
xMom = close - close[1]
xMomabs = abs(close - close[1])
nSum1 = sum(xMom, Length1)
nSumAbs1 = sum(xMomabs, Length1)
nSum2 = sum(xMom, Length2)
nSumAbs2 = sum(xMomabs, Length2)
nSum3 = sum(xMom, Length3)
nSumAbs3 = sum(xMomabs, Length3)
nRes = abs(100 * (nSum1 / nSumAbs1 + nSum2 / nSumAbs2 + nSum3 / nSumAbs3 ) / 3)
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="CMOabsav")

Más.