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
- Navigate to Signal Bots > Create Bot
- Complete the basic configuration steps
- In the DCA Settings step, toggle Enable DCA
- Configure your entry levels and sizes
For Existing Bots
- Go to your Signal Bot's detail page
- Click Settings > DCA Settings
- Toggle Enable DCA
- Configure and save
DCA Configuration
Entry Levels
Define how many entries and at what price deviations:
| Parameter | Description | Example |
|---|---|---|
| Level Number | The entry order (1, 2, 3...) | Level 2 |
| Size Percentage | Portion of total position | 25% |
| Price Deviation | Distance from Level 1 | 3% |
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
| Field | Type | Description |
|---|---|---|
dca | boolean | Enable DCA for this signal |
dcaLevel | number | Specify which DCA level (1, 2, 3...) |
size | string | Size 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:
| Mode | Description |
|---|---|
| None | No automatic stop-loss management |
| Static | Keep the original stop-loss price |
| Average | Move stop to average entry minus X% |
| Breakeven | Move stop to average entry price |
| Trailing | Follow price by X% distance |
| ATR | Volatility-based stop using ATR indicator |
How Stop-Loss Updates Work
- Level 1 Entry: Initial stop-loss is set
- Level 2 Entry: Average entry recalculated, stop-loss adjusted
- Level 3 Entry: Average entry recalculated, stop-loss adjusted
- 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
- Set maximum levels - Don't allow unlimited entries
- Use stop-loss - Protect against trend reversals
- Monitor exposure - Track total position size
- Test on paper - Validate strategy before live trading
DCA vs Single Entry
| Aspect | Single Entry | DCA |
|---|---|---|
| Entry Price | Fixed at signal | Averaged across levels |
| Capital Usage | All at once | Spread over time |
| Risk Exposure | Full immediately | Gradual increase |
| Best For | Strong signals | Uncertain entries |
| Complexity | Simple | More 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
- Webhook Setup - Configure webhook integration
- Risk Management - Position sizing guidelines
- TradingView Integration - Alert setup