DCA(美元成本平均法)系统 - 用户指南

目录

  1. 概述
  2. 快速开始
  3. 配置参考
  4. DCA 工作原理
  5. 真实案例
  6. 最佳实践
  7. 风险管理
  8. 故障排除
  9. 常见问题

概述

什么是 DCA?

美元成本平均法(Dollar Cost Averaging,简称 DCA)是一种交易策略,当市场走势与你的初始仓位相反时,会在预先设定的价格水平自动挂单追加买入/卖出。与一次性全仓不同,DCA 可以帮助你:

  • 降低平均入场成本(在 LONG 仓位下跌时买入)
  • 改善平均入场成本(在 SHORT 仓位上涨时卖出)
  • 减少不利入场时机的冲击
  • 在价格朝有利方向移动时,策略性地增加仓位规模

主要优势

优势 说明
更优的平均入场价 多个不同价格的入场点形成更理想的整体平均成本
风险分散 将资金分散到多个价格区间,而不是一次性全仓
自动执行 机器人根据你预设的规则自动下单
仓位加码 通过可配置的倍数逐步扩大仓位规模
利润优化 平均成本越低 → 价格反转时潜在利润越高

重要概念

  • 母单(Parent Order):你的首次交易入场
  • 子单(Child Orders):由价格波动触发的额外 DCA 订单
  • 平均入场价(Average Entry Price):所有订单(母单 + 子单)的加权平均价格
  • 触发价(Trigger Price):激活下一个 DCA 订单的价格水平

快速开始

最小配置示例

DCASettings:
 enabled: true # 开启 DCA
 max_orders: 4 # 1个母单 + 3个子单
 size_multiplier: 1.2 # 每个后续订单比前一个大 20%
 price_deviation_percent: 5 # 价格偏离 5% 时触发下一个订单

这个设置的作用

  1. 第一个订单(母单):以当前价格建立初始仓位
  2. 第二个订单(子单 1):价格逆向移动 5% 时触发,规模 = 母单 × 1.2
  3. 第三个订单(子单 2):比子单 1 再低 5% 时触发,规模 = 母单 × 1.44(1.2²)
  4. 第四个订单(子单 3):比子单 2 再低 5% 时触发,规模 = 母单 × 1.728(1.2³)

示例场景(LONG 多头)

初始入场:100 单位 @ $10,000 = $1,000,000 投入
价格下跌 5%:120 单位 @ $9,500 = $1,140,000 投入
价格下跌 5%:144 单位 @ $9,025 = $1,299,600 投入
价格下跌 5%:172.8 单位 @ $8,574 = $1,481,587 投入
总仓位:536.8 单位
总投入:$4,921,187
平均入场价:$9,168 ✅(不使用 DCA 为 $10,000)
盈亏平衡点:$9,168(每单位节省 $832!)

配置参考

完整配置示例

#################################################
# 6. DCA 设置
#################################################
DCASettings:
  enabled: true                   # 启用/禁用 DCA 功能
  max_orders: 4                   # 最多 DCA 订单数(含初始订单)
  size_multiplier: 1.2            # 订单规模乘数(1.0 = 相同,1.2 = +20%)
  price_deviation_percent: 5      # 从上一次入场价格偏差 % 触发下一个订单

参数详细说明

enabled

  • 类型:布尔值 (true/false)
  • 默认值:false
  • 描述:DCA 功能的总开关
  • 示例:
    enabled: true  # DCA 开启
    enabled: false # DCA 关闭(普通单次入场)
    

max_orders

  • 类型:整数(推荐 1–10)
  • 默认值:1
  • 描述:包含初始订单在内的总订单数量
  • 重要:max_orders = 1 个母单 + N 个子单
  • 示例:
    max_orders: 1  # 无 DCA
    max_orders: 3  # 母单 1 + 子单 2
    max_orders: 4  # 母单 1 + 子单 3(推荐)
    max_orders: 7  # 母单 1 + 子单 6(激进)
    

size_multiplier

  • 类型:小数(推荐 0.1–5.0)
  • 默认值:1.0
  • 描述:每个后续订单比前一个大多少
  • 公式:订单 N 规模 = 基础规模 × 乘数^(N-1)
  • 示例:
    size_multiplier: 1.0   # 所有订单相同规模
    size_multiplier: 1.2   # 每次 +20%(推荐)
    size_multiplier: 1.5   # 每次 +50%(激进)
    size_multiplier: 2.0   # 每次翻倍(非常激进)
    size_multiplier: 0.8   # 每次 -20%(向下金字塔)

