Estrategia configurable BB+RSI+Aroon


Fecha de creación: 2023-09-21 15:05:38 Última modificación: 2023-09-21 15:05:38
Copiar: 0 Número de Visitas: 739
1
Seguir
1617
Seguidores

Descripción general

La estrategia combina las bandas de Brin (BB), el índice de relative strength (RSI) y el indicador Aroon para aprovechar las ventajas de cada indicador y proporcionar una señal de entrada y salida eficiente para el comercio.

Principio de estrategia

  1. Cuando el precio rompe la banda de Brin, muestra una señal múltiple.

  2. Cuando el RSI atraviesa la línea de sobreventa, muestra una señal de confirmación múltiple.

  3. Aroon muestra una señal de confirmación múltiple cuando se desliza sobre ella.

  4. Cuando se cumplen las tres condiciones, se hace más.

  5. Cuando el precio rompe la banda de Brin, se muestra la señal de cabeza en blanco.

  6. Cuando el RSI cruza la línea de sobreventa, muestra una señal de confirmación en blanco.

  7. Cuando Aroon se pone de nuevo, muestra la señal de confirmación de la cabeza en blanco.

  8. Cuando se cumplen las tres condiciones anteriores, se vacía.

Ventajas estratégicas

  • Parámetros configurables, optimizados para la combinación óptima
  • Identificación de varios indicadores para mejorar la precisión de la señal
  • Aplicable en muchos entornos de mercado
  • Una lógica de transacción sencilla y fácil de implementar

Riesgo estratégico

  • Optimización incorrecta de los parámetros puede generar demasiadas señales erróneas
  • Los indicadores múltiples se retrasan y podrían perder una rápida reversión
  • La operación inversa aumenta la frecuencia y el costo de las transacciones

Dirección de optimización

  • Múltiples mercados, múltiples marcos de tiempo de retroalimentación para encontrar los mejores parámetros
  • Evaluar el efecto de cada indicador y eliminarlo si es necesario
  • Intento de optimización de parámetros basados en aprendizaje automático
  • Optimizar el código de la política y reducir el volumen de cálculo
  • Prueba de diferentes parámetros de tiempo de tenencia

Resumir

La estrategia combina las ventajas de varios indicadores para formar una señal de entrada más fuerte. La optimización de parámetros, la eliminación de indicadores redundantes y el código de optimización pueden elevar la eficacia de la estrategia a un nivel superior. En general, la estrategia ofrece una solución personalizada eficaz para el comercio.

Código Fuente de la Estrategia
/*backtest
start: 2023-09-13 00:00:00
end: 2023-09-20 00:00:00
period: 5m
basePeriod: 1m
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/
// Developed by Marco Jarquin as part of Arkansas 22 Project for Binary Options
// CBRA for binary options (Configurable Bollinger Bands, RSI and Aroon)

//@version=4
// ====================================================================================

//strategy("A22.CBRA.Strat", overlay=true, initial_capital=10000, currency="USD", calc_on_every_tick=true, default_qty_type=strategy.cash, default_qty_value=4000, commission_type=strategy.commission.cash_per_order, commission_value=0)

// Aroonish Parameters
// ====================================================================================

Aroonish_length = input(4, minval=1, title="Aroonish Lenght")
Aroonish_ConfVal = input(50, minval=0, maxval=100, step=25, title="Aroonish Confirmation Value")
Aroonish_upper = 100 * (-highestbars(high, Aroonish_length+1) + Aroonish_length)/Aroonish_length
Aroonish_lower = 100 * (-lowestbars(low, Aroonish_length+1) + Aroonish_length)/Aroonish_length

// Aroonish confirmations
// ====================================================================================
Aroonish_ConfLong = (Aroonish_lower >= Aroonish_ConfVal) and (Aroonish_upper < Aroonish_lower)
Aroonish_ConfShrt = (Aroonish_upper >= Aroonish_ConfVal) and (Aroonish_upper > Aroonish_lower)

plotshape(crossover(Aroonish_lower, Aroonish_upper), color = color.red, style = shape.triangledown, location = location.abovebar, size = size.auto, title = "Ar-B")
plotshape(crossover(Aroonish_upper, Aroonish_lower), color = color.green, style = shape.triangleup, location = location.belowbar, size = size.auto, transp = 0, title = "Ar-S")

// RSI Parameters
// ====================================================================================
RSI_length = input(4, title="RSI Lenght")
RSI_overSold = input(20, title="RSI Oversold Limit")
RSI_overBought = input(80, title="RSI Overbought Limit" )

RSI = rsi(close, RSI_length)

plotshape(crossover(RSI, RSI_overSold), color = color.orange, style = shape.square, location = location.belowbar, size = size.auto, title = "RSI-B")
plotshape(crossunder(RSI, RSI_overBought), color = color.orange, style = shape.square, location = location.abovebar, size = size.auto, transp = 0, title = "RSI-S")

// Bollinger Parameters
// ====================================================================================
BB_length = input(20, minval=1, title="Bollinger Lenght")
BB_mult = input(2.5, minval=0.1, maxval=50, step=0.1, title="Bollinger Std Dev")
// BB_bars = input(3, minval=1, maxval=5, title="Check bars after crossing")

BB_basis = sma(close, BB_length)
BB_dev = BB_mult * stdev(close, BB_length)

BB_upper = BB_basis + BB_dev
BB_lower = BB_basis - BB_dev

p1 = plot(BB_upper, color=color.blue)
p2 = plot(BB_lower, color=color.blue)

// Bars to have the operation open
// ====================================================================================
nBars = input(3, minval=1, maxval=30, title="Bars to keep the operation open")

// Strategy condition short or long
// ====================================================================================
ConditionShrt = ((crossunder(close, BB_upper) or crossunder(close[1], BB_upper[1])) and Aroonish_ConfShrt) and (crossunder(RSI, RSI_overBought) or crossunder(RSI[1], RSI_overBought[1]))
ConditionLong = ((crossover(close, BB_lower) or crossover(close[1], BB_lower[1])) and Aroonish_ConfLong) and (crossover(RSI, RSI_overSold) or crossover(RSI[1], RSI_overSold[1]))

plotshape(crossover(close, BB_lower), color = color.blue, style = shape.circle, location = location.belowbar, size = size.auto, title = "BB-B")
plotshape(crossunder(close, BB_upper), color = color.blue, style = shape.circle, location = location.abovebar, size = size.auto, transp = 0, title = "BB-S")


// Make input options that configure backtest date range
// ====================================================================================
iMo = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12)
iDy = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31)
iYr = input(title="Start Year", type=input.integer, defval=(2020), minval=1800, maxval=2100)

eMo = input(title="End Month", type=input.integer, defval=1, minval=1, maxval=12)
eDy = input(title="End Date", type=input.integer, defval=1, minval=1, maxval=31)
eYr = input(title="End Year", type=input.integer, defval=(2021), minval=1800, maxval=2100)

// Look if the close time of the current bar falls inside the date range
// ====================================================================================
inDateRange = true


// Evaluates conditions to enter short or long
// ====================================================================================
if (inDateRange and ConditionLong)
    strategy.entry("A22.L", strategy.long)

if (inDateRange and ConditionLong[nBars])
    strategy.close("A22.L", comment="A22.L Exit")
    
if (inDateRange and ConditionShrt)
    strategy.entry("A22.S", strategy.short)

if (inDateRange and ConditionShrt[nBars])
    strategy.close("A22.S", comment="A22.S Exit")

if (not inDateRange)
    strategy.close_all()