Estrategia combinada de doble cruce de media móvil e indicador Williams

El autor:¿ Qué pasa?, Fecha: 2024-02-01 15:04:51
Las etiquetas:

img

Resumen general

Esta estrategia combina dos estrategias diferentes. La primera estrategia genera señales basadas en el doble cruce promedio móvil de los precios de las acciones. La segunda estrategia se basa en el Awesome Oscillator de los Indicadores Williams. La señal final toma la intersección de las dos señales de estrategia para formar la señal de negociación final.

Estrategia lógica

La primera estrategia genera una señal de compra cuando el cierre de ayer es más alto que el cierre del día anterior y el Oscilador Estocástico rápido de 9 días es más bajo que la línea D lenta del Oscilador Estocástico de 3 días.

La segunda estrategia calcula la diferencia entre las fluctuaciones de precios de 5 días y 34 días y calcula promedios móviles de esa diferencia. Cuando el valor actual está por encima del período anterior, es una señal de compra. Cuando el valor actual está por debajo del período anterior, es una señal de venta.

Las dos señales de estrategia se combinan tomando su intersección. Una posición larga se toma cuando ambas estrategias dan una señal de compra. Una posición corta se toma cuando ambas estrategias dan una señal de venta.

Análisis de ventajas

Esta estrategia combina las ventajas de la doble estrategia de cruce de promedios móviles y la estrategia del Indicador Williams. La doble estrategia de cruce de promedios móviles puede capturar tendencias a medio y largo plazo. La estrategia del Indicador Williams puede capturar oportunidades comerciales a corto plazo. La combinación de las dos estrategias permite tanto obtener ganancias como prevenir falsos breakouts.

Además, el uso de múltiples parámetros de entrada permite la optimización para diferentes existencias y condiciones de mercado, lo que hace que la estrategia sea adaptable a una gama más amplia de entornos de mercado.

Análisis de riesgos

El mayor riesgo es que las señales de las dos estrategias pueden no ser consistentes. Cuando una estrategia genera una señal de compra mientras que la otra genera una señal de venta, la estrategia combinada no puede producir una señal significativa, potencialmente perdiendo oportunidades comerciales.

Además, los múltiples parámetros plantean alguna dificultad para la optimización.

Para reducir los riesgos, se puede utilizar exclusivamente cualquiera de las dos señales de estrategia y se pueden investigar intervalos de parámetros adecuados para diferentes condiciones de mercado.

Oportunidades de mejora

La estrategia puede mejorarse en varios aspectos:

  1. Evaluar la consistencia de la señal entre las dos estrategias bajo diferentes combinaciones de parámetros para encontrar los parámetros óptimos para la coincidencia de la señal.

  2. Prueba el rendimiento en diferentes productos, marcos de tiempo para encontrar el mejor ámbito de aplicación.

  3. Considere sustituir el cruce de la media móvil dual por otros indicadores técnicos como KDJ para diversificar la combinación de estrategias.

  4. Incorporar mecanismos de detención de pérdidas para controlar los riesgos, por ejemplo, fijar los límites máximos de detención de extracción.

Conclusión

Esta estrategia combina la doble estrategia de cruce de promedios móviles y la estrategia del Indicador Williams para capturar tanto el seguimiento de tendencias como las señales a corto plazo. A través de la optimización de parámetros, puede adaptarse a una amplia gama de condiciones de mercado. Sin embargo, la coincidencia inconsistente de señales y la optimización de parámetros complejos siguen siendo sus desafíos. En general, proporciona un enfoque efectivo para el comercio cuantitativo y vale la pena investigar y optimizar para reducir riesgos y mejorar la robustez.


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

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 20/06/2019
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
//    This indicator plots the oscillator as a histogram where blue denotes 
//    periods suited for buying and red . for selling. If the current value 
//    of AO (Awesome Oscillator) is above previous, the period is considered 
//    suited for buying and the period is marked blue. If the AO value is not 
//    above previous, the period is considered suited for selling and the 
//    indicator marks it as red.
//  You can make changes in the property for set calculating strategy MA, EMA, WMA
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

BillWilliamsAC(nLengthSlow, nLengthFast,nLengthMA, nLengthEMA, nLengthWMA, bShowWMA, bShowMA, bShowEMA) =>
    pos = 0
    xSMA1_hl2 = sma(hl2, nLengthFast)
    xSMA2_hl2 = sma(hl2, nLengthSlow)
    xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
    xSMA_hl2 = sma(xSMA1_SMA2, nLengthFast)
    nRes =  xSMA1_SMA2 - xSMA_hl2
    xResWMA = wma(nRes, nLengthWMA)
    xResMA = sma(nRes, nLengthMA)
    xResEMA = ema(nRes, nLengthEMA)
    xSignalSeries = iff(bShowWMA, xResWMA,
                     iff(bShowMA, xResMA, 
                      iff(bShowEMA, xResEMA, na)))
    cClr = nRes > nRes[1] ? blue : red
    pos := iff(xSignalSeries[2] < 0 and xSignalSeries[1] > 0, 1,
	         iff(xSignalSeries[2] > 0 and xSignalSeries[1] < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Bill Williams. Awesome Oscillator (AC) with Signal Line", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
nLengthSlow = input(34, minval=1, title="Length Slow")
nLengthFast = input(5, minval=1, title="Length Fast")
nLengthMA = input(15, minval=1, title="MA")
nLengthEMA = input(15, minval=1, title="EMA")
nLengthWMA = input(15, minval=1, title="WMA")
bShowWMA = input(type=bool, defval=true, title="Show and trading WMA")
bShowMA = input(type=bool, defval=false, title="Show and trading MA")
bShowEMA = input(type=bool, defval=false, title="Show and trading EMA")
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posBillWilliamsAC = BillWilliamsAC(nLengthSlow, nLengthFast,nLengthMA, nLengthEMA, nLengthWMA, bShowWMA, bShowMA, bShowEMA)
pos = iff(posReversal123 == 1 and posBillWilliamsAC == 1 , 1,
	   iff(posReversal123 == -1 and posBillWilliamsAC == -1, -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)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? red: possig == 1 ? green : blue )

Más.