price_deviation_percent

  • 类型:小数(推荐 0.1–20.0)
  • 默认值:5.0
  • 描述:从上一次入场价格偏差多少百分比触发下一个订单
  • 方向:
    • LONG:价格下跌该百分比时触发
    • SHORT:价格上涨该百分比时触发
  • 示例:
    price_deviation_percent: 2  # 窄间隔(剥头皮、高波动)
    price_deviation_percent: 5  # 中等间隔(推荐)
    price_deviation_percent: 10 # 宽间隔(波段、低波动)
    price_deviation_percent: 15 # 极宽间隔(持仓交易)
    

DCA 工作原理

订单放置流程

┌─────────────────────────────────────────────────────────────┐
│ 1. 母单(PARENT)已放置                                      │
│ 入场价:$10,000 | 规模:100 单位 | 投入:$1M                │
│ 计算触发价:$10,000 × (1 - 0.05) = $9,500                   │
└─────────────────────────────────────────────────────────────┘
                            ↓
                     价格下跌至 $9,400
                            ↓
┌─────────────────────────────────────────────────────────────┐
│ 2. 子单 1 已触发                                            │
│ 入场价:$9,400 | 规模:120 单位 | 投入:$1.128M            │
│ 新平均价:$9,686                                            │
│ 下个触发价:$9,400 × 0.95 = $8,930                          │
└─────────────────────────────────────────────────────────────┘
                            ↓
                     价格下跌至 $8,900
                            ↓
┌─────────────────────────────────────────────────────────────┐
│ 3. 子单 2 已触发                                            │
│ 入场价:$8,900 | 规模:144 单位 | 投入:$1.282M            │
│ 新平均价:$9,367                                            │
│ 下个触发价:$8,900 × 0.95 = $8,455                          │
└─────────────────────────────────────────────────────────────┘
                            ↓
                     价格下跌至 $8,400
                            ↓
┌─────────────────────────────────────────────────────────────┐
│ 4. 子单 3 已触发                                            │
│ 入场价:$8,400 | 规模:172.8 单位 | 投入:$1.45M           │
│ 新平均价:$9,168                                            │
│ 已达最大订单数 - 不再触发更多 DCA                           │
└─────────────────────────────────────────────────────────────┘

平均入场价计算

机器人会自动计算你的平均入场价:

平均入场价 = 总投入金额 ÷ 总持仓数量
示例:
订单 1:100 × $10,000 = $1,000,000
订单 2:120 × $9,400  = $1,128,000
订单 3:144 × $8,900  = $1,281,600
订单 4:172.8 × $8,400 = $1,451,520
─────────────────────────────────────
总计:536.8 单位 = $4,861,120
平均价 = $4,861,120 ÷ 536.8 = $9,056

盈亏计算

所有盈亏计算均基于平均入场价,而非初始入场价:

不使用 DCA:
入场价:$10,000
当前价:$9,500
盈亏:-5.0% ❌
使用 DCA(4个订单):
平均入场价:$9,056
当前价:$9,500
盈亏:+4.9% ✅

真实案例

案例 1:保守型波段交易

设置

DCASettings:
 enabled: true
 max_orders: 3 # 小仓位
 size_multiplier: 1.0 # 等额规模
 price_deviation_percent: 10 # 宽间隔

交易执行(LONG BTC):

入场 1:0.1 BTC @ $40,000 = $4,000
价格下跌至 $36,000(10%)
入场 2:0.1 BTC @ $36,000 = $3,600
价格下跌至 $32,400(10%)
入场 3:0.1 BTC @ $32,400 = $3,240
总计:0.3 BTC 共 $10,840
平均入场价:$36,133
盈亏平衡点:$36,133(不使用 DCA 为 $40,000)

最适合:波动率较低的资产、较长时间框架

案例 2:激进型剥头皮

设置

DCASettings:
 enabled: true
 max_orders: 5 # 更多订单
 size_multiplier: 1.5 # 激进加码
 price_deviation_percent: 2 # 窄间隔

交易执行(SHORT ETH):

入场 1:1 ETH @ $3,000 = $3,000
价格上涨至 $3,060(2%)
入场 2:1.5 ETH @ $3,060 = $4,590
价格上涨至 $3,121(2%)
入场 3:2.25 ETH @ $3,121 = $7,022
价格上涨至 $3,183(2%)
入场 4:3.375 ETH @ $3,183 = $10,742
价格上涨至 $3,247(2%)
入场 5:5.063 ETH @ $3,247 = $16,440
总计:13.188 ETH 共 $41,794
平均入场价:$3,169
盈亏平衡点:$3,169(达到最大订单时的最大亏损)

