Impulso Oscilante Estrategia de negociación de promedio móvil basada en bandas de Bollinger amortiguadas

El autor:¿ Qué pasa?, Fecha: 2024-01-05 12:27:02
Las etiquetas:

img

Resumen general

Esta estrategia construye un canal de precios basado en el indicador Bollinger Bands y el indicador Momentum Oscillating Moving Average, generando señales comerciales cuando el precio rompe el límite superior o inferior del canal.

Estrategia lógica

La estrategia construye un canal de precios utilizando la banda media de Bollinger y el Promedio Móvil Oscilante de Momento. La banda media adopta la banda media de Bollinger de 21 períodos. Las bandas superior e inferior se extienden hacia arriba y hacia abajo por un rango porcentual respectivamente. El Promedio Móvil Oscilante de Momento se extiende o se contrae cerca de los niveles de sobrecompra o sobreventa basados en la banda media. Cuando el precio rompe la banda superior, vaya largo. Cuando el precio rompe la banda inferior, vaya corto.

Específicamente, la banda media de Bollinger se calcula como:

Middle Band = Moving Average of N-period closing price

La banda superior y la banda inferior se calculan como:

Upper Band = Middle Band + WidthDev * N-period Bollinger standard deviation 
Lower Band = Middle Band - WidthDev * N-period Bollinger standard deviation

Donde WidthDev representa el rango de porcentaje ampliado hacia arriba y hacia abajo.

El promedio móvil oscilante de impulso se extiende o contrae en función de la banda media de acuerdo con ciertas reglas. Cuando el mercado se vuelve sobrecomprado o sobrevendido, se extiende más lejos de la banda media para proporcionar más oportunidades para ir largo o corto. Cuando el mercado se calma, se contrae hacia la banda media.

En resumen, esta estrategia representa un canal de precios utilizando bandas de Bollinger y determina el momento de entrada utilizando el promedio móvil oscilante de impulso, realizando el comercio de ruptura.

Análisis de ventajas

  1. Refleja la volatilidad del mercado Las bandas de Bollinger pueden reflejar la volatilidad del mercado y las tendencias cambiantes en tiempo real.

  2. Reduce las señales falsas El efecto de estiramiento de la media móvil oscilante de impulso puede reducir eficazmente las señales falsas generadas por las bandas de Bollinger.

  3. La inversión de tendencia de las capturas oportunas El cruce de las bandas superiores e inferiores de BB y el promedio móvil oscilante de impulso proporciona un momento y un precio ventajosos para generar señales comerciales, que pueden capturar eficazmente los principales ajustes alcistas y bajistas y captar oportunamente las inversiones de tendencia.

Análisis de riesgos

  1. Parámetros BB incorrectos Los ajustes incorrectos de los parámetros BB, como el período de cálculo y el multiplicador de la desviación estándar, pueden dar lugar a un espacio demasiado amplio o demasiado estrecho entre las bandas, generando señales falsas excesivas y socavando la estabilidad de la estrategia.

  2. Amplitud de oscilación excesiva La amplitud de oscilación excesivamente grande de la media móvil oscilante de momento puede resultar en que los puntos de parada de pérdida estén demasiado distantes, aumentando el riesgo de pérdida.

  3. Reversión tardía
    Cuando el mercado está oscilando o sin tendencia, las señales de negociación de BB y Momentum Oscillating Moving Average pueden retrasarse, al no reflejar los cambios de precios en el tiempo, causando un riesgo de reversión tardía.

Direcciones de optimización

  1. Optimización de los parámetros de BB Prueba diferentes períodos, multiplicadores de desviación estándar para encontrar combinaciones óptimas de parámetros que proporcionen una mejor frecuencia de señal y menos señales falsas.

  2. Optimización de los parámetros de la media móvil oscilante Prueba diferentes amplitudes y períodos de oscilación para encontrar parámetros que capten mejor las tendencias y reduzcan el retraso de la señal.

  3. Añadir condiciones de filtro Añadir filtros como volúmenes de negociación basados en señales cruzadas para excluir señales comerciales ineficientes.

  4. Combinación de estrategias Combinar esta estrategia con otras estrategias de stop loss o estrategias de aprendizaje automático para controlar aún más los riesgos y mejorar la estabilidad.

Resumen de las actividades

