En la carga de los recursos... Cargando...

Sistema de estrategia de mediación dinámica de costes basado en bandas de Bollinger y RSI

El autor:¿ Qué pasa?, Fecha: 2024-11-27 16:37:12
Las etiquetas:- ¿ Qué?Indicador de riesgoDCALa SMATP

img

Resumen general

Esta estrategia es un sistema de negociación cuantitativo que combina bandas de Bollinger, índice de fortaleza relativa (RSI) y promedio de costos dinámicos (DCA). La estrategia implementa la creación de posiciones automáticas a través de reglas establecidas de gestión de dinero durante las fluctuaciones del mercado, al tiempo que integra indicadores técnicos para la determinación de señales de compra / venta para lograr una ejecución de riesgos controlada. El sistema también incluye lógica de toma de ganancias y funcionalidad de seguimiento de ganancias acumuladas para un monitoreo y gestión efectivos del rendimiento comercial.

Principios de estrategia

La estrategia se basa en los siguientes componentes fundamentales:

  1. Bandas de Bollinger para determinar los rangos de volatilidad de los precios, considerando comprar en la banda inferior y vender en la banda superior
  2. RSI para confirmar condiciones de sobrecompra/sobreventa, confirmar sobreventa por debajo de 25 y sobrecompra por encima de 75
  3. El módulo DCA calcula dinámicamente los tamaños de las posiciones basándose en el patrimonio neto de la cuenta para la gestión de capital adaptativa
  4. El módulo de obtención de beneficios establece un objetivo de 5% para el cierre automático de posiciones
  5. El seguimiento del estado del mercado calcula los cambios del mercado de 90 días para evaluar las tendencias generales
  6. El seguimiento de las ganancias acumuladas registra las ganancias/pérdidas de cada operación para la evaluación del rendimiento de la estrategia

Ventajas estratégicas

  1. La validación cruzada de múltiples indicadores técnicos mejora la fiabilidad de la señal
  2. La gestión dinámica de las posiciones evita los riesgos de las posiciones fijas
  3. Condiciones razonables de obtención de beneficios para asegurar beneficios oportunos
  4. Las capacidades de seguimiento de las tendencias del mercado ayudan a comprender el panorama general
  5. Un sistema integral de seguimiento de los beneficios facilita el análisis de la estrategia
  6. Un sistema de alerta bien configurado proporciona oportunidades comerciales en tiempo real

Riesgos estratégicos

  1. Los mercados agitados pueden desencadenar señales frecuentes que aumentan los costos de negociación
  2. Los indicadores de RSI pueden retrasarse en los mercados de tendencia
  3. El porcentaje fijo de ganancias puede salir demasiado pronto en tendencias fuertes
  4. La estrategia de DCA puede causar importantes reducciones en tendencias bajistas prolongadas Recomendaciones para la gestión de riesgos:
  • Establecer los límites máximos de posición
  • Ajuste dinámico de los parámetros en función de la volatilidad del mercado
  • Añadir filtros de tendencia
  • Implementar una estrategia escalonada de obtención de beneficios

Direcciones para la optimización de la estrategia

  1. Optimización dinámica de parámetros:
  • Los parámetros de Bollinger Bands se adaptan a la volatilidad
  • Los umbrales del índice de rentabilidad variable varían según los ciclos del mercado
  • La asignación de DCA se ajusta con el tamaño de la cuenta
  1. Mejoramiento del sistema de señal:
  • Añadir confirmación de volumen
  • Incluir el análisis de tendencias
  • Integrar la validación cruzada de indicadores técnicos adicionales
  1. Mejora del control de riesgos:
  • Implementar el stop-loss dinámico
  • Añadir el control de extracción máxima
  • Establecer límites de pérdida diaria

Resumen de las actividades

La estrategia construye un sistema de negociación integral a través del análisis técnico combinado y los métodos de gestión de dinero. Sus fortalezas se encuentran en la confirmación de múltiples señales y la gestión de riesgos exhaustiva, aunque todavía requiere pruebas y optimización extensas en el comercio en vivo. A través de la mejora continua en la configuración de parámetros e indicadores auxiliares adicionales, la estrategia muestra promesa de un rendimiento estable en el comercio real.


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

//@version=5
strategy("Combined BB RSI with Cumulative Profit, Market Change, and Futures Strategy (DCA)", shorttitle="BB RSI Combined DCA Strategy", overlay=true)

