La estrategia utiliza el indicador de movimiento para romper el cinturón de Bryn, principalmente para determinar si el precio rompe el cinturón de Bryn y emite señales de venta y compra.
La estrategia se basa principalmente en la dirección de la tendencia de los indicadores de la banda de Bryn. La banda de Bryn es una zona de banda formada por una media móvil y su desvío estándar. La línea media de la banda de Bryn es una media móvil de n días, la línea ascendente es la línea media + 2 veces el desvío estándar, la línea descendente es la línea media - 2 veces el desvío estándar.
Concretamente, la estrategia comienza por calcular el precio más alto, el precio más bajo y el precio intermedio en n días (el precio más alto + el precio más bajo) / 2). Luego, se calcula la media de movimiento ponderada de la distancia entre el precio de cierre y el precio intermedio que constituye la línea media del cinturón de Bryn, y se agrega el doble de diferencia estándar en la línea media para formar la línea inferior.
Si el precio de cierre rompe la línea ascendente, indica una tendencia al alza; si rompe la línea descendente, indica una tendencia a la baja.
Además, la estrategia también introduce un mecanismo de apertura de posiciones inversa. Cuando el precio rompe la banda de Brin, se toma una operación de mercado inverso para hacer nada si el MACD está bajando.
El uso de la cinta de blindaje para determinar la dirección de la tendencia tiene cierta capacidad de seguimiento de tendencias.
El diseño inverso de la posición puede obtener ganancias inversas.
Los parámetros de los ciclos de la cinta de Bryn, los coeficientes de diferencia estándar y otros se pueden personalizar para adaptarse a las transacciones de diferentes ciclos.
El precio de las opciones binarias es el mismo que el precio de las opciones binarias.
Las bandas de browning se utilizan a menudo para acciones con alta volatilidad y pueden no ser adecuadas para variedades como recursos o índices de largo ciclo. Se pueden probar los efectos de diferentes parámetros de ciclo.
Las señales de ruptura pueden presentar falsas rupturas.
La apertura inversa puede aumentar aún más las pérdidas.
El retiro puede ser mayor. El tamaño de la posición puede ajustarse adecuadamente.
Se puede considerar la inclusión de filtros de tendencias para evitar mercados turbulentos con direcciones inciertas.
Se puede probar el factor de diferencia estándar del cinturón de Bryn para encontrar un parámetro más adecuado.
La estrategia de stop loss puede ser introducida para controlar las pérdidas individuales.
Se puede optimizar la lógica de apertura y puesta en marcha para hacer que las señales de negociación sean más claras.
Esta estrategia utiliza indicadores basados en Brin para determinar la ruptura de la tendencia del precio. Se puede realizar una estrategia de seguimiento de tendencia básica con la configuración de parámetros simples. Sin embargo, existe un riesgo falso de ruptura que debe filtrarse con otros indicadores.
Esta estrategia utiliza el indicador de impulso de Bollinger Bands para la negociación de ruptura, juzgando principalmente si el precio rompe las bandas de Bollinger superiores o inferiores para las señales de negociación.
La estrategia se basa principalmente en el indicador de bandas de Bollinger para determinar la dirección de la tendencia. Las bandas de Bollinger consisten en una banda media basada en un promedio móvil y bandas superior/inferior definidas por desviaciones estándar. La banda media es un promedio móvil de n períodos, la banda superior es la banda media + 2 desviaciones estándar, y la banda inferior es la banda media - 2 desviaciones estándar. Cuando el precio se acerca a la banda superior indica condiciones de sobrecompra, y cuando se acerca a la banda inferior señala condiciones de sobreventa.
Específicamente, la estrategia primero calcula el máximo más alto y el mínimo más bajo en los últimos n períodos, y el precio medio ((máximo más alto + mínimo más bajo) / 2). Luego calcula la distancia entre el precio cerrado y el precio medio, utiliza la media móvil exponencial de la distancia para formar la banda media, y suma / resta 2 veces la desviación estándar por encima y por debajo para formar las bandas superior e inferior.
Cuando el precio de cierre rompe la banda superior, indica una tendencia alcista; cuando rompe la banda inferior, indica una tendencia bajista.
Además, la estrategia incorpora un mecanismo de contra-tendencia. Cuando el precio rompe la banda superior pero el MACD está cayendo, tomará una posición corta contra-tendencia.
El uso de bandas de Bollinger para determinar la dirección de la tendencia proporciona cierta capacidad de seguimiento de la tendencia.
El diseño contra tendencia permite sacar provecho de las reversiones.
Los parámetros personalizables como el período y los múltiplos de desviación estándar lo hacen adaptable a diferentes horizontes comerciales.
Desactivar las operaciones contra tendencia para reducir el riesgo.
Las bandas de Bollinger funcionan mejor para acciones de alta volatilidad, pueden no ser adecuadas para materias primas o índices estables.
Las señales de fuga pueden tener falsas fugas, pueden añadir filtros con otros indicadores.
El comercio contra tendencia puede aumentar aún más las pérdidas. Puede desactivar el módulo contra tendencia.
Las reducciones pueden ser significativas, pueden ajustar el tamaño de la posición.
Considere la posibilidad de añadir un filtro de tendencia para evitar la trampa en los mercados no direccionales.
Prueba diferentes múltiplos de desviación estándar para encontrar parámetros óptimos.
Incorporar el stop loss para controlar la pérdida de una sola operación.
Optimizar la entrada y la lógica de complemento para señales comerciales más claras.
La estrategia utiliza bandas de Bollinger como indicador principal y las operaciones se basan en las rupturas de tendencia. Con parámetros simples, proporciona capacidades básicas de seguimiento de tendencia. Pero existen riesgos de ruptura falsos, que requieren filtros adicionales. Los parámetros, el stop loss y los controles de riesgo se pueden mejorar. En general, sirve como una estrategia de ruptura de línea base razonable.
/*backtest start: 2023-08-18 00:00:00 end: 2023-09-17 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy("Noro's Bands Scalper Strategy v1.6", shorttitle = "Scalper str 1.6", 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, %") needbe = input(true, defval = true, title = "Bands Entry") needct = input(false, defval = false, title = "Counter-trend entry") bodylen = input(10, defval = 10, minval = 0, maxval = 50, title = "Body length") trb = input(1, defval = 1, minval = 1, maxval = 5, title = "Trend bars") 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") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") 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 hd2 = center + distsma * 2 ld2 = center - distsma * 2 //Trend chd = close > hd cld = close < ld uptrend = trb == 1 and chd ? 1 : trb == 2 and chd and chd[1] ? 1 : trb == 3 and chd and chd[1] and chd[2] ? 1 : trb == 4 and chd and chd[1] and chd[2] and chd[3] ? 1 : trb == 5 and chd and chd[1] and chd[2] and chd[3] and chd[4] ? 1 : 0 dntrend = trb == 1 and cld ? 1 : trb == 2 and cld and cld[1] ? 1 : trb == 3 and cld and cld[1] and cld[2] ? 1 : trb == 4 and cld and cld[1] and cld[2] and cld[3] ? 1 : trb == 5 and cld and cld[1] and cld[2] and cld[3] and cld[4] ? 1 : 0 trend = dntrend == 1 and high < center ? -1 : uptrend == 1 and low > center ? 1 : trend[1] //trend = close < ld and high < center ? -1 : close > hd and low > center ? 1 : trend[1] //Lines colo = needbb == false ? na : black plot(hd2, color = colo, linewidth = 1, transp = 0, title = "High band 2") plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band 1") plot(center, color = colo, linewidth = 1, transp = 0, title = "center") plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band 1") plot(ld2, color = colo, linewidth = 1, transp = 0, title = "Low band 2") //Background col = needbg == false ? na : trend == 1 ? lime : red bgcolor(col, transp = 80) //Body body = abs(close - open) smabody = ema(body, 30) / 10 * bodylen //Signals bar = close > open ? 1 : close < open ? -1 : 0 up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and bar == -1)) ? 1 : 0 dn7 = trend == 1 and ((bar == 1 and bar[1] == 1) or (close > hd and needbe == true)) and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0 up8 = trend == -1 and ((bar == -1 and bar[1] == -1) or (close < ld2 and needbe == true)) 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 bar == 1)) ? 1 : 0 if up7 == 1 or up8 == 1 strategy.entry("Long", strategy.long, needlong == false ? 0 : trend == -1 and needct == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00))) if dn7 == 1 or dn8 == 1 strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 and needct == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00))) if time > timestamp(toyear, tomonth, 31, 00, 00) strategy.close_all()