Múltiples indicadores confirman la estrategia de toma de ganancias dinámica del DCA de ruptura de la media móvil

EMA RSI MACD BB DCA HTF
Fecha de creación: 2025-04-11 11:09:00 Última modificación: 2025-04-11 11:09:00
Copiar: 1 Número de Visitas: 341
2
Seguir
319
Seguidores

Múltiples indicadores confirman la estrategia de toma de ganancias dinámica del DCA de ruptura de la media móvil Múltiples indicadores confirman la estrategia de toma de ganancias dinámica del DCA de ruptura de la media móvil

Descripción general

La estrategia utiliza varios indicadores técnicos como el EMA 48, el RSI 14, el MACD y las bandas de Brin para identificar puntos de entrada potenciales, mientras que se implementa un método estructurado de gestión de posiciones y un mecanismo de control de riesgo predeterminado. El núcleo de la estrategia es identificar los puntos de intersección de los precios con el EMA, y usar el RSI, el MACD y las bandas de Brin para confirmar, combinar el análisis de alto marco de tiempo para evitar falsas señales.

Principio de estrategia

El principio de la estrategia se basa en una combinación de múltiples indicadores técnicos, que incluyen principalmente los siguientes componentes clave:

  1. Sistema de condiciones de ingreso

    • El precio tiene que cruzar 48 EMAs, cruzar hacia arriba cuando está más arriba y hacia abajo cuando está vacío.
    • El RSI debe confirmar la intensidad de la dirección (<60 en el caso de los más altos y <40 en el caso de los bajos)
    • La línea MACD debe atravesar la línea de señal para confirmar la dirección del movimiento
    • El precio debe acercarse a la zona de soporte/resistencia anterior
    • El RSI se desvía de la señal en el quinto pico/valo
    • El marco de tiempo alto confirma que este es el segundo punto de apoyo
  2. Gestión de posiciones dinámicas

    • El riesgo inicial se limita al 1-3% de la cuenta
    • El tamaño de la posición sigue la proporción DCA de 1-2-6 para aumentar la posición
    • El primer stop loss se establece en el 1-3% de la posición del punto de entrada y se calcula en una cantidad monetaria
    • Posicionamiento del 1.3% de la actualización de stop loss en el punto de entrada después de la implementación de todos los DCA
  3. Mecanismo de ganancias inteligentes

    • Cuando el precio alcanza un 0.5% de ganancias, cierra una posición del 25%
    • Cierre de la posición del 50% cuando el precio alcanza el 1% de ganancia
    • Tras la segunda ganancia, el stop loss se traslada a la posición principal.

El análisis en profundidad del código muestra que la estrategia también incluye un sistema inteligente de identificación de valles de pico para detectar desviaciones de patrón mediante el seguimiento de los 5 puntos de fluctuación más recientes en el precio y el RSI. El sistema de confirmación de marcos de tiempo altos evita las falsas señales en marcos de tiempo bajos mediante el análisis de los puntos de soporte y resistencia en el gráfico de la línea diaria.

Ventajas estratégicas

Al analizar el código de esta estrategia, podemos resumir las siguientes ventajas:

  1. Sistema de confirmación de varios nivelesLa combinación de EMA, RSI, MACD y las bandas de Brin asegura la alta calidad de los puntos de entrada.

  2. Gestión inteligente de los fondosEl enfoque de la proporción 1-2-6 DCA permite aprovechar el costo promedio de la volatilidad del mercado y limitar la apertura de riesgo general. El riesgo inicial se limita al 1-3% de la cuenta, lo que garantiza que no se produzcan pérdidas catastróficas incluso en el peor de los casos.

  3. Protección de pérdida dinámicaEl mecanismo de detención de pérdidas se adapta a la evolución de la operación, especialmente cuando se obtiene una parte de las ganancias y se transfiere el detenimiento a la posición de capital, lo que equilibra eficazmente la necesidad de proteger las ganancias y permitir un espacio de respiración para el comercio.

  4. Estrategias de ganancias por etapasLa estrategia permite bloquear una parte de las ganancias al cerrar un 25% y un 50% de las posiciones en los puntos de ganancia del 0.5% y el 1% respectivamente, al tiempo que se mantienen las posiciones para capturar los movimientos más grandes del mercado y lograr un equilibrio entre riesgo y ganancia.

  5. Confirmación del marco de tiempo alto: El uso de puntos de soporte y resistencia de los marcos de tiempo más altos para filtrar las señales de negociación, reduciendo el impacto de los ruidos y falsas brechas comunes en los marcos de tiempo más bajos.

