Estrategia de trading con bandas de Bollinger de Wei


Fecha de creación: 2023-09-13 13:55:24 Última modificación: 2023-09-13 13:55:24
Copiar: 2 Número de Visitas: 942
1
Seguir
1617
Seguidores

Esta estrategia combina el indicador de las ondas de Weiss y el indicador de las bandas de Brin para determinar la dirección de la tendencia del mercado y realizar operaciones de ruptura en los puntos clave de soporte. Es una estrategia típica de ruptura de tendencia.

Principio de la estrategia:

  1. Calcular las ondas de Weiss para determinar la tendencia de los precios a través del movimiento del gráfico en forma de columnas.

  2. El cálculo de la banda de Brin sube y baja y entra en la cancha cuando el precio rompe la órbita.

  3. Cuando las ondas de Weiss muestran una tendencia múltiple, el precio rompe con el Bollinger Bands y se pone en marcha.

  4. Cuando las ondas de Weiss muestran una tendencia a la baja, el precio rompe el tren de baja de la banda de Brin y se vacía.

  5. Establezca una posición de parada y pérdida para salir de la cancha cuando se produzca una tendencia inversa.

Las ventajas de esta estrategia:

  1. El índice de las ondas de Weiss es un buen indicador de las principales tendencias.

  2. El cinturón de Brin puede encontrar puntos de resistencia clave SUPPORT.

  3. El uso combinado de indicadores puede mejorar la precisión del juicio.

El riesgo de esta estrategia:

  1. Las olas de Weiss y las de Brin se encuentran con problemas de retraso, y las entradas no son buenas.

  2. Las transacciones de ruptura son fácilmente engañadas y requieren protección de pérdidas.

  3. En el contexto de la conmoción, es difícil encontrar tendencias sostenidas y puntos de ruptura claros.

En resumen, la estrategia combina las ondas de Weiss y las bandas de Brin para determinar la dirección de la tendencia y realizar operaciones de ruptura en los puntos clave. Puede mejorar la precisión hasta cierto punto, pero debe estar alerta a los problemas de estancamiento y los mercados convulsivos.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © sharatgbhat

//@version=4
// strategy("Weis BB Strategy", overlay=false, default_qty_type = strategy.percent_of_equity, default_qty_value = 10,max_lines_count = 500, max_labels_count = 500)
maxIdLossPcnt = input(1, "Max Intraday Loss(%)", type=input.float)
// strategy.risk.max_intraday_loss(maxIdLossPcnt, strategy.percent_of_equity)

method = input(defval="ATR", options=["ATR", "Traditional", "Part of Price"], title="Renko Assignment Method")
methodvalue = input(defval=14.0, type=input.float, minval=0, title="Value")
pricesource = input(defval="Close", options=["Close", "Open / Close", "High / Low"], title="Price Source")
useClose = pricesource == "Close"
useOpenClose = pricesource == "Open / Close" or useClose
useTrueRange = input(defval="Auto", options=["Always", "Auto", "Never"], title="Use True Range instead of Volume")
isOscillating = input(defval=false, type=input.bool, title="Oscillating")
normalize = input(defval=false, type=input.bool, title="Normalize")
vol = useTrueRange == "Always" or useTrueRange == "Auto" and na(volume) ? tr : volume
op = useClose ? close : open
hi = useOpenClose ? close >= op ? close : op : high
lo = useOpenClose ? close <= op ? close : op : low

if method == "ATR"
    methodvalue := atr(round(methodvalue))
if method == "Part of Price"
    methodvalue := close / methodvalue

currclose = float(na)
prevclose = nz(currclose[1])
prevhigh = prevclose + methodvalue
prevlow = prevclose - methodvalue
currclose := hi > prevhigh ? hi : lo < prevlow ? lo : prevclose

direction = int(na)
direction := currclose > prevclose ? 1 : currclose < prevclose ? -1 : nz(direction[1])
directionHasChanged = change(direction) != 0
directionIsUp = direction > 0
directionIsDown = direction < 0

barcount = 1
barcount := not directionHasChanged and normalize ? barcount[1] + barcount : barcount
vol := not directionHasChanged ? vol[1] + vol : vol
res = barcount > 1 ? vol / barcount : vol

plot(isOscillating and directionIsDown ? -res : res, style=plot.style_columns, color=directionIsUp ? color.green : color.red, transp=75, linewidth=3, title="Wave Volume")

length = input(14, minval=1)
src = input(close, title="Source")
mult = input(2, minval=0.001, maxval=50, title="StdDev")
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))

MomentumBull = close>upper
MomentumBear = close<lower

if (MomentumBull and directionIsUp)
	strategy.entry("Buy", strategy.long)
if (MomentumBear and directionIsDown)
	strategy.entry("Sell", strategy.short)
    strategy.exit("exit","Buy",when=directionIsDown,qty_percent=100,profit=20,loss=10)
    strategy.exit("exit","Sell",when=directionIsUp,qty_percent=100,profit=20,loss=10)