DAKELAX-XRPUSDT Estrategia de reversión media de la banda de Bollinger

El autor:¿ Qué pasa?, fecha: 2023-11-02 16:18:34
Las etiquetas:

img

Resumen general

DAKELAX-XRPUSDT es una estrategia de trading bot para XRPUSDT en Binance. Es una simple estrategia inversa a la media utilizando Bandas de Bollinger, y tiene un buen rendimiento en backtest en el marco de tiempo H1 de mayo a agosto de 2019, así como en vivo.

Estrategia lógica

La estrategia primero calcula la SMA de 20 períodos y las bandas de Bollinger superior/inferior. La banda superior es la SMA + 1.5 desviación estándar, y la banda inferior es la SMA - 2.2 desviación estándar. Luego calcula la tasa de contracción de las bandas. Las bandas están llenas de negro si la contracción es > 1.3, amarilla si < 0.1, de lo contrario roja.

Cuando el precio de cierre está por debajo de la banda inferior, se va largo con 20 monedas.

La estrategia también calcula la línea rápida de la EMA de 7 períodos y la línea lenta de la EMA de 18 períodos.

Análisis de ventajas

  • Las bandas de Bollinger y la tasa de contracción identifican de forma intuitiva las tendencias y la volatilidad
  • La combinación con el cruce de EMA añade fuerza a las señales
  • Los resultados de las pruebas de retroceso son buenos y relativamente estables en el comercio en vivo

Análisis de riesgos

  • Alta probabilidad de fallo en caso de ruptura tras contracción de la banda
  • Compras de importe fijo sin riesgos de sobrecomercialización de posiciones
  • Demasiados crossovers en mercados variados corren el riesgo de pérdidas
  • Solo considera los factores diarios, se olvida de las tendencias de los marcos de tiempo más grandes

Considere el tamaño dinámico de las posiciones o el stop loss para controlar los riesgos. Optimice la estrategia de cruce para evitar problemas en los mercados variados. Agregue indicadores de tendencia de mayor marco de tiempo para identificar movimientos más grandes.

Direcciones de optimización

  • Ajustar el importe de compra basado en el ancho de banda, menos cuando se contrata y más cuando se amplía

  • Considere la posibilidad de acumular posiciones cuando la contracción se ve pero la señal no se ha activado todavía

  • Añadir un indicador de tendencia de plazo más largo para determinar la dirección general, pausar la estrategia cuando no esté clara

  • Incorporar el stop loss para controlar el riesgo, puede establecer cerca de los mínimos recientes de las bandas

  • Optimice los parámetros de cruce como los períodos de EMA para evitar quedar atrapado

Resumen de las actividades

DAKELAX-XRPUSDT es una estrategia de bot de negociación que utiliza la contracción de la banda de Bollinger con el cruce de la EMA. Es intuitiva y tiene buenos resultados de backtest, pero contiene algunos riesgos. Estos pueden reducirse mediante el tamaño de la posición, la estrategia de parada, la adición de stop loss y la optimización de la lógica de cruce. En general, proporciona un ejemplo claro de una estrategia de banda de Bollinger, pero requiere optimización específica de pares para obtener ganancias estables en vivo.


/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//study(title="Tradebotler DAKELAX Binance:XRPUSDT Study-strategy", overlay=true)
strategy(title="Tradebotler DAKELAX Binance:XRPUSDT Strategy", overlay=true)

buyAmount = input(20, minval=1)

// SMA20
len2 = input(20, minval=1)
src2 = input(close)
out2 = sma(src2, len2)

// BB contraction value (medium tight)
contraction_value = 1.3
// BB contraction value (very tight)
contraction_value2 = 0.1

// 2xSTDEV BB calculation
dev = stdev(src2, len2)
upper_BB = out2  + 1.5*dev
lower_BB = out2  - 2.2*dev
x1 = plot(upper_BB, color=blue, linewidth = 2)
x2 = plot(lower_BB, color=blue, linewidth = 2)

contraction = (upper_BB-lower_BB)/out2

//fills the BBands according to the contraction value (threshold)

// Calculate values
fastMA  = ema(close, 7)
slowMA  = ema(close, 18)

// Determine alert setups
crossUp   = crossover(fastMA, slowMA)
crossDown = crossunder(fastMA, slowMA)

buySignal   = (crossUp or crossUp[1]) and (low > slowMA)
shortSignal = (crossDown or crossDown[1]) and (high < slowMA)

// Highlight alerts on the chart
bgColour =
     (buySignal and barstate.isrealtime) ? green :
     (shortSignal and barstate.isrealtime) ? red :
     na

signalBuy = (buySignal ) ? true : false
signalSell = (shortSignal ) ? true : false

test = true

test := not test[1]

closesBelowLowerBB = close < lower_BB
closesAboveUpperBB = close > upper_BB

tmptext = "blah"

// Plot values
plot(series=fastMA, color=teal)
plot(series=slowMA, color=orange)

plot(out2, color=black, linewidth = 1)
fill(x1, x2, color = contraction > contraction_value ? black : contraction < contraction_value2 ? yellow: red)

isInRed = contraction < contraction_value and contraction >= contraction_value2
isInYellow = contraction < contraction_value and contraction < contraction_value2

if ( closesBelowLowerBB )
    strategy.order('Buy', strategy.long, buyAmount)

if ( closesAboveUpperBB )
    strategy.close_all()



Más.