目录
概述
什么是 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):价格逆向移动 5% 时触发,规模 = 母单 × 1.2
- 第三个订单(子单 2):比子单 1 再低 5% 时触发,规模 = 母单 × 1.44(1.2²)
- 第四个订单(子单 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(达到最大订单时的最大亏损)
最适合:高波动资产、短时间框架
⚠️ 警告:资本需求非常高!
案例 3:平衡型策略(推荐)
设置:
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 訂單
可能原因:
- DCA 未啟用
# 檢查: DCASettings: enabled: true # ← 必須為 true! - 已達最大訂單數
# 查看日誌: "Max orders reached" 或 "dca_total_orders >= dca_max_orders" # 解決:該筆交易已完成,等待離場或新入場 - 未達到觸發價
# 查看日誌: "DCA trigger check: current_price=X trigger_price=Y" # LONG:current_price <= trigger_price 才觸發 # SHORT:current_price >= trigger_price 才觸發 # 解決:等待價格進一步移動 - 餘額不足
# 查看日誌: "Failed to place order" 或 "Insufficient balance" # 解決:補充資金或降低 DCA 設定
DCA 訂單觸發過於頻繁
症狀:幾秒/幾分鐘內連續觸發多筆 DCA 訂單
可能原因:
- price_deviation_percent 設定過小
# 目前: price_deviation_percent: 0.5 # ❌ 太窄! # 修正: price_deviation_percent: 5 # ✅ 更合理 - 閃崩 / 極端波動
# 價格瞬間跳空 >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 倉位
- [ ] 有應對最大回撤的計畫