Plusieurs indicateurs confirment la stratégie dynamique de prise de bénéfices de DCA consistant à briser la moyenne mobile

EMA RSI MACD BB DCA HTF
Date de création: 2025-04-11 11:09:00 Dernière modification: 2025-04-11 11:09:00
Copier: 1 Nombre de clics: 341
2
Suivre
319
Abonnés

Plusieurs indicateurs confirment la stratégie dynamique de prise de bénéfices de DCA consistant à briser la moyenne mobile Plusieurs indicateurs confirment la stratégie dynamique de prise de bénéfices de DCA consistant à briser la moyenne mobile

Aperçu

La stratégie utilise plusieurs indicateurs techniques, tels que l’EMA 48, le RSI 14, le MACD et les bandes de Bryn pour identifier les points d’entrée potentiels, tout en mettant en œuvre une méthode de gestion de position structurée et un mécanisme de contrôle des risques prédéfini. Le cœur de la stratégie est d’identifier les points de croisement des prix avec l’EMA et de les confirmer à l’aide du RSI, du MACD et des bandes de Bryn, en combinant une analyse à haute période pour éviter les faux signaux.

Principe de stratégie

Le principe de la stratégie est basé sur la confirmation d’une combinaison de multiples indicateurs techniques, comprenant principalement les composants clés suivants:

  1. Système de conditions d’entrée

    • Le prix doit traverser une EMA de 48 cycles, en hausse en cas de hausse et en baisse en cas de baisse.
    • Le RSI doit confirmer l’intensité de la direction (< 60 pour le multi-points et < 40 pour le vide).
    • La ligne MACD doit traverser la ligne de signal pour confirmer la direction du mouvement
    • Le prix doit être proche de la zone de support/résistance précédente
    • Le RSI s’écarte du signal au niveau du 5e sommet/vallée
    • Le cadre de temps élevé confirme que c’est le deuxième point d’appui
  2. Gestion dynamique des positions

    • Le risque initial est limité à 1 à 3% du compte.
    • La taille de la position suit le ratio DCA 1-2-6 pour la prise de position
    • Le premier arrêt de perte est fixé à 1 à 3% du point d’entrée, calculé en termes monétaires
    • Mise à jour de stop loss à la position 1.3% du point d’entrée après déploiement de tous les DCA
  3. Le mécanisme de profit intelligent

    • Fermeture de 25% des positions lorsque le prix atteint une marge de 0,5%
    • Fermer 50% de position lorsque le prix atteint 1% de profit
    • Après le deuxième gain, le stop-loss est déplacé vers la position de couverture.

L’analyse en profondeur du code a révélé que la stratégie comprenait également un système intelligent de reconnaissance de la vallée du pic pour détecter les déviations de modèle en suivant les 5 derniers points de fluctuation du prix et du RSI. Le système de confirmation des hautes périodes évitait les faux signaux sur les basses périodes en analysant les points de soutien et de résistance sur le graphique de la ligne solaire.

Avantages stratégiques

En analysant plus en profondeur le code de cette stratégie, nous pouvons résumer les avantages notables suivants:

  1. Système de vérification à plusieurs niveauxL’utilisation combinée de l’EMA, du RSI, du MACD et des bandes de Brin assure une qualité d’entrée élevée.

  2. Une gestion de fonds intelligenteL’approche du ratio 1-2-6 DCA permet d’exploiter le coût moyen de la volatilité du marché tout en limitant l’ouverture de risque globale. Le risque initial est limité à 1 à 3% du compte, ce qui garantit qu’aucune perte catastrophique ne se produira même dans le pire des cas.

  3. Protégé contre les dommages: Le mécanisme de stop-loss s’adapte à l’évolution de la transaction, en particulier lorsque le stop-loss est déplacé vers la position de garantie après avoir obtenu une partie des bénéfices, ce qui équilibre efficacement la protection des bénéfices et la nécessité de laisser de la place à la transaction.

  4. Stratégie de profit par étapesEn fermant respectivement 25% et 50% des positions à des marges de 0,5% et 1%, la stratégie permet de verrouiller une partie des bénéfices tout en conservant les positions pour capturer les mouvements plus importants du marché et atteindre un équilibre entre risque et rendement.

  5. Confirmation de la haute période: Utilisation des points de support et de résistance des périodes de temps plus élevées pour filtrer les signaux de négociation, réduisant ainsi les effets du bruit et des faux-breaks courants sur les périodes de temps plus basses.

Risque stratégique

Malgré la conception minutieuse de cette stratégie, il y a plusieurs facteurs de risque à prendre en compte:

  1. Paramètre SensibilitéLa performance d’une stratégie est fortement dépendante de plusieurs paramètres, y compris les cycles EMA, les seuils RSI et les niveaux DCA. Des variations mineures de ces paramètres peuvent entraîner des variations significatives dans les résultats des transactions et nécessitent une optimisation et une retracement soigneuses.

  2. Le risque d’une forte volatilité: Malgré le mécanisme DCA, les prix peuvent rapidement dépasser tous les points de perte établis en cas de forte volatilité du marché, entraînant des pertes réelles supérieures aux attentes. Pour ce risque, il est possible d’envisager d’utiliser une taille de position initiale plus stricte ou de suspendre la négociation pendant une période de forte volatilité.

  3. Effets cumulatifs des pertes consécutives: Même si le risque d’une transaction individuelle est limité, des pertes consécutives peuvent entraîner une baisse significative de la courbe de fonds. Il est recommandé d’appliquer des contrôles de risque globaux supplémentaires, tels que des limites de perte maximale quotidienne ou hebdomadaire.

  4. La complexité d’identifier les ISR: La détection de la déviation du RSI dans le code dépend de l’exactitude des données historiques et peut ne pas être suffisamment fiable dans certaines conditions de marché. L’utilisation de méthodes statistiques plus avancées pour confirmer les signaux de déviation peut être envisagée.

  5. Dépendance à la liquidité du marché: Dans les marchés à faible liquidité, un grand nombre d’ordres DCA peuvent être confrontés à des problèmes de points de glissement, ce qui affecte l’efficacité globale de la stratégie. L’utilisation de cette stratégie devrait être limitée aux marchés à forte liquidité.

Orientation de l’optimisation de la stratégie

Sur la base d’une analyse approfondie du code, voici quelques pistes d’optimisation de cette stratégie:

  1. Ajustement des paramètres dynamiquesIl est possible d’introduire des mécanismes d’ajustement des paramètres dynamiques basés sur la volatilité du marché. Par exemple, augmenter automatiquement les exigences de dépréciation du RSI pendant les périodes de forte volatilité ou ajuster la longueur de l’EMA pour s’adapter à différents cycles de marché. De tels mécanismes d’adaptation peuvent améliorer la stabilité de la stratégie dans différents environnements de marché.

  2. Renforcement de la déviationLe décalage RSI actuel est relativement simple à détecter et peut être amélioré par l’introduction d’algorithmes plus complexes, tels que la conversion RSI de Fisher ou l’ajout d’une confirmation de volume. Cela réduira les signaux de désinformation et améliorera la précision de la stratégie.

  3. Optimisation de la rentabilité par l’intelligenceLes avantages fixes actuels peuvent être améliorés en avantages dynamiques basés sur la volatilité du marché. Par exemple, fixer des objectifs de profit plus élevés pendant les périodes de forte volatilité et des objectifs plus bas pendant les périodes de faible volatilité pour s’adapter aux conditions changeantes du marché.

  4. Une gestion plus fine des fondsIl est possible d’optimiser le ratio et le point de déclenchement du DCA en fonction de la structure du marché et de la dynamique de l’intensité de la tendance actuelle. Par exemple, un ratio de DCA plus radical est utilisé dans les tendances fortes et plus conservateur dans les tendances faibles.

  5. Optimisation du temps de négociation: Introduction de filtres temporels basés sur le volume et la volatilité des transactions, afin d’éviter les transactions pendant les périodes de faible activité. Ceci peut être réalisé en analysant les données historiques et en déterminant les meilleures fenêtres de temps de transaction.

Résumer

La stratégie d’arrêt dynamique DCA est un système de négociation de courte ligne bien conçu qui combine habilement plusieurs outils d’analyse technique avec des techniques de gestion de fonds avancées. En travaillant en synergie avec des indicateurs tels que l’EMA, le RSI, le MACD et le Brin Belt, la stratégie est capable d’identifier des points d’entrée à haute probabilité, tout en utilisant une méthode DCA structurée et un mécanisme d’arrêt/arrêt dynamique pour gérer les risques et bloquer les bénéfices.

Bien que la stratégie présente des avantages évidents, notamment une maîtrise stricte des risques, un système de confirmation à plusieurs niveaux et un mécanisme de profit intelligent, les utilisateurs doivent rester vigilants face à la sensibilité des paramètres et aux risques liés aux fortes fluctuations du marché. La robustesse et la rentabilité de la stratégie devraient être encore améliorées par la mise en œuvre des mesures d’optimisation recommandées, telles que l’ajustement des paramètres dynamiques, l’amélioration de la détection des écarts et l’optimisation des bénéfices intelligents.

Pour les traders, cette stratégie est la mieux adaptée à un marché suffisamment liquide et doit faire l’objet d’un suivi historique et d’une optimisation des paramètres avant d’être utilisée. Avec une mise en œuvre prudente et un ajustement de la surveillance continue, ce système de négociation à plusieurs niveaux peut devenir une arme puissante dans la boîte à outils des traders de courte ligne.

Code source de la stratégie
/*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)