La estrategia de pérdida de pérdidas de las bandas de Bollinger

El autor:¿ Qué pasa?, Fecha: 2023-11-23 15:49:12
Las etiquetas:

img

Resumen general

La estrategia de bandas de Bollinger es una estrategia clásica que utiliza bandas de Bollinger para el seguimiento de tendencias y señales de sobrecompra / sobreventa.

La estrategia juzga las condiciones de sobrecompra / sobreventa a través de cruces dorados / muertos de las bandas superiores / inferiores de Bollinger para establecer posiciones. El área entre las bandas refleja el rango de volatilidad actual del mercado. Las bandas consisten en bandas medias, superiores e inferiores, donde la banda media es el promedio móvil simple de N días y las bandas superiores / inferiores son la banda media +/- K desviaciones estándar.

Principios

Las bandas de Bollinger reflejan la volatilidad del mercado y el rango de oscilación. Tocar la banda inferior significa sobreventa del status quo - los huecos tienen mayores probabilidades de ser llenados. Por lo tanto, las posiciones largas deben considerarse basadas en el principio de reversión media. Del mismo modo, tocar la banda superior representa condiciones potenciales de sobrecompra y posibles reversiones de precios, por lo que se pueden establecer posiciones cortas para beneficiarse de los movimientos a la baja.

Esta estrategia combina las señales de sobrecompra/sobreventa de las bandas de Bollinger para entradas de seguimiento de tendencias.

Cuando el precio cruza por encima de la banda inferior, el mercado sale del área de sobreventa en un rango razonable. Las posiciones largas se pueden abrir. Cuando el precio cruza por debajo de la banda superior, el mercado se vuelve sobrecomprado. Luego se pueden abrir los cortes.

Cuando las pérdidas exceden el porcentaje de pérdida, las posiciones actuales se detienen para limitar las pérdidas adicionales.

Ventajas

  1. Identificar los niveles de sobrecompra/sobreventa con bandas de Bollinger para las configuraciones de compra baja-venta alta a juzgar por los cruces de bandas.

  2. Captar tendencias a través de la propiedad de volatilidad de las bandas de Bollinger.

  3. El mecanismo de stop loss limita efectivamente la pérdida máxima por operación.

  4. La combinación de seguimiento de tendencias y stop loss conduce a ganancias constantes.

Riesgos y optimización

  1. La configuración de parámetros afecta a la calidad de la señal. La longitud de banda media N y el multiplicador de desviación estándar K deben ajustarse racionalmente para diferentes mercados, o la precisión se verá afectada.

  2. El alto porcentaje de pérdidas puede afectar a la estabilidad del rendimiento. El alto porcentaje de pérdidas puede generar pérdidas más grandes por operación, mientras que el bajo porcentaje de pérdidas puede desencadenar pérdidas prematuras.

  3. Los filtros adicionales con otros indicadores pueden mejorar la precisión de la señal.

  4. Se pueden probar diferentes configuraciones de períodos de retención, como la combinación de bandas de periodos por hora o más cortas para una mayor frecuencia de negociación y mejoras en la eficiencia del uso del capital.

Conclusión

Esta estrategia aprovecha las bandas de Bollinger para señales de sobrecompra / sobreventa e incorpora stop loss para controlar el riesgo. Es una estrategia de seguimiento de tendencias común. A través de la optimización de parámetros, la integración de señales más precisas y los niveles de stop loss, se pueden lograr ganancias constantes.


/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-22 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Bollinger Bands Strategy", overlay=false, shorttitle="BBS", pyramiding=0, currency=currency.USD, commission_type=strategy.commission.percent, commission_value=0.03, initial_capital=1000)
source = input(close, "Source")
length = input.int(20, minval=1)
mult = input.float(2.0, minval=0.001, maxval=50, step=0.001)
stopLossFactor = input.float(1, "Stop Loss Percent", maxval = 100, minval = 0, step=0.1)

basis = ta.sma(source, length)
dev = mult * ta.stdev(source, length)
upper = basis + dev
lower = basis - dev

var float lastTradePrice = na
var float stopLossLow = na
var float stopLossHigh = na
var bool currentIsLong = na

var bool nextExpectedIsLong = true

var bool existedLong = false
var bool existedShort = false

buyEntry = ta.crossover(source, lower)
sellEntry = ta.crossunder(source, upper)

if (buyEntry and nextExpectedIsLong == true)
	strategy.entry("BBandLE", strategy.long, comment="BBandLE")
	nextExpectedIsLong := false
	if(nz(strategy.position_size[1], 0) < 0) // new position detected
	    lastTradePrice := close
	    stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100))
	    stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100))
else
    strategy.cancel("BBandLE")

if (sellEntry and nextExpectedIsLong == false)
	strategy.entry("BBandSE", strategy.short, comment="BBandSE")
	nextExpectedIsLong := true
	if(nz(strategy.position_size[1], 0) > 0) // new position detected
        lastTradePrice := close
        stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100))
        stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100))
else
    strategy.cancel("BBandSE")

strategy.close("BBandLE", close < stopLossLow)
strategy.close("BBandSE", close > stopLossHigh)

// if(nz(strategy.position_size[1], 0) < 0 and close > stopLossHigh)
//     strategy.entry("BBandLE", strategy.long, comment="BBandLE")
// 	lastTradePrice := close
// 	stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100))
// 	stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100))
// if(nz(strategy.position_size[1], 0) > 0 and close < stopLossLow)
//     strategy.exit("BBandSE", strategy.short, comment="BBandSE")
//     lastTradePrice := close
//     stopLossLow := lastTradePrice * (1 - (stopLossFactor / 100))
//     stopLossHigh := lastTradePrice * (1 + (stopLossFactor / 100))

plot(source, "close", color.blue)
plot(lower, "lower", color.red)
plot(upper, "upper", color.red)
plot(stopLossLow, "StopLossLow", color.black)
plot(stopLossHigh, "StopLossHigh", color.black)
plot(lastTradePrice, "lastTradePrice", color.green)
plotchar(strategy.position_size > 0, char="-", size=size.tiny, location=location.bottom, color=color.green)
plotchar(strategy.position_size < 0, char="-", size=size.tiny, location=location.bottom, color=color.red)




Más.