El nombre de esta estrategia es
Esta estrategia primero calcula los rieles superior e inferior de las bandas de Bollinger, y luego juzga si la última línea K rompe los rieles superior o inferior. Al mismo tiempo, también juzga si la entidad de la última línea K es solo la mitad de la entidad de la línea K anterior. Cuando se cumplen ambas condiciones, se emite una señal de negociación.
Específicamente, la estrategia utiliza la situación en la que las entidades rojas de la línea K se vuelven más pequeñas, alcanzando solo la mitad de la entidad anterior de la línea K durante una tendencia a la baja, junto con el último precio de cierre de la línea K rompiendo el carril inferior de la banda de Bollinger como señal de compra. Por el contrario, utiliza la situación en la que las entidades verdes de la línea K se vuelven más pequeñas, alcanzando solo la mitad de la entidad anterior de la línea K durante una tendencia al alza, junto con el último precio de cierre de la línea K rompiendo el carril superior de la banda de Bollinger como señal de venta.
Esta estrategia combina indicadores técnicos y análisis del comportamiento de precios, que pueden filtrar eficazmente las falsas rupturas. Al mismo tiempo, solo emite señales en puntos de inflexión, evitando el comercio repetitivo durante las tendencias. Además, la estrategia utiliza las características de la contracción de la entidad de la línea K para bloquear el punto de inflexión después de un ajuste menor. Estas ventajas pueden mejorar la estabilidad y la rentabilidad de la estrategia.
Los principales riesgos de esta estrategia se encuentran en la configuración inadecuada de los parámetros de las bandas de Bollinger y los fracasos de la ruptura. Si los parámetros de las bandas de Bollinger se establecen demasiado grandes o demasiado pequeños, se producirán juicios erróneos. Además, incluso si el precio rompe los rieles superiores o inferiores de las bandas de Bollinger, puede ser una ruptura falsa y no formar una inversión de tendencia real. Estos riesgos pueden conducir a pérdidas comerciales de la estrategia. Para reducir estos riesgos, los parámetros de las bandas de Bollinger se pueden ajustar en consecuencia, u otros indicadores se pueden agregar para la verificación de combinaciones.
Esta estrategia puede optimizarse en los siguientes aspectos:
Optimizar los parámetros de la banda de Bollinger para capturar tendencias y fluctuaciones de manera más efectiva.
Agregue el stop loss móvil para bloquear las ganancias y gestionar los riesgos.
Incorporar otros indicadores como MACD, RSI para la verificación para filtrar las señales falsas.
Añadir algoritmos de aprendizaje automático, entrenar modelos con grandes volúmenes de datos y optimizar dinámicamente los parámetros de estrategia y los pesos de indicadores.
Esta estrategia combina con éxito la acción de precios y las bandas de Bollinger, obteniendo una rentabilidad relativamente alta con bajo riesgo. Solo emite señales en puntos clave, evitando interferencias de ruidos. A través de la optimización continua de parámetros y criterios de filtrado, se espera que esta estrategia obtenga un alfa más estable. Proporciona una plantilla confiable para la práctica comercial cuantitativa.
/*backtest start: 2022-12-13 00:00:00 end: 2023-12-19 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // main codebody taken from Trader Noro - Noro's Crypto Pattern for H1 // Intraday strategy- Exit at EOD at all cost strategy(title = "Price Action + Bollinger Strategy ",overlay=true) bar = close > open ? 1 : close < open ? -1 : 0 body = abs(close - open) avgbody = sma(body, 100) //calculate simple moving average bollinger bands b_sma = input(21,minval=1,title=" SMA candle") b_sma_no_of_deviations = 2.1 b_sma_signal = sma(close, b_sma) b_sma_deviation = b_sma_no_of_deviations * stdev(close, b_sma) b_sma_upper= b_sma_signal + b_sma_deviation b_sma_lower= b_sma_signal - b_sma_deviation up1 = body < body[1] / 2 and bar[1]==1 and bar == -1 and close[1] > b_sma_upper dn1 = body < body[1] / 2 and bar[1]==-1 and bar == 1 and close[1] < b_sma_lower up2 = false dn2 = false up2 := (up1[1] or up2[1]) and close < close[1] dn2 := (dn1[1] or dn2[1]) and close > close[1] plotarrow(up1 or up2 ? 1 : na, colorup = color.black, colordown = color.black, transp = 0) plotarrow(dn1 or dn2 ? -1 : na, colorup = color.black, colordown = color.black, transp = 0) strategy.entry("Buy", true, when = dn1) strategy.exit("exit", "Buy", profit = 3, loss = 1.5) strategy.entry("Short", false, when = up1) strategy.exit("exit", "Short", profit = 3, loss = 1.5)