Esta estrategia utiliza una combinación de bandas de Bollinger y promedios móviles para la identificación y entrada de tendencias.
Calcular el canal de Bollinger para determinar la dirección de la tendencia del mercado
Calcular el tamaño del cuerpo de la vela alcista para señales de stop loss y reversión
Introducción de operaciones en dirección del canal tras la confirmación de la tendencia
Utilice medias móviles para filtrar para evitar señales falsas
Identificación sistemática de tendencias combinando bandas y medias móviles
Las bandas identifican claramente los canales de precios y la dirección de la tendencia. Las medias móviles filtran el ruido. La combinación permite la detección de tendencias robustas inmunes a los shocks esporádicos del mercado.
Control eficaz del riesgo mediante pérdidas de parada en el cuerpo de la vela
Comparando el cuerpo actual de la vela con el promedio histórico, se detecta la inversión de tendencia para el stop loss y la reducción de la posición.
Reglas claras de entrada cuantitativa y de detención de pérdidas
Estrictos requisitos de media móvil y dirección del canal para la entrada. Regla de stop loss del tamaño del cuerpo de la vela. Hace que toda la entrada y salida del sistema sean claras y sistemáticas.
Pérdidas potenciales en mercados de rango
El precio que oscila alrededor de bandas puede causar pérdidas menores repetidas.
Las pérdidas de detención prematuras en tendencias fuertes
Los retracements a corto plazo pueden desencadenar paradas en fuertes tendencias alcistas/bajas.
Señales erróneas por mal ajuste de parámetros
Los parámetros de media móvil y bandas subóptimos pueden causar señales falsas.
Optimizar el período de revisión de la media móvil
Ajustar el período para reducir el suavizado para una detección más rápida del cambio de tendencia.
Prueba de mecanismos alternativos de detención de pérdidas
Evaluar las paradas de trailing, paradas de ATR, etc. para encontrar el sistema óptimo.
Incorporar modelos de aprendizaje automático
Forma modelos con datos históricos extensos para aumentar la tendencia y la predicción de señales.
Esta estrategia equilibra la identificación de tendencias y el control de riesgos utilizando bandas de Bollinger y promedios móviles. El enfoque cuantitativo sistemático con reglas claras de entrada / salida permite una captura efectiva de recompensas con riesgo controlado.
/*backtest start: 2023-12-14 00:00:00 end: 2023-12-21 00:00:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Noro's Bands Scalper Strategy v1.3", shorttitle = "Scalper str 1.3", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") takepercent = input(0, defval = 0, minval = 0, maxval = 1000, title = "take, %") needct = input(false, defval = false, title = "Counter-trend entry") len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period") needbb = input(true, defval = true, title = "Show Bands") needbg = input(true, defval = true, title = "Show Background") src = close //PriceChannel 1 lasthigh = highest(src, len) lastlow = lowest(src, len) center = (lasthigh + lastlow) / 2 //Distance dist = abs(src - center) distsma = sma(dist, len) hd = center + distsma ld = center - distsma hd1 = center + distsma / 2 ld1 = center - distsma / 2 //Trend trend = close < ld and high < center ? -1 : close > hd and low > center ? 1 : trend[1] //Lines colo = needbb == false ? na : black plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band") plot(center, color = colo, linewidth = 1, transp = 0, title = "center") plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band") //Background col = needbg == false ? na : trend == 1 ? lime : red bgcolor(col, transp = 80) //Body body = abs(close - open) smabody = ema(body, 30) candle = high - low //Engulfing min = min(open, close) max = max(open, close) bar = close > open ? 1 : close < open ? -1 : 0 upeng = bar == 1 and bar[1] == -1 and min >= min[1] and max <= max[1] ? 1 : 0 dneng = bar == -1 and bar[1] == 1 and min >= min[1] and max <= max[1] ? 1 : 0 //Signals up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and close < open)) ? 1 : 0 dn7 = trend == 1 and bar == 1 and bar[1] == 1 and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0 up8 = trend == -1 and bar == -1 and bar[1] == -1 and close < strategy.position_avg_price * (100 - takepercent) / 100 ? 1 : 0 dn8 = trend == -1 and ((bar == 1 and bar[1] == 1) or (body > smabody and close > open)) ? 1 : 0 if up7 == 1 or up8 == 1 strategy.entry("Long", strategy.long, needlong == false ? 0 : trend == -1 and needct == false ? 0 : na) if dn7 == 1 or dn8 == 1 strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 and needct == false ? 0 : na)