Esta estrategia combina los puntos fuertes de las bandas de Bollinger adaptativas y el promedio móvil oscilante de impulso, logrando una integración de la tendencia siguiendo y capturando las inversiones de tendencia. Al equilibrar la volatilidad del mercado y la flexibilidad de la señal de negociación, se logra una negociación de ruptura estable y efectiva.


/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//                               Hull Cloud v2 by SEASIDE420
strategy("Hull Moving Average Cloud v2", shorttitle="hull_cloud_v2", overlay=true, commission_type=strategy.commission.percent, commission_value=0.075, default_qty_type=strategy.percent_of_equity, max_bars_back=200, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0)
hullperiod=input(title="HullMA Period",defval=210, minval=1)
Width=input(title="Cloud Width",defval=200, minval=2)
price=input(ohlc4,title="Price data")
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) 
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) 
FromYear = input(defval = 2017, title = "From Year", minval = 2017) 
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) 
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) 
ToYear = input(defval = 9999, title = "To Year", minval = 2017)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) 
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) 
window() => true
n2ma=2*wma(price,round(hullperiod/2))
nma=wma(price,hullperiod)
diff=n2ma-nma
sqn=round(sqrt(hullperiod))
n2ma1=2*wma(price[1],round(hullperiod/2))
nma1=wma(price[1],hullperiod)
diff1=n2ma1-nma1
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
Hull_Line=n1-n1[1]/n2[1]
Hull_retracted=if(n1>n2)
    Hull_retracted=Hull_Line-Width
else
    Hull_retracted=Hull_Line+Width
c1=(Hull_retracted*n1)/price[1] 
c2=(Hull_retracted*n2)/price[1]
c4=c1>c2?green:red
c2p=plot(c2, color=black, linewidth=1)
c3p=plot(price, color=black, linewidth=1)
fill(c3p, c2p, color=c4, transp=75)
plot(cross(c1, c2) ? c1 : na, style = circles,color=c4, linewidth = 4) 
if (price<c2)
    strategy.close("BUY", when=window())
if (price>c2)                       
    strategy.close("SELL", when=window())
if (price[1]>c2 and price[1]>c1)             
    strategy.entry("BUY",strategy.long, when=window())
if (price[1]<c1 and price[1]<c2)            
    strategy.entry("SELL",strategy.short, when=window())//           /L'-, 
//                               ,'-.      `   ````                 /  L '-, 
//     .                    _,--dMMMM\        `   ` ` '`..         /       '-, 
//     :             _,--,  )MMMMMMMMM),.      `     ,<>          /_      '-,' 
//     ;     ___,--. \MM(    `-'   )M//MM\          ,',.;      .-'* ;     .' 
//     |     \MMMMMM) \MM\       ,dM//MMM/     ___ < ,; `.      )`--'    / 
//     |      \MM()M   MMM)__   /MM(/MP'  ___, \  \ `  `. `.   /__,    ,' 
//     |       MMMM/   MMMMMM( /MMMMP'__, \     | /      `. `-,_\     / 
//     |       MM     /MMM---' `--'_ \     |-'  |/         `./ .\----.___ 
//     |      /MM'   `--' __,-  \""   |-'  |_,               `.__) . .F. )-. 
//     |     `--'       \   \    |-'  |_,     _,-/            J . . . J-'-. `-., 
//     |         __  \`. |   |   |         \    / _           |. . . . \   `-.  F 
//     |   ___  /  \  | `|   '      __  \   |  /-'            F . . . . \     '` 
//     |   \  \ \  /  |        __  /  \  |  |,-'        __,- J . . . . . \ 
//     |    | /  |/     __,-  \  ) \  /  |_,-     __,--'     |. .__.----,' 
//     |    |/    ___     \    |'.  |/      __,--'           `.-;;;;;;;;;\ 
//     |     ___  \  \     |   |  `   __,--'                  /;;;;;;;;;;;;. 
//     |     \  \  |-'\    '    __,--'                       /;;;;;;;;;;;;;;\ 
// \   |      | /  |      __,--'                             `--;;/     \;-'\ 
//  \  |      |/    __,--'                                   /  /         \  \ 
//   \ |      __,--'                                        /  /           \  \ 
//    \|__,--'                                          _,-;M-K,           ,;-;\ 
//                                                     <;;;;;;;;           '-;;;; 
//                                                                                  :D

Más.