// Input Parameters
length = input.int(20, title="BB Length")  // Adjusted BB length
mult = input.float(2.5, title="BB Multiplier")  // Adjusted BB multiplier
rsiLength = input.int(14, title="RSI Length")  // Adjusted RSI length
rsiBuyLevel = input.int(25, title="RSI Buy Level")  // Adjusted RSI Buy Level
rsiSellLevel = input.int(75, title="RSI Sell Level")  // Adjusted RSI Sell Level
dcaPositionSizePercent = input.float(1, title="DCA Position Size (%)", tooltip="Percentage of equity to use in each DCA step")
takeProfitPercentage = input.float(5, title="Take Profit (%)", tooltip="Take profit percentage for DCA strategy")

// Calculate DCA position size
equity = strategy.equity  // Account equity
dcaPositionSize = (equity * dcaPositionSizePercent) / 100  // DCA position size as percentage of equity

// Bollinger Bands Calculation
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
upper = basis + dev
lower = basis - dev

// RSI Calculation
rsi = ta.rsi(close, rsiLength)

// Plotting Bollinger Bands and RSI levels
plot(upper, color=color.red, title="Bollinger Upper")
plot(lower, color=color.green, title="Bollinger Lower")
hline(rsiBuyLevel, "RSI Buy Level", color=color.green)
hline(rsiSellLevel, "RSI Sell Level", color=color.red)

// Buy and Sell Signals
buySignal = (rsi < rsiBuyLevel and close <= lower)
sellSignal = (rsi > rsiSellLevel and close >= upper)

// DCA Strategy: Enter Long or Short based on signals with calculated position size
if (buySignal)
    strategy.entry("DCA Buy", strategy.long)

if (sellSignal)
    strategy.entry("DCA Sell", strategy.short)

// Take Profit Logic
if (strategy.position_size > 0)  // If long
    strategy.exit("Take Profit Long", from_entry="DCA Buy", limit=close * (1 + takeProfitPercentage / 100))

if (strategy.position_size < 0)  // If short
    strategy.exit("Take Profit Short", from_entry="DCA Sell", limit=close * (1 - takeProfitPercentage / 100))

// Plot Buy/Sell Signals on the chart
plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", textcolor=color.white)
plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", textcolor=color.white)

// Alerts for Buy/Sell Signals
alertcondition(buySignal, title="Buy Alert", message="Buy Signal Detected")
alertcondition(sellSignal, title="Sell Alert", message="Sell Signal Detected")

// Cumulative Profit Calculation
var float buyPrice = na
var float profit = na
var float cumulativeProfit = 0.0  // Cumulative profit tracker

if (buySignal)
    buyPrice := close
if (sellSignal and not na(buyPrice))
    profit := (close - buyPrice) / buyPrice * 100
    cumulativeProfit := cumulativeProfit + profit  // Update cumulative profit
    label.new(bar_index, high, text="P: " + str.tostring(profit, "#.##") + "%", color=color.blue, style=label.style_label_down)
    buyPrice := na  // Reset buyPrice after sell

// Plot cumulative profit on the chart
var label cumulativeLabel = na
if (not na(cumulativeProfit))
    if not na(cumulativeLabel)
        label.delete(cumulativeLabel)
    cumulativeLabel := label.new(bar_index, high + 10, text="Cumulative Profit: " + str.tostring(cumulativeProfit, "#.##") + "%", color=color.purple, style=label.style_label_up)

// Market Change over 3 months Calculation
threeMonthsBars = 3 * 30 * 24  // Approximation of 3 months in bars (assuming 1 hour per bar)
priceThreeMonthsAgo = request.security(syminfo.tickerid, "D", close[threeMonthsBars])
marketChange = (close - priceThreeMonthsAgo) / priceThreeMonthsAgo * 100

// Plot market change over 3 months
var label marketChangeLabel = na
if (not na(marketChange))
    if not na(marketChangeLabel)
        label.delete(marketChangeLabel)
    marketChangeLabel := label.new(bar_index, high + 20, text="Market Change (3 months): " + str.tostring(marketChange, "#.##") + "%", color=color.orange, style=label.style_label_up)

// Both labels (cumulative profit and market change) are displayed simultaneously
var label infoLabel = na
if (not na(cumulativeProfit) and not na(marketChange))
    if not na(infoLabel)
        label.delete(infoLabel)
    infoLabel := label.new(bar_index, high + 30, text="Cumulative Profit: " + str.tostring(cumulativeProfit, "#.##") + "% | Market Change (3 months): " + str.tostring(marketChange, "#.##") + "%", color=color.purple, style=label.style_label_upper_right)


Relacionados

Más.