Riesgo estratégico

A pesar del diseño de la estrategia, hay varios factores de riesgo a tener en cuenta:

  1. Sensibilidad de los parámetrosEl rendimiento de la estrategia depende en gran medida de la configuración de varios parámetros, incluidos los períodos de EMA, los mínimos del RSI y los niveles de DCA. Pequeñas variaciones de estos parámetros pueden causar diferencias significativas en los resultados de las operaciones y requieren una optimización y retroalimentación cuidadosas.

  2. El riesgo de grandes fluctuacionesA pesar del mecanismo de DCA, los precios pueden superar rápidamente todos los puntos de parada establecidos en un mercado con una gran volatilidad, lo que lleva a pérdidas reales superiores a las esperadas. Para este riesgo, se puede considerar el uso de un tamaño de posición inicial más estricto o suspender la negociación durante una alta volatilidad.

  3. Efecto de superposición de pérdidas continuas: Incluso si el riesgo de una sola transacción es limitado, las pérdidas continuas pueden provocar una caída significativa de la curva de capital. Se recomienda la aplicación de controles de riesgo globales adicionales, como límites de pérdidas máximas diarias o semanales.

  4. La RSI está lejos de la complejidad de la identificaciónLa detección de desviación del RSI en el código depende de la precisión de los datos históricos y puede no ser lo suficientemente confiable en ciertas condiciones de mercado. Se puede considerar el uso de métodos estadísticos más avanzados para confirmar las señales de desviación.

  5. Dependiendo de la liquidez del mercadoEn los mercados de baja liquidez, una gran cantidad de órdenes de DCA puede tener problemas de puntos de deslizamiento que afectan la eficiencia general de la estrategia. El uso de esta estrategia debe limitarse a los mercados de alta liquidez.

Dirección de optimización de la estrategia

Basado en un análisis profundo del código, las siguientes son algunas de las direcciones en las que la estrategia puede ser optimizada:

  1. Ajuste de parámetros dinámicosSe pueden introducir mecanismos de ajuste de parámetros dinámicos basados en la volatilidad del mercado. Por ejemplo, el aumento automático de los requisitos de devaluación del RSI durante períodos de alta volatilidad o el ajuste de la longitud del EMA para adaptarse a diferentes períodos de mercado.

  2. Mejora en la detección de desviaciónLa detección de desviación del RSI actual es relativamente sencilla y puede mejorar la precisión mediante la introducción de algoritmos más complejos, como el uso de la conversión RSI de Fisher o la adición de la confirmación de volumen. Esto reducirá las señales de desviación y mejorará la precisión de la estrategia.

  3. Optimización de las ganancias inteligentesLas ventajas fijas actuales pueden ser mejoradas a ventajas dinámicas basadas en la volatilidad del mercado. Por ejemplo, establecer un objetivo de ganancias más alto durante la alta volatilidad y un objetivo más bajo durante la baja volatilidad para adaptarse a los cambios en las condiciones del mercado.

  4. La administración de fondos se ha refinado.Se puede optimizar la proporción de DCA y los puntos de activación, ajustándose a la estructura del mercado y a la dinámica de la intensidad de la tendencia actual. Por ejemplo, se utiliza una proporción de DCA más agresiva en una tendencia fuerte y más conservadora en una tendencia débil.

  5. Optimización del tiempo de transacciónIntroducción de filtros de tiempo basados en volumen de transacciones y volatilidad, evitando la negociación en momentos de baja actividad. Esto se puede lograr mediante el análisis de datos históricos para determinar las mejores ventanas de tiempo de negociación.

Resumir

La estrategia de DCA Breakthrough Dynamic Stop es un sistema de negociación de línea corta bien diseñado que combina hábilmente varias herramientas de análisis técnico con técnicas avanzadas de gestión de fondos. Trabajando en conjunto con indicadores como EMA, RSI, MACD y Brinbelt, la estrategia es capaz de identificar puntos de entrada de alta probabilidad, al mismo tiempo que utiliza un método DCA estructurado y un mecanismo de stop/stop dinámico para administrar el riesgo y bloquear los beneficios.

