
La estrategia se basa en el indicador de la banda de Brin y en las medias móviles para determinar si el precio está cerca de la banda de Brin y para realizar una posición cerrada larga o corta, para obtener ganancias. Cuando el precio rompe la banda de Brin, mira hacia abajo; cuando el precio cae hacia abajo, mira hacia arriba. Combina las ventajas de las dos estrategias de negociación de la reversión de la tendencia y la ruptura, para obtener mejores ganancias cuando la tendencia se tambalea.
La estrategia se basa en las siguientes dos señales de entrada:
Señales múltiples: cuando el precio de cierre toca la línea inferior y el precio de cierre está por encima de la línea media de la EMA, la entidad de la línea K anterior es negativa y la entidad de la línea K actual es positiva.
Señales de vacío: cuando el precio de cierre toca la vía superior y el precio de cierre está por debajo de la línea media de la EMA, la entidad de la línea K anterior es la línea positiva y la entidad de la línea K actual es la línea negativa.
Método de stop loss: Stop loss fijo. El punto de stop loss es el precio de entrada a la distancia de la vía oponente por el factor de riesgo de retorno.
Método de paradas: el objetivo es que el ganancia sea la vía de los oponentes. Es decir, hacer más paradas para bajar la vía, hacer paradas en blanco para subir la vía.
La combinación de las ventajas de la tendencia y la estrategia de reversión, es mejor en situaciones de fluctuación de la tendencia.
Utiliza el indicador de la banda de Bryn para determinar las zonas de sobreventa y sobrecompra, y las oportunidades de reversión.
Los puntos de parada fijos se establecen razonablemente y ayudan a controlar el riesgo.
El sistema de suspensión móvil maximiza las ganancias.
Las estrategias de ruptura son susceptibles a arbitraje y hay que estar atento a las falsificaciones.
Si la situación es demasiado turbulenta, el stop loss puede ser activado con frecuencia.
El stop loss fijo no puede ajustarse a las fluctuaciones del mercado y puede ser demasiado flexible o demasiado radical.
Si los parámetros de la banda de Bryn no se establecen a tiempo, el resultado puede ser negativo.
Se puede considerar la combinación de indicadores RSI para filtrar las señales de entrada, por ejemplo, RSI superior a 50 para hacer más, RSI inferior a 50 para hacer menos, para evitar señales erróneas.
Se añade la función de ajuste automático de la distancia de parada fija para que la parada sea más flexible. Por ejemplo, la distancia de parada se puede ajustar dinámicamente según el indicador ATR.
Optimización de los parámetros de la banda de Bryn para encontrar la combinación óptima de parámetros.
Se pueden probar diferentes parámetros de la línea media de la EMA para optimizar el efecto de vallado de la línea media.
La estrategia tiene en cuenta la tendencia y la reversión, utiliza la banda de Brin para determinar el punto de entrada de compra y venta, y maximiza las ganancias mediante el movimiento del stop. Se desempeña mejor en situaciones de fluctuación de la tendencia.
/*backtest
start: 2023-10-24 00:00:00
end: 2023-10-31 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// Welcome to yet another script. This script was a lot easier since I was stuck for so long on the Donchian Channels one and learned so much from that one that I could use in this one
// This code should be a lot cleaner compared to the Donchian Channels, but we'll leave that up to the pro's
// This strategy has two entry signals, long = when price hits lower band, while above EMA, previous candle was bearish and current candle is bullish
// Short = when price hits upper band, while below EMA, previous candle was bullish and current candle is bearish
// Take profits are the opposite side's band(lower band for long signals, upper band for short signals). This means our take profit price will change per bar
// Our stop loss doesn't change, it's the difference between entry price and the take profit target divided by the input risk reward
// At the time of writing this, I could probably calculate that much easier by simply multiplying the opposite band by the input risk reward ratio
// Since I want to get this script out and working on the next one, I won't clean that up, I'm sorry
// strategy(shorttitle="BB Trending Reverse Strategy", title="Bollinger Bands Trending Reverse Strategy", overlay=true, default_qty_type = strategy.cash, default_qty_value = 150, initial_capital = 1000, currency = currency.USD, commission_type = "percent", commission_value = 0.036)
// The built-in Bollinger Band indicator inputs and variables, added some inputs of my own and organised the code
length = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
emaInput = input(title = "EMA Input", type = input.integer, defval = 200, minval = 10, maxval = 400, step = 1)
riskreward = input(title = "Risk/Reward Ratio", type = input.float, defval = 1.50, minval = 0.01, maxval = 100, step = 0.01)
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
ema = ema(close, emaInput)
// These are our conditions as explained above
entryLong = low[1] <= lower[1] and low <= lower and low > ema
entryShort = high[1] >= upper[1] and high >= upper and high < ema
reversecandleLong = close > open and close[1] < open[1]
reversecandleShort = close < open and close[1] > open[1]
var stopLong = 0.0
var stopShort = 0.0
// These are our entry signals, notice how the stop condition is within the if statement while the strategy.exit is outside of the if statement, this way the take profit targets trails up or down depending on what the price does
if reversecandleLong and entryLong and strategy.position_size == 0
stopLong := (((close / upper - 1) * riskreward + 1) * close)
strategy.entry("Long Entry", strategy.long, comment = "Long Entry")
strategy.exit("Exit Long", "Long Entry", limit = upper, stop = stopLong, comment = "Exit Long")
if reversecandleShort and entryShort and strategy.position_size == 0
stopShort := (((close / lower - 1) / riskreward + 1) * close)
strategy.entry("Short Entry", strategy.short, comment = "Short Entry")
strategy.exit("Exit Short", "Short Entry", limit = lower, stop = stopShort, comment = "Exit Short")
// The built-in Bollinger Band plots
plot(basis, "Basis", color=#872323, offset = offset)
p1 = plot(upper, "Upper", color=color.teal, offset = offset)
p2 = plot(lower, "Lower", color=color.teal, offset = offset)
fill(p1, p2, title = "Background", color=#198787, transp=95)
plot(ema, color=color.red)
// These plots are to check the stoplosses, they can make a mess of your chart so only use these if you want to make sure these work
// plot(stopLong)
// plot(stopShort)