最适合:高波动资产、短时间框架
⚠️ 警告:资本需求非常高!

设置

DCASettings:
 enabled: true
 max_orders: 4 # 中等深度
 size_multiplier: 1.2 # 渐进加码
 price_deviation_percent: 5 # 中等间隔

交易执行(LONG SOL):

入场 1:100 SOL @ $100 = $10,000
价格下跌至 $95(5%)
入场 2:120 SOL @ $95 = $11,400
价格下跌至 $90.25(5%)
入场 3:144 SOL @ $90.25 = $12,996
价格下跌至 $85.74(5%)
入场 4:172.8 SOL @ $85.74 = $14,816
总计:536.8 SOL 共 $49,212
平均入场价:$91.68
盈亏平衡点:$91.68(比初始入场改善 8.3%)
价格反弹至 $95:
盈利:536.8 × ($95 - $91.68) = $1,782(+3.6%)
不使用 DCA:100 × ($95 - $100) = -$500(-5% 亏损)

最适合:绝大多数交易场景,风险/回报平衡良好


最佳实践

1. 资金管理

预留足够资金

计算最大所需资金:
基础订单:$10,000
乘数:1.2
最大订单数:4
订单 1:$10,000
订单 2:$12,000 (1.2×)
订单 3:$14,400 (1.2²×)
订单 4:$17,280 (1.2³×)
─────────────────
总计:$53,680 ⚠️ 需要大约 5.4 倍初始订单规模!

经验法则

  • 等额规模 (1.0):需要 max_orders × 初始规模
  • 乘数 1.2:4 个订单约需 5 倍初始规模
  • 乘数 1.5:4 个订单约需 10 倍初始规模
  • 乘数 2.0:4 个订单约需 15 倍初始规模

账户余额安全

# 为意外机会保留 20-30% 缓冲
可用余额:$100,000
DCA 预留:$70,000
安全缓冲:$30,000

2. 选择合适的参数

根据市场状况

高波动(BTC、ETH 新闻期间):

max_orders: 5
size_multiplier: 1.3
price_deviation_percent: 3

中等波动(主流山寨币):

max_orders: 4
size_multiplier: 1.2
price_deviation_percent: 5

低波动(稳定币、成熟市场):

max_orders: 3
size_multiplier: 1.1
price_deviation_percent: 2

根据时间周期

剥头皮(分钟级)

price_deviation_percent: 1-2
max_orders: 3-4
size_multiplier: 1.3-1.5

日内交易(小时级)

price_deviation_percent: 3-5
max_orders: 3-5
size_multiplier: 1.2-1.3

波段交易(日级)

price_deviation_percent: 5-10
max_orders: 3-4
size_multiplier: 1.0-1.2

持仓交易(周级)

price_deviation_percent: 10-15
max_orders: 2-3
size_multiplier: 1.0-1.1

根據帳戶規模

小額帳戶(< $10,000):

max_orders: 3 # 資金有限
size_multiplier: 1.0 # 無法激進加碼
price_deviation_percent: 7

中額帳戶($10,000–$100,000):

max_orders: 4
size_multiplier: 1.2
price_deviation_percent: 5

大額帳戶(> $100,000):

max_orders: 5-7
size_multiplier: 1.3-1.5
price_deviation_percent: 3-5

3. 離場策略

止盈目標

利用 DCA 改善平均入場價後:
- 將止盈設在平均入場價 +5%(而不是初始入場價!)
- 可考慮在心理價位分批獲利了結
- 隨著盈利增加,使用移動止盈(Trailing Take Profit)

止損管理

可選方案:
1. 不設止損 — 讓 DCA 自由發揮(風險較高!)
2. 從平均入場價設置 -X% 止損
3. 從最後一次 DCA 訂單設置 -X% 止損
4. 總帳戶最大回撤限制(例如 -20%)

4. 監控

定期檢查以下項目:

  • ✅ 目前活躍的 DCA 訂單數量
  • ✅ 平均入場價 vs 當前價格
  • ✅ 已投入總資金
  • ✅ 距離下一個 DCA 觸發還有多遠
  • ✅ 剩餘可用資金

需關注的機器人日誌:

✅ "DCA trigger hit" — 已下達新訂單
✅ "Parent trade updated with DCA data" — 已重新計算平均價
✅ "Max orders reached" — 已達最大訂單數,無法再加倉
⚠️ "Insufficient balance" — 餘額不足,請補充資金!

風險管理

最大回撤情境分析