Si bien la estrategia tiene ventajas evidentes, que incluyen un control estricto de riesgos, un sistema de confirmación en varios niveles y un mecanismo de ganancias inteligentes, los usuarios deben estar atentos a la sensibilidad de los parámetros y los riesgos derivados de las fuertes fluctuaciones del mercado. La solidez y la rentabilidad de la estrategia se espera que mejore aún más mediante la implementación de las medidas de optimización recomendadas, como el ajuste de parámetros dinámicos, el aumento de la detección de desviación y la optimización de ganancias inteligentes.

Para los comerciantes, la estrategia es la más adecuada para los mercados con suficiente liquidez, y se debe realizar una adecuada retroalimentación histórica y optimización de los parámetros antes de su uso. Con una implementación cuidadosa y un ajuste de monitoreo continuo, este sistema de negociación multicamillado puede convertirse en una poderosa arma en la caja de herramientas de los comerciantes de línea corta.

Código Fuente de la Estrategia
/*backtest
start: 2024-04-11 00:00:00
end: 2025-04-10 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Scalping Strategy with DCA - V2", overlay=true, margin_long=100, margin_short=100)

// Input parameters
emaLength = input.int(48, title="EMA Length", minval=1, group="Main Indicators")
rsiLength = input.int(14, title="RSI Length", minval=1, group="Main Indicators")
macdShortLength = input.int(12, title="MACD Short Length", minval=1, group="Main Indicators")
macdLongLength = input.int(30, title="MACD Long Length", minval=1, group="Main Indicators")
macdSignalLength = input.int(9, title="MACD Signal Length", minval=1, group="Main Indicators")
bbLength = input.int(20, title="Bollinger Bands Length", group="Main Indicators")
bbMult = input.float(2.0, title="Bollinger Bands Multiplier", group="Main Indicators")

// Risk management parameters
initialRiskPercent = input.float(1.0, title="Initial Risk % of Account", minval=0.1, maxval=3.0, step=0.1, group="Risk Management")
stopLossPercent = input.float(1.5, title="Stop Loss % (Unboosted)", minval=0.5, maxval=3.0, step=0.1, group="Risk Management")
fixedSLPercent = input.float(1.3, title="Fixed SL % after full DCA", minval=0.1, maxval=5.0, step=0.1, group="Risk Management")
takeProfitPercent1 = input.float(0.5, title="First Take Profit % (25% Volume)", minval=0.1, group="Risk Management")
takeProfitPercent2 = input.float(1.0, title="Second Take Profit % (50% Volume)", minval=0.1, group="Risk Management")

// DCA parameters
enableDCA = input.bool(true, title="Enable DCA", group="DCA Settings")
dcaLevel1 = input.float(1.0, title="DCA Level 1 % Drop", minval=0.1, group="DCA Settings")
dcaLevel2 = input.float(2.0, title="DCA Level 2 % Drop", minval=0.1, group="DCA Settings")

// Higher Timeframe parameters
higherTF = input.timeframe("D", title="Higher Timeframe for Confirmation", group="Advanced Settings")
useHTFConfirmation = input.bool(true, title="Use Higher Timeframe Confirmation", group="Advanced Settings")

// Debug parameters
showLabels = input.bool(true, title="Show Entry/Exit Labels", group="Visual")
showSL = input.bool(true, title="Show Stop Loss Lines", group="Visual")
showTP = input.bool(true, title="Show Take Profit Lines", group="Visual")

// Calculate indicators
ema = ta.ema(close, emaLength)
rsi = ta.rsi(close, rsiLength)
[macdLine, signalLine, _] = ta.macd(close, macdShortLength, macdLongLength, macdSignalLength)
[middle, upper, lower] = ta.bb(close, bbLength, bbMult)

// Variables for tracking peaks and troughs
var priceHighs = array.new_float(0)
var priceLows = array.new_float(0)
var rsiHighs = array.new_float(0)
var rsiLows = array.new_float(0)

// Track last 5 peaks and troughs for both price and RSI
pivot_high = ta.pivothigh(high, 2, 2)
if not na(pivot_high)
    array.push(priceHighs, pivot_high)
    if array.size(priceHighs) > 5
        array.shift(priceHighs)

pivot_low = ta.pivotlow(low, 2, 2)
if not na(pivot_low)
    array.push(priceLows, pivot_low)
    if array.size(priceLows) > 5
        array.shift(priceLows)

rsi_pivot_high = ta.pivothigh(rsi, 2, 2)
if not na(rsi_pivot_high)
    array.push(rsiHighs, rsi_pivot_high)
    if array.size(rsiHighs) > 5
        array.shift(rsiHighs)

rsi_pivot_low = ta.pivotlow(rsi, 2, 2)
if not na(rsi_pivot_low)
    array.push(rsiLows, rsi_pivot_low)
    if array.size(rsiLows) > 5
        array.shift(rsiLows)

// Check for RSI divergence
rsiDivergenceBullish = array.size(priceLows) >= 5 and array.size(rsiLows) >= 5 and array.get(priceLows, array.size(priceLows) - 1) < array.get(priceLows, array.size(priceLows) - 5) and array.get(rsiLows, array.size(rsiLows) - 1) > array.get(rsiLows, array.size(rsiLows) - 5)

rsiDivergenceBearish = array.size(priceHighs) >= 5 and array.size(rsiHighs) >= 5 and array.get(priceHighs, array.size(priceHighs) - 1) > array.get(priceHighs, array.size(priceHighs) - 5) and array.get(rsiHighs, array.size(rsiHighs) - 1) < array.get(rsiHighs, array.size(rsiHighs) - 5)

// Check if price is near previous high/low (Rule #4)
isNearPrevHigh = array.size(priceHighs) >= 2 and math.abs(high - array.get(priceHighs, array.size(priceHighs) - 2)) / array.get(priceHighs, array.size(priceHighs) - 2) < 0.01
isNearPrevLow = array.size(priceLows) >= 2 and math.abs(low - array.get(priceLows, array.size(priceLows) - 2)) / array.get(priceLows, array.size(priceLows) - 2) < 0.01

// Higher timeframe confirmation (Rule #10)
// Get pivot points from higher timeframe
htf_is_pivot_low = request.security(syminfo.tickerid, higherTF, not na(ta.pivotlow(low, 2, 2)), barmerge.gaps_off, barmerge.lookahead_off)
htf_is_pivot_high = request.security(syminfo.tickerid, higherTF, not na(ta.pivothigh(high, 2, 2)), barmerge.gaps_off, barmerge.lookahead_off)

// Count pivots in higher timeframe to check if this is the 2nd pivot
var htf_pivot_low_count = 0
var htf_pivot_high_count = 0

if htf_is_pivot_low
    htf_pivot_low_count := htf_pivot_low_count + 1
    htf_pivot_low_count := math.min(htf_pivot_low_count, 10)  // Prevent unlimited counting

if htf_is_pivot_high
    htf_pivot_high_count := htf_pivot_high_count + 1
    htf_pivot_high_count := math.min(htf_pivot_high_count, 10)  // Prevent unlimited counting

// Reset counts after a while to maintain relevance
if not htf_is_pivot_low and not htf_is_pivot_high and bar_index % 100 == 0
    htf_pivot_low_count := 0
    htf_pivot_high_count := 0

// Check if this is the 2nd pivot in higher timeframe
isHTFSecondPivotLow = htf_is_pivot_low and htf_pivot_low_count == 2
isHTFSecondPivotHigh = htf_is_pivot_high and htf_pivot_high_count == 2

// Check crossing of Bollinger Bands
crossUpperBand = ta.crossover(close, upper)
crossLowerBand = ta.crossunder(close, lower)

// Entry conditions refined with higher timeframe confirmation
longCondition = close > ema and close[1] <= ema[1] and rsi > 60 and macdLine > signalLine and isNearPrevLow and rsiDivergenceBullish and (not useHTFConfirmation or isHTFSecondPivotLow)
shortCondition = close < ema and close[1] >= ema[1] and rsi < 40 and macdLine < signalLine and isNearPrevHigh and rsiDivergenceBearish and (not useHTFConfirmation or isHTFSecondPivotHigh)

// Additional entry conditions when price crosses Bollinger Bands (Rule #11)
longBBCondition = crossLowerBand and rsi < 30
shortBBCondition = crossUpperBand and rsi > 70

// Calculate position sizes for DCA
initialSize = strategy.equity * initialRiskPercent / 100 / 9  // Initial sizing according to the 1-2-6 rule
dca1Size = initialSize * 2
dca2Size = initialSize * 6

// Calculate SL in money terms (Rule #3)
slMoneyAmount = strategy.equity * initialRiskPercent / 100 * stopLossPercent / 100

// Variables to track DCA levels
var float longEntryPrice = 0.0
var float shortEntryPrice = 0.0
var int longDCACount = 0
var int shortDCACount = 0
var float stopLossLevel = 0.0
var float takeProfit1Level = 0.0
var float takeProfit2Level = 0.0
var float slMoneyValue = 0.0

// Close partial positions at take profit levels
if strategy.position_size > 0
    if close >= takeProfit1Level and takeProfit1Level > 0 and strategy.position_size == initialSize + (longDCACount > 0 ? dca1Size : 0) + (longDCACount > 1 ? dca2Size : 0)
        strategy.order("Long TP1", strategy.short, qty=strategy.position_size * 0.25)
        if showLabels
            label.new(bar_index, high, "TP1 (25%)", color=color.green, textcolor=color.white, style=label.style_label_down)
    
    if close >= takeProfit2Level and takeProfit2Level > 0 and strategy.position_size > initialSize * 0.25
        strategy.order("Long TP2", strategy.short, qty=strategy.position_size * 0.5)
        stopLossLevel := longEntryPrice  // Move SL to breakeven after TP2
        if showLabels
            label.new(bar_index, high, "TP2 (50%) & SL→BE", color=color.green, textcolor=color.white, style=label.style_label_down)

if strategy.position_size < 0
    if close <= takeProfit1Level and takeProfit1Level > 0 and math.abs(strategy.position_size) == initialSize + (shortDCACount > 0 ? dca1Size : 0) + (shortDCACount > 1 ? dca2Size : 0)
        strategy.order("Short TP1", strategy.long, qty=math.abs(strategy.position_size) * 0.25)
        if showLabels
            label.new(bar_index, low, "TP1 (25%)", color=color.red, textcolor=color.white, style=label.style_label_up)
    
    if close <= takeProfit2Level and takeProfit2Level > 0 and math.abs(strategy.position_size) > initialSize * 0.25
        strategy.order("Short TP2", strategy.long, qty=math.abs(strategy.position_size) * 0.5)
        stopLossLevel := shortEntryPrice  // Move SL to breakeven after TP2
        if showLabels
            label.new(bar_index, low, "TP2 (50%) & SL→BE", color=color.red, textcolor=color.white, style=label.style_label_up)

// DCA Logic
if enableDCA and strategy.position_size > 0 and longDCACount < 2
    if close < longEntryPrice * (1 - dcaLevel1/100) and longDCACount == 0
        strategy.entry("Long DCA1", strategy.long, qty=dca1Size)
        longDCACount := 1
        if showLabels
            label.new(bar_index, low, "DCA1", color=color.blue, textcolor=color.white, style=label.style_label_up)
    
    if close < longEntryPrice * (1 - dcaLevel2/100) and longDCACount == 1
        strategy.entry("Long DCA2", strategy.long, qty=dca2Size)
        longDCACount := 2
        // Update SL to fixed percentage after full DCA (Rule #6)
        stopLossLevel := longEntryPrice * (1 - fixedSLPercent/100)
        if showLabels
            label.new(bar_index, low, "DCA2 & SL Update", color=color.blue, textcolor=color.white, style=label.style_label_up)

if enableDCA and strategy.position_size < 0 and shortDCACount < 2
    if close > shortEntryPrice * (1 + dcaLevel1/100) and shortDCACount == 0
        strategy.entry("Short DCA1", strategy.short, qty=dca1Size)
        shortDCACount := 1
        if showLabels
            label.new(bar_index, high, "DCA1", color=color.purple, textcolor=color.white, style=label.style_label_down)
    
    if close > shortEntryPrice * (1 + dcaLevel2/100) and shortDCACount == 1
        strategy.entry("Short DCA2", strategy.short, qty=dca2Size)
        shortDCACount := 2
        // Update SL to fixed percentage after full DCA (Rule #6)
        stopLossLevel := shortEntryPrice * (1 + fixedSLPercent/100)
        if showLabels
            label.new(bar_index, high, "DCA2 & SL Update", color=color.purple, textcolor=color.white, style=label.style_label_down)

// Entry with initial position
if longCondition or longBBCondition
    strategy.close("Short")
    strategy.entry("Long", strategy.long, qty=initialSize)
    longEntryPrice := close
    longDCACount := 0
    shortDCACount := 0
    
    // Set SL based on money value (not percentage)
    slMoneyValue := slMoneyAmount
    // Convert to price level - simplified version
    stopLossLevel := close * (1 - stopLossPercent/100)
    
    takeProfit1Level := close * (1 + takeProfitPercent1/100)
    takeProfit2Level := close * (1 + takeProfitPercent2/100)
    if showLabels
        label.new(bar_index, low, "LONG", color=color.green, textcolor=color.white, style=label.style_label_up)

if shortCondition or shortBBCondition
    strategy.close("Long")
    strategy.entry("Short", strategy.short, qty=initialSize)
    shortEntryPrice := close
    longDCACount := 0
    shortDCACount := 0
    
    // Set SL based on money value (not percentage)
    slMoneyValue := slMoneyAmount
    // Convert to price level - simplified version
    stopLossLevel := close * (1 + stopLossPercent/100)
    
    takeProfit1Level := close * (1 - takeProfitPercent1/100)
    takeProfit2Level := close * (1 - takeProfitPercent2/100)
    if showLabels
        label.new(bar_index, high, "SHORT", color=color.red, textcolor=color.white, style=label.style_label_down)

// Stop Loss
if strategy.position_size > 0 and low <= stopLossLevel
    strategy.close("Long")
    if showLabels
        label.new(bar_index, low, "SL", color=color.red, textcolor=color.white, style=label.style_label_up)

if strategy.position_size < 0 and high >= stopLossLevel
    strategy.close("Short")
    if showLabels
        label.new(bar_index, high, "SL", color=color.red, textcolor=color.white, style=label.style_label_down)

// Market cap and holder % check can't be done directly in TradingView, but we display a reminder
if strategy.position_size != 0 and bar_index % 100 == 0
    label.new(bar_index, close, "Remember: Only trade coins with large market cap and >7% holder ratio", 
              color=color.yellow, textcolor=color.black, style=label.style_label_left)

// Plot indicators - these must be at the global scope in Pine Script v6
plot(ema, color=color.blue, title="48 EMA")
plot(upper, color=color.red, title="Upper BB")
plot(lower, color=color.green, title="Lower BB")
plot(middle, color=color.yellow, title="Middle BB")

// Plot stop loss and take profit levels - conditions need to be part of the plot function in v6
plotSL = showSL and stopLossLevel > 0 ? stopLossLevel : na
plot(plotSL, color=color.red, style=plot.style_circles, linewidth=2, title="Stop Loss")

// TP for long positions
plotTP1Long = showTP and strategy.position_size > 0 and takeProfit1Level > 0 ? takeProfit1Level : na
plot(plotTP1Long, color=color.green, style=plot.style_circles, linewidth=1, title="TP1 Long")

plotTP2Long = showTP and strategy.position_size > 0 and takeProfit2Level > 0 ? takeProfit2Level : na
plot(plotTP2Long, color=color.green, style=plot.style_circles, linewidth=2, title="TP2 Long")

// TP for short positions
plotTP1Short = showTP and strategy.position_size < 0 and takeProfit1Level > 0 ? takeProfit1Level : na
plot(plotTP1Short, color=color.green, style=plot.style_circles, linewidth=1, title="TP1 Short")

plotTP2Short = showTP and strategy.position_size < 0 and takeProfit2Level > 0 ? takeProfit2Level : na
plot(plotTP2Short, color=color.green, style=plot.style_circles, linewidth=2, title="TP2 Short")

// Additional table with strategy information
if barstate.islastconfirmedhistory
    var table infoTable = table.new(position=position.top_right, columns=2, rows=5, bgcolor=color.new(color.black, 70), frame_width=1)
    
    table.cell(infoTable, 0, 0, "Strategy:", bgcolor=color.new(color.blue, 90), text_color=color.white)
    table.cell(infoTable, 1, 0, "Scalping with DCA", text_color=color.white)
    
    table.cell(infoTable, 0, 1, "Initial Risk:", bgcolor=color.new(color.blue, 90), text_color=color.white)
    table.cell(infoTable, 1, 1, str.tostring(initialRiskPercent, "#.##") + "% of account", text_color=color.white)
    
    table.cell(infoTable, 0, 2, "DCA Ratio:", bgcolor=color.new(color.blue, 90), text_color=color.white)
    table.cell(infoTable, 1, 2, "1-2-6", text_color=color.white)
    
    table.cell(infoTable, 0, 3, "SL After DCA:", bgcolor=color.new(color.blue, 90), text_color=color.white)
    table.cell(infoTable, 1, 3, str.tostring(fixedSLPercent, "#.##") + "%", text_color=color.white)
    
    table.cell(infoTable, 0, 4, "REMINDERS:", bgcolor=color.new(color.red, 90), text_color=color.white)
    table.cell(infoTable, 1, 4, "Only trade coins with market cap and >7% holder ratio", text_color=color.white)