Robot de negociación racional impulsado por la estrategia RSI

El autor:¿ Qué pasa?, fecha: 2024-02-19 14:43:34
Las etiquetas:

img

Resumen general

Esta estrategia de negociación incorpora tres indicadores técnicos robustos: índice de fuerza relativa (RSI), bandas de Bollinger y niveles de soporte / resistencia para permitir decisiones comerciales automatizadas.

Estrategia lógica

La lógica central de este robot de negociación se basa en el RSI, las bandas de Bollinger y el análisis de soporte / resistencia.

En primer lugar, el RSI mide la fuerza de la tendencia en curso: un RSI por encima de 70 implica un mercado sobrecomprado mientras que un RSI por debajo de 30 sugiere un mercado sobrevendido.

En segundo lugar, las bandas de Bollinger definen el rango de volatilidad del mercado. Las bandas superior e inferior abarcan el rango de fluctuación normal del mercado. Tocar la banda superior sugiere una zona relativamente alta donde es probable una inversión a la baja. Del mismo modo, tocar la banda inferior indica una zona relativamente baja donde se espera un rebote al alza.

Finalmente, los niveles de soporte y resistencia se pueden derivar de las bandas de Bollinger. El soporte reside alrededor de la banda inferior mientras que la resistencia se cierne alrededor de la banda superior. Esto implica que una tendencia alcista puede encontrar presión de venta alrededor de la resistencia, lo que conduce a una posible caída. Por el contrario, una tendencia bajista puede satisfacer la demanda de compra alrededor del soporte, lo que provoca un rebote técnico.

Al consolidar estos indicadores, la lógica de entrada se define como: ir largo cuando el precio toca la banda inferior (zona de sobreventa) que coincide con el Soporte; ir corto cuando el precio rompe por encima de la banda superior (zona de sobrecompra) con el máximo que excede la Resistencia.

Beneficios clave

  1. Confiabilidad de la señal mediante la combinación de múltiples indicadores

  2. Ejecución totalmente automatizada sin interferencia manual

  3. Alertas en tiempo real para actualizaciones instantáneas en movimiento

  4. Anotaciones de gráficos intuitivos para visualizar los niveles de comercio

  5. Parámetros personalizables para la optimización entre instrumentos y plazos

Control de riesgos

  1. La volatilidad excepcional puede implicar un stop loss. Los niveles razonables de stop loss pueden ayudar a limitar la pérdida máxima.

  2. Los parámetros deben ajustarse en función de los resultados de las pruebas de retroceso para obtener un ajuste óptimo.

  3. Un fallo del sistema puede causar interrupción de la señal o retrasos en la ejecución.

Oportunidades de mejora

  1. Incorporar una lógica de stop loss para restringir aún más el riesgo a la baja.

  2. Introducir reglas de calificación de las posiciones en función del patrimonio neto de las cuentas para una gestión del riesgo más inteligente.

  3. Aprovechar el aprendizaje automático entrenando el modelo en datos históricos para mejorar las capacidades predictivas.

  4. Realizar una optimización paramétrica en varios productos para descubrir los mejores conjuntos de parámetros adaptados a cada producto.

Conclusión

La estrategia demuestra una fuerte adaptabilidad y versatilidad. Al monitorear múltiples indicadores para evaluar las condiciones del mercado, puede identificar con fiabilidad los niveles de inversión de tendencia para la ejecución automatizada. Las mejoras continuas en el algoritmo elevarán el rendimiento de la estrategia para generar constantemente alfa. Una excelente solución de comercio de algo adecuada para el comercio cuantitativo.


/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-06 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("RSI, Bollinger Bands, and Support/Resistance Trading Bot", overlay=true)

// Define RSI parameters
rsiLength = input(14, title="RSI Length")
rsiOverbought = input(70, title="Overbought Level")
rsiOversold = input(30, title="Oversold Level")

// Define Bollinger Bands parameters
bbLength = input(20, title="Bollinger Bands Length")
bbMultiplier = input(2, title="Bollinger Bands Multiplier")

// Calculate RSI
rsiValue = rsi(close, rsiLength)

// Calculate Bollinger Bands
basis = sma(close, bbLength)
upperBand = basis + bbMultiplier * stdev(close, bbLength)
lowerBand = basis - bbMultiplier * stdev(close, bbLength)

// Calculate Support and Resistance based on Bollinger Bands
support = basis - bbMultiplier * stdev(close, bbLength)
resistance = basis + bbMultiplier * stdev(close, bbLength)

// Strategy logic
rsiCondition = rsiValue > rsiOverbought or rsiValue < rsiOversold
touchingUpperBand = close >= upperBand
touchingLowerBand = close <= lowerBand

// Entry conditions
longCondition = touchingLowerBand and low <= support
shortCondition = touchingUpperBand and high >= resistance

// Exit conditions
longExitCondition = crossover(close, basis)
shortExitCondition = crossunder(close, basis)

// Automatic close if moving in opposite direction
if (strategy.position_size > 0 and shortCondition)
    strategy.close("Long")

if (strategy.position_size < 0 and longCondition)
    strategy.close("Short")

// Strategy orders
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)

// Plot entry and exit arrows
plotarrow(series=longCondition ? 1 : na, colorup=color.new(color.green, 0), offset=-1, minheight=5)
plotarrow(series=shortCondition ? 1 : na, colordown=color.new(color.red, 0), offset=-1, minheight=5)
plotarrow(series=longExitCondition ? -1 : na, colorup=color.new(color.red, 0), offset=-1, minheight=5)
plotarrow(series=shortExitCondition ? -1 : na, colordown=color.new(color.green, 0), offset=-1, minheight=5)

// Plot Bollinger Bands on chart
plot(upperBand, title="Upper Band", color=color.red)
plot(lowerBand, title="Lower Band", color=color.green)

// Highlight areas where price touches Bollinger Bands
bgcolor(touchingUpperBand ? color.new(color.red, 90) : na)
bgcolor(touchingLowerBand ? color.new(color.green, 90) : na)

// Plot Support and Resistance
plot(support, title="Support", color=color.blue)
plot(resistance, title="Resistance", color=color.purple)

// Plot RSI on chart
hline(rsiOverbought, "Overbought Level", color=color.red)
hline(rsiOversold, "Oversold Level", color=color.green)
plot(rsiValue, title="RSI", color=color.blue)


Más.