情境:4 筆訂單、1.2× 乘數、5% 間距

已成交訂單 價格下跌 使用資金 最大回撤
1(母單) 0% $10,000 0%
2 -5% $22,000 -2.5%
3 -9.75% $36,400 -5.1%
4(最大) -14.26% $53,680 -7.8%

解讀

  • 即使觸發全部 4 筆 DCA 訂單,最大回撤僅 7.8%
  • 不使用 DCA:在相同價格水準虧損 14.26%
  • DCA 將最大回撤降低了約 50%!

不同配置的資金需求

配置 初始 最大資金需求 乘數效應
3 筆訂單,1.0× $10k $30k 3.0×
3 筆訂單,1.2× $10k $34.4k 3.4×
4 筆訂單,1.0× $10k $40k 4.0×
4 筆訂單,1.2× $10k $53.7k 5.4×
5 筆訂單,1.2× $10k $71.1k 7.1×
4 筆訂單,1.5× $10k $88.1k 8.8×
5 筆訂單,1.5× $10k $181.9k 18.2×

⚠️ 關鍵提醒:務必保留 1.5–2 倍最大資金需求的緩衝!

風險緩解策略

1. 倉位規模限制

# 從小開始!
InitialTradeAmount: 100 # 不要直接 1000
DCASettings:
 max_orders: 3 # 不要 7
 size_multiplier: 1.1 # 不要 2.0

2. 單品種限制

不要每筆交易都用 DCA:
- 只在高信心機會啟用 DCA
- 不確定交易使用單次入場
- 同時活躍的 DCA 倉位最多 2–3 個

3. 時間限制

防止閃崩時快速連續觸發 DCA:
- 訂單間最小時間間隔:5–15 分鐘
- 每日 DCA 觸發上限:一天最多 10 次
- 同一天觸發多條 DCA 鏈時,必須人工複盤

4. 根據波動率調整

偵測到高波動時:
- 放寬 price_deviation_percent(5% → 7%)
- 減少 max_orders(4 → 3)
- 降低 size_multiplier(1.2 → 1.1)

故障排除

DCA 訂單未觸發

症狀:價格已波動但未出現 DCA 訂單

可能原因

  1. DCA 未啟用
    # 檢查:
    DCASettings:
     enabled: true # ← 必須為 true!
    
  2. 已達最大訂單數
    # 查看日誌:
    "Max orders reached""dca_total_orders >= dca_max_orders"
    # 解決:該筆交易已完成,等待離場或新入場
    
  3. 未達到觸發價
    # 查看日誌:
    "DCA trigger check: current_price=X trigger_price=Y"
    # LONG:current_price <= trigger_price 才觸發
    # SHORT:current_price >= trigger_price 才觸發
    # 解決:等待價格進一步移動
    
  4. 餘額不足
    # 查看日誌:
    "Failed to place order""Insufficient balance"
    # 解決:補充資金或降低 DCA 設定
    

DCA 訂單觸發過於頻繁

症狀:幾秒/幾分鐘內連續觸發多筆 DCA 訂單

可能原因

  1. price_deviation_percent 設定過小
    # 目前:
    price_deviation_percent: 0.5 # ❌ 太窄!
    # 修正:
    price_deviation_percent: 5 # ✅ 更合理
    
  2. 閃崩 / 極端波動
    # 價格瞬間跳空 >15%,所有訂單一次觸發 — 正常現象!
    # 預防:在波動大的市場使用更寬的間距
    

平均入場價計算錯誤

症狀:平均入場價與預期不符

檢查

日誌應顯示:
"Parent trade updated with DCA data"
avg_entry=X total_quantity=Y total_invested=Z
手動驗證:
平均價 = total_invested ÷ total_quantity
若有差異,檢查:
1. 所有子單是否正確存入資料庫?
2. 每次子單後是否更新母單?
3. 是否有訂單下單失敗?

DCA 未改善平均入場價

症狀:使用 DCA 後平均價反而比單次入場更差

這發生在:價格在第一次 DCA 後立即反轉

範例:
入場 1:$100(100 單位)
入場 2:$95(120 單位)← DCA 觸發
當前價格:$98
不使用 DCA:-2% ($100 → $98)
使用 DCA:-1.4% (平均 $96.36 → $98) ✅ 仍然較優!
但若價格回到 $100:
不使用 DCA:0%(盈虧平衡)
使用 DCA:+3.8% ($96.36 → $100) ✅ 獲利!

這是正常現象 — DCA 的真正優勢在價格反轉時才顯現!


常見問題(FAQ)

Q1:DCA 可以與資金管理策略一起使用嗎?

:可以!DCA 與資金管理完全相容:

資金管理計算出的基礎規模:$10,000
DCA 乘數:1.2
結果:
- 訂單 1:$10,000(來自資金管理)
- 訂單 2:$12,000(DCA 乘數)
- 訂單 3:$14,400

Q2:DCA 對止盈/止損有什麼影響?

  • 止盈/止損初始是基於原始入場價計算
  • 實際盈虧計算使用平均入場價
  • 這意味著你可能比預期更早達到止盈!✅
原始止盈:$100 +5% = $105
DCA 後平均價:$95
當前價格:$102
不使用 DCA:+2%(尚未達止盈)
使用 DCA:+7.4%(已觸發止盈!)✅

Q3:每筆交易都要用 DCA 嗎?

:不需要!應選擇性使用:

適合使用 DCA 的情境

  • ✅ 高信心度機會
  • ✅ 強支撐/阻力位
  • ✅ 順勢交易
  • ✅ 高流動性交易對

不適合使用 DCA 的情境

  • ❌ 信心度低的交易
  • ❌ 新聞驅動的極端波動
  • ❌ 突破型交易(可能持續單邊)
  • ❌ 低流動性交易對
  • ❌ 超短線剝頭皮

Q4:可以手動平掉 DCA 倉位嗎?

:可以。關閉母單(父訂單)會自動關閉整個 DCA 鏈。

Q5:DCA 過程中資金不足怎麼辦?

:機器人會記錄錯誤並停止掛新 DCA 訂單。已掛訂單繼續有效。預防方法:

1. 事先計算最大資金需求
2. 設定 TradeAmountPer 留緩衝:
   TradeAmountPer: 15% # 只使用帳戶 15% 資金
   # 帳戶 $100k → 單筆 $15k
   # 4 次 DCA ≈ $80k 最大需求
   # 仍留 $20k 緩衝 ✅

Q6:如何在不冒真金白銀風險下測試 DCA?

# 啟用模擬模式:
general:
 demo_mode: true
DCASettings:
 enabled: true
 max_orders: 4
 size_multiplier: 1.2
 price_deviation_percent: 5

或執行模擬器:cargo run --bin dca_simulator

Q7:倉位開啟後可以修改 DCA 設定嗎?

:修改後僅對新倉位生效。已開啟的 DCA 序列會繼續使用原有設定。

Q8:最適合的 size_multiplier 是多少?

:取決於你的目標:

乘數 風格 風險 資金需求 最適合
1.0 保守 3–4× 新手、不確定市場
1.1–1.2 平衡 中等 4–6× 大多數交易者(推薦)
1.3–1.5 激進 7–12× 有經驗、高信心機會
1.5–2.0 極激進 極高 12–20× 僅限專業、極強機會

Q9:為什麼 DCA 訂單成交價與觸發價不同?

:市價單會按當時市場價成交。在波動市場中:

觸發價:$9,500
實際成交:$9,502(市場微漲)
這是正常現象!DCA 以觸發價作為「大約此水平」
若需精準入場,可改用限價單(但可能錯過成交)

Q10:可以為不同交易對設定不同的 DCA 參數嗎?

:目前 DCA 設定為全局。解決方式:

1. 啟動多個機器人實例
2. 每個實例使用不同設定檔
3. 為每個機器人分配特定交易對

總結

快速決策矩陣

您的情境 推薦設定
DCA 新手 max_orders: 3, 乘數: 1.0, 偏差: 5%
有經驗交易者 max_orders: 4, 乘數: 1.2, 偏差: 5%
高波動市場 max_orders: 5, 乘數: 1.3, 偏差: 3%
低波動市場 max_orders: 3, 乘數: 1.1, 偏差: 2%
小額帳戶 max_orders: 3, 乘數: 1.0, 偏差: 7%
大額帳戶 max_orders: 5, 乘數: 1.5, 偏差: 3%
剝頭皮 max_orders: 3, 乘數: 1.5, 偏差: 1–2%
波段交易 max_orders: 4, 乘數: 1.2, 偏差: 5–10%

最終檢查清單

啟用 DCA 前,請確認:

  • [ ] 已了解最大資金需求
  • [ ] 帳戶餘額足以覆蓋 max_orders × size_multiplier
  • [ ] 參數適合當前市場波動
  • [ ] 先在模擬模式測試過
  • [ ] 已定義止盈/止損策略
  • [ ] 會定期監控 DCA 倉位
  • [ ] 有應對最大回撤的計畫

📎 Related Topics