Estrategia de cruce de banda de Bollinger de media móvil única


Fecha de creación: 2023-12-22 14:10:14 Última modificación: 2023-12-22 14:10:14
Copiar: 1 Número de Visitas: 725
1
Seguir
1621
Seguidores

Estrategia de cruce de banda de Bollinger de media móvil única

Descripción general

La estrategia se basa en un indicador de la línea de paridad y la banda de Brin, donde se compra o se vende cuando el precio rompe la banda de Brin. Se compra o se vende cuando la línea de paridad sube y cuando la línea de paridad baja.

Principio de estrategia

La estrategia se basa en los siguientes indicadores:

  1. Líneas medias ((SMA): calcula una media móvil simple de los precios de cierre de CLOSE, que representa la tendencia de los precios.
  2. La banda de Brin en el carril: representa la línea de resistencia angular de inclinación, la ruptura de la línea significa una fuerte ruptura.
  3. La banda de Brin hacia abajo: representa la línea de soporte, y la caída de la línea indica la posibilidad de una reversión de la tendencia

Las señales concretas son las siguientes:

  1. Señales de compra: compra cuando el precio de cierre rompa la banda de Brin y la línea media está en alza.
  2. La señal de venta: cuando el precio de cierre cae por debajo de la banda de Brin y la línea media está en un estado descendente, se vende.

De esta manera, la combinación de tendencias y brechas hace que las señales de negociación sean más confiables y evita falsas brechas.

Ventajas estratégicas

  1. Las reglas son sencillas, claras y fáciles de entender.
  2. Utiliza la línea media para determinar la dirección de la tendencia general, evita hacer un mercado bajista y un mercado bajista.
  3. Brin se subió a la vía descendente para determinar el punto de ruptura local y capturar con precisión la señal de ruptura.
  4. El retiro es relativamente pequeño y se ajusta a las preferencias de riesgo de la mayoría de las personas.

Riesgo estratégico

  1. Los indicadores individuales son propensos a emitir señales erróneas y pueden reducir la tasa de error mediante la optimización de los parámetros.
  2. El punto de parada puede ajustarse adecuadamente si no se puede hacer frente a una gran conmoción de la situación.
  3. Si no puede obtener más ganancias en una situación de gran tendencia, puede considerar aumentar su posición.

Optimización de la estrategia

  1. Optimización de los parámetros del ciclo de la línea media para adaptarse a más variedades.
  2. Se añaden filtros de otros indicadores, como el MACD, para reducir la señal errónea.
  3. El punto de parada se ajusta dinámicamente para limitar el máximo retiro.
  4. La idea de la administración de fondos, combinada con la idea de la gestión de fondos, hace que las ganancias y las pérdidas sean más estables.

Resumir

La estrategia en general es sencilla y práctica, y es adecuada para la mayoría de las personas. Una estrategia recomendable es que con algunos ajustes de optimización, la estrategia pueda ser más robusta y adaptarse a más situaciones de mercado.

Código Fuente de la Estrategia
/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="single sma cross", shorttitle="single sma cross",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,overlay=true,currency="USD")
s=input(title="s",defval=90)
p=input(title="p",type=float,defval=.9,step=.1)

sa=sma(close,s)
plot(sa,color=red,linewidth=3)
band=stdev(close,s)*p
plot(band+sa,color=lime,title="")
plot(-band+sa,color=lime,title="")

// ===Strategy Orders============================================= ========
inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na

longCondition = crossover(close,sa+band) and rising(sa,5)
shortCondition = crossunder(close,sa-band) and falling(sa,5)
crossmid = cross(close,sa)


strategy.entry(id = "Long", long=true, when = longCondition)
strategy.close(id = "Long", when = shortCondition)
strategy.entry(id = "Short", long=false, when = shortCondition)
strategy.close(id = "Short", when = longCondition)
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=crossmid)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=crossmid)