DCA (Dollar Cost Averaging)

Dollar Cost Averaging (DCA) allows your Signal Bot to scale into positions with multiple entries, reducing the impact of price volatility on your overall entry price.

What is DCA?

Instead of entering a position with a single order, DCA splits your entry across multiple levels. As price moves against your initial entry, additional orders are placed at lower prices (for longs) or higher prices (for shorts), lowering your average entry price.

Entry Level 1: $50,000 (25% of position)
Entry Level 2: $48,500 (25% of position) - 3% below Level 1
Entry Level 3: $47,000 (25% of position) - 6% below Level 1
Entry Level 4: $45,500 (25% of position) - 9% below Level 1

Average Entry: $47,750 (instead of $50,000)

Enabling DCA

During Bot Creation

  1. Navigate to Signal Bots > Create Bot
  2. Complete the basic configuration steps
  3. In the DCA Settings step, toggle Enable DCA
  4. Configure your entry levels and sizes

For Existing Bots

  1. Go to your Signal Bot's detail page
  2. Click Settings > DCA Settings
  3. Toggle Enable DCA
  4. Configure and save

DCA Configuration

Entry Levels

Define how many entries and at what price deviations:

ParameterDescriptionExample
Level NumberThe entry order (1, 2, 3...)Level 2
Size PercentagePortion of total position25%
Price DeviationDistance from Level 13%

Example Configuration

Level 1: 25% at entry price (0% deviation)
Level 2: 25% at -3% from entry
Level 3: 25% at -6% from entry
Level 4: 25% at -9% from entry

Maximum Entry Levels

Set the maximum number of DCA entries allowed:

  • 1-10: Conservative, limits exposure
  • 10-50: Moderate scaling
  • 0: Unlimited entries (use with caution)

Warning: Setting max levels to 0 (unlimited) can lead to significant position sizes. Always use proper risk management.

Sending DCA Signals via Webhook

Basic DCA Entry Signal

{
  "action": "buy",
  "symbol": "BTCUSDT",
  "dca": true
}

DCA with Custom Levels

{
  "action": "buy",
  "symbol": "BTCUSDT",
  "dca": true,
  "dcaLevel": 2,
  "size": "25%"
}

DCA Signal Fields

FieldTypeDescription
dcabooleanEnable DCA for this signal
dcaLevelnumberSpecify which DCA level (1, 2, 3...)
sizestringSize for this specific entry

TradingView Pine Script with DCA

//@version=5
strategy("DCA Strategy", overlay=true)

// Entry conditions
longCondition = ta.crossover(ta.sma(close, 10), ta.sma(close, 50))

// DCA conditions (price drops from entry)
dcaLevel2 = strategy.position_size > 0 and close < strategy.position_avg_price * 0.97
dcaLevel3 = strategy.position_size > 0 and close < strategy.position_avg_price * 0.94

if longCondition
    strategy.entry("Long", strategy.long,
        alert_message='{"action":"buy","symbol":"{{ticker}}","dca":true,"dcaLevel":1}')

if dcaLevel2
    strategy.entry("DCA2", strategy.long,
        alert_message='{"action":"buy","symbol":"{{ticker}}","dca":true,"dcaLevel":2}')

if dcaLevel3
    strategy.entry("DCA3", strategy.long,
        alert_message='{"action":"buy","symbol":"{{ticker}}","dca":true,"dcaLevel":3}')

Stop-Loss Management

DCA positions require special stop-loss handling since your average entry price changes with each level.

Stop-Loss Modes

The stop-loss mode is configured by the strategy author and determines how your stop-loss adjusts as DCA entries are added:

ModeDescription
NoneNo automatic stop-loss management
StaticKeep the original stop-loss price
AverageMove stop to average entry minus X%
BreakevenMove stop to average entry price
TrailingFollow price by X% distance
ATRVolatility-based stop using ATR indicator

How Stop-Loss Updates Work

  1. Level 1 Entry: Initial stop-loss is set
  2. Level 2 Entry: Average entry recalculated, stop-loss adjusted
  3. Level 3 Entry: Average entry recalculated, stop-loss adjusted
  4. And so on...

Example with Average Mode (2% adjustment):

Level 1: Entry $50,000, Stop $49,000 (2% below)
Level 2: Entry $48,500, Avg $49,250, Stop $48,265 (2% below avg)
Level 3: Entry $47,000, Avg $48,500, Stop $47,530 (2% below avg)

Best Practices

Position Sizing

  • Keep total position size within your risk tolerance
  • Each DCA level adds to your exposure
  • Calculate maximum position: Level 1 Size + Level 2 Size + ... + Level N Size

Deviation Spacing

  • Tight spacing (1-2%): More entries, better average, higher risk
  • Wide spacing (5-10%): Fewer entries, catches larger dips
  • Match spacing to asset volatility

Risk Management

  1. Set maximum levels - Don't allow unlimited entries
  2. Use stop-loss - Protect against trend reversals
  3. Monitor exposure - Track total position size
  4. Test on paper - Validate strategy before live trading

DCA vs Single Entry

AspectSingle EntryDCA
Entry PriceFixed at signalAveraged across levels
Capital UsageAll at onceSpread over time
Risk ExposureFull immediatelyGradual increase
Best ForStrong signalsUncertain entries
ComplexitySimpleMore complex

Monitoring DCA Positions

Dashboard View

Your Signal Bot dashboard shows:

  • Current DCA Level - Which level you're at
  • Average Entry Price - Your weighted average
  • Total Position Size - Sum of all entries
  • Active Stop-Loss - Current stop price

Trade History

Each DCA entry appears as a separate trade linked by a position group ID, allowing you to track the full DCA sequence.

Troubleshooting

DCA Not Triggering

  • Verify DCA is enabled in bot settings
  • Check that max levels hasn't been reached
  • Ensure price deviation conditions are met

Incorrect Average Price

  • Confirm all entry sizes are correct
  • Verify no partial fills affected calculations
  • Check trade history for all entries

Stop-Loss Not Updating

  • Verify stop-loss mode is not set to "None" or "Static"
  • Check that the strategy supports dynamic stop-loss
  • Review stop-loss history in position details

Next Steps