动态 DCA 策略详解:什么是动态定投?成交量放大时分批买入的量化策略图解
价格跌了,策略为什么还不买?沿着一个动态DCA案例,看清低点确认、成交量、分批投入和退出怎样一起决定下一步。
策略广场里几千个策略,你到底在选什么?
打开 OKX 或币安的策略广场,成百上千个策略排在眼前,收益率曲线一个比一个漂亮,"年化 80%""胜率 92%"的标签闪闪发亮。但"看起来都不错"反而更难选:它什么时候买?跌了怎么办?什么时候认亏离场?这些数字背后的运行逻辑,你其实一概不知——多数人最后只能凭收益率排名下注,把钱交给一个读不懂的黑箱。
与其赌排名,不如把规则拆开看。今天我就拿一个具体策略当样本——动态 DCA 相对成交量策略(Dynamic DCA with Relative Volume)——把它的买入、加仓、退出三套规则讲给你听。
先解释下名字:DCA 是"定投"(Dollar-Cost Averaging),把资金分成几份分批投入、摊平成本。传统定投按固定时间扣款,而动态 DCA 由市场信号触发:这个策略只做多,观察一分钟永续合约 K 线,等"价格下跌 + 成交量放大"两个信号同时出现才出手,越跌买得越多。
你可能在实盘里见过它的怪脾气:价格跌了它不买,再跌一截它却突然出手了。为什么?咱们顺着它的思路走一遍就明白了。
什么是局部低点确认?看到一个低价,怎么判断它是不是"底"?
先从一根 K 线说起:每根 K 线就像这一分钟价格的一张"成绩单",记下开盘价、收盘价、最高价和最低价。上下两根细线(影线)的顶端和底端分别是最高价和最低价;中间的粗块(实体)是开盘价与收盘价之间的范围。这一步我们只关心细线的底端——最低价。
局部低点确认(Swing Low Confirmation)指的是:等低点右侧再出现若干根价格更高的 K 线后,才回头认定那个低点成立。 本策略要求右侧再等三根。
从一根 K 线,看懂局部低点
① 细线的底端,就是最低价
以下用上涨的一分钟举例;下跌时,开盘价在实体上端,收盘价在下端。
② 第 4 根最低,等到第 7 根结束才确认
第四分钟结束:右侧三根还没发生
第七分钟结束:右侧三根的最低价都高于 100
假设前四分钟的最低价依次是 105、104、103、100。第四分钟结束时,你只知道价格到了 100,第五分钟会不会更低,谁也不知道。
抄底最怕接到"飞刀"——你以为到底了,结果下面还有十八层。这套规则的做法是:不猜,让价格自己证明。
想想坐过山车的体验:俯冲的时候你根本说不清最低点在哪,直到车身重新往上爬了一段,你才反应过来"刚才那一下就是最低"。最低点永远是被"之后开始回升"这件事追认的,而不是在俯冲途中能当场指认的。
这套规则做的就是这件事:先记下 100 这个低点,再等三根 K 线,如果价格一路没再创新低,才回头追认第四根是"局部低点"。

低点确认(案例讲解):同一个 100,分两个时刻看
① 第四分钟结束:后面还没发生
| 第1分 | 第2分 | 第3分 | 第4分 | 第5分 | 第6分 | 第7分 |
|---|---|---|---|---|---|---|
| 105 | 104 | 103 | 100 | ? | ? | ? |
② 第七分钟结束:后面三根都出来了
| 第1分 | 第2分 | 第3分 | 第4分 | 第5分 | 第6分 | 第7分 |
|---|---|---|---|---|---|---|
| 105 | 104 | 103 | 100 | 102 | 101 | 104 |
后来三根的最低价 102、101、104 都高于 100,再与之前三根比较,100 最低——这时才完成确认。
注意一个容易混淆的细节:"低点"标在第四根,"确认"发生在第七根,这是两个不同的时刻。就像运动员冲过终点线的时刻和官方成绩生效的时刻:成绩是冲线那一秒跑出来的,但要等裁判回看确认之后,这个纪录才算数。
这套规则把一次确认的低点当作一张"待用的买入券":后续满足其他条件才会用它;用掉之后,要等另一个局部低点确认,才再发一张。那价格要跌到哪里,才够格动用这张券?
先看价格这一关:策略会根据已经确认的低点,算出一条买入门槛。只有这一分钟的收盘价降到门槛或以下,才算通过;之后还要继续检查成交量等条件。有券,表示可以等待买入机会,还没有到立即下单这一步。
什么是动态买入门槛?低点 100,为什么门槛算出来是 97.8?
假设此前低点下移的平均幅度是 2%。从低点 100 再往下等 2%,对应 2 个价格单位;策略再用 1.1 倍把这段距离放大一点,变成 2.2 个单位。
所以等待线位于 100 − 2.2 = 97.8,这就是买入价格门槛。所谓"动态",就是因为低点和平均降幅都在变,这条线每次都重新计算。
这里还要分清两个价格:最低价是这一分钟曾经摸到过的最低位置,收盘价是这一分钟结束时的定格价格。入场比较用的是收盘价。
价格门槛(案例讲解)
- 确认低点:100 平均下降幅度:2% 调整倍数:1.1
- 买入价格门槛 = 100 ×(1 − 2% × 1.1)= 97.8
| 情形 | 结果 |
|---|---|
| 收盘价 97.7 | ✅ 通过价格条件 |
| 最低价 97.7,但收盘价 98.2 | ⏳ 继续等待 |
这个 1.1 倍很好理解:就像网购时你看中的商品历史平均降价 2%,但你决定再多等一点点——宁可错过,不愿买贵。多等的这 10%,是给"这次可能跌得比平均更深"留的余量。
为什么用收盘价而不是最低价?因为最低价可能只是"蜻蜓点水":这一分钟里某笔大单瞬间把价格砸到 97.7,几笔成交之后价格马上弹回 98.2——水是碰到了,但人没有真的下水。
如果看到碰线就买,等于把一次瞬间的"误触"当成了真的跌到位。收盘价则是一分钟结束时尘埃落定的价格,是多空双方实打实博弈了一分钟的结果。
所以规则认的是定格那一刻:这一分钟收在 97.8 或以下,才算价格真的站到了门槛之下。
公式里的平均下降幅度,从哪里来?
刚才先假设平均下降幅度是 2%,把门槛算了一遍。这个数来自历史数据:策略回头比较相邻的确认低点,量一量每次出现更低的低点时,下降了多少。
过去的低点,通常比前一个低多少?
下面每个圆点,都是一个已经确认的低点。这里借一组假设价格,把过程展开看。
2% 是本例的平均值。策略使用历史样本算出的实际平均下降幅度,数值会随样本更新。
实际数值随历史样本更新。新确认一个低点,就与前一个比较;只在更低时新增样本,对最近最多 4000 个有效样本求平均。
低点持平或抬高时不新增样本。注意:样本是随低点变化积累的,时间间隔不固定,所以它不能直接理解成"最近二十分钟的平均跌幅"。
这样,两件事就接上了:低点确认,给出一张待用的买入券;历史平均降幅,帮助算出这张券要等待的价格。再把它们放回同一条 K 线行情,看看什么时候领券、什么时候才提交买单。
放回同一条行情:先领券,再等条件齐全买入
沿用低点 100 的例子,以下从空仓开始,展示一次首次买入过程。
收盘价 94.8 ≤ 买入门槛 97.8;本例此前空仓,这次是首笔订单。 相对成交量为 2.73 倍,大于 2;分批额度、资金和订单检查也通过。
不过,价格够低只满足了一个条件。接下来还要看这个位置的交易是不是比近期更热闹。
什么是相对成交量(Relative Volume)?放大两倍是怎么算的?
成交量记录这段时间内成交了多少。可以把它想成一家店的客流:要判断"今天这一分钟算不算热闹",得拿它和平时的客流比,而不是凭感觉。
相对成交量(Relative Volume,简称 RVOL)= 当前成交量 ÷ 近期平均成交量。 这是个通用概念,每个策略可以自己定"近期"是多近、放多大算"放量"。
咱们拆的这个动态 DCA 相对成交量策略,它的具体配置是:取最近二十根 K 线的平均成交量做分母,而且把当前这一根也算进去;要求相对成交量大于 2 倍才算放量。
光说参数没感觉,代一组数字进去算一遍:前十九分钟每分钟成交量都是 100,当前这一分钟突然放到 300。
相对成交量(案例讲解):当前是 300,分母为什么是 110?
- 前十九根,每根成交量:100 当前这一根:300
- 二十根总量:19 × 100 + 300 = 2200
- 含当根的平均量:2200 ÷ 20 = 110
- 相对成交量:300 ÷ 110 ≈ 2.73 倍
2.73 > 2,成交量条件通过。
很多人直觉上会拿 300 除以 100,说"放大了三倍"。但别忘了,当前这根也被算进了平均量:分母里掺了这个 300,被它自己从 100 抬到了 110,倍数自然缩到约 2.73 倍。
打个比方:姚明走进一支业余球队,全队平均身高立刻被他一个人拉高十几公分。等他再想炫耀"我比全队平均高出多少"时,会发现这个数字缩水了——因为平均线里已经把他自己算进去了。
当前这个 300 就是队里的"姚明":它一进分母,平均线就被它自己抬高了。把当前量包含在分母里,会压低相对倍数;判断时要沿用这个口径。
价格条件筛“位置”,成交量条件筛“人气”。两项合在一起,策略会等待价格到位、成交也足够活跃的时刻。放量下跌代表交易活跃,买卖双方仍在争夺这个位置。
价格够低、成交量也够高,这两项要一起过关。只满足其中一项,程序仍会等着。下面几种情况,差别就在这里。
条件组合(案例讲解):价格和成交量必须同时通过
固定价格门槛 97.8,成交量要求大于近期均量的 2 倍。假设已确认一个尚未使用过的低点,且订单和资金检查通过。
| 收盘价 | 相对量 | 判断 |
|---|---|---|
| 97.7 | 2.3 倍 | ✅ 两项都满足 |
| 97.7 | 2.0 倍 | ❌ 量能未通过(2.0 不"大于"2,边界要留意) |
| 98.2 | 2.3 倍 | ❌ 价格未通过 |
| 97.8 | 2.3 倍 | ✅ 两项都满足 |
两项都通过后,程序还会检查账户资金和已有订单,然后提交市价买单。注意:市价单按市场当时可成交的价格执行,判断时用的收盘价和最终成交价可能不一样——就像你在 App 上看到的票价和出票那一刻的价格,偶尔会有出入。
💡 想亲手验证? 本文拆的这个策略来自 AlgoRover——一个可以用自然语言查找、解释和研究量化策略的 AI 工具。
你可以把它当成自己的研究助手:看不懂的规则直接问,想试的参数交给它改,再把改动前后放到同一段行情里比较。
比如现在就问它:“成交量门槛从 2 倍改成 1.5 倍,会多成交多少笔、回撤多大?”
想把这个案例带进 Live 自己看看,文末准备好了安装入口和查找策略的提示词。
好了,咱们接着拆规则。刚才那一分钟假设价格和成交量都通过,第一笔订单已经买进去了——但买入只是上半场,这套规则怎么处理手里的仓位,才是下半场的戏。
什么是金字塔式加仓?已经买过一次,后面还能买多少?
首笔订单提交后,这个低点发的"买入券"就用掉了。下一笔需要一个新的确认低点重新发券,并再次满足价格和成交量条件。这样价格在同一门槛附近磨来磨去时,程序不会凭同一个低点反复买入。
买入之后,检查清单上多了一项:当前价格距离你的持仓均价有多远。
持仓均价是什么?开车的人都有过这种算账:周一油价 8 块,加了 30 升;周四跌到 7 块 5,又补了 20 升。想知道这箱油的成本,不能拿(8 + 7.5)÷ 2——两次加的量不一样,便宜的那次加得少,就摊不薄多少。
得把总花费 390 除以总升数 50,得出每升 7 块 8,这才是真实成本。持仓均价就是同一个算法:总投入 ÷ 总数量,按各笔实际买入数量加权算出来的平均价格。
当前加仓门槛设为 −5%:均价是 100 时,收盘价到 95 或以下这一项才通过,其余条件依然全部有效。每次加仓后实际均价会变,后续比较也跟着变——这是一种"动态参照"。
时机之外还有一道总量闸门:这个策略最多允许五笔订单(含第一笔)。这笔钱怎么花?假设你为它准备了 1 万元:第一笔只用 625 元(6.25%)试探,第二笔还是 625 元;
从第三笔开始加码,依次是基础份额的 2 倍、3 倍、4 倍,也就是 1250、1875、2500 元。当前杠杆参数为 1,这里按对应的目标名义金额计算。
这里用金字塔式份额描述后续订单逐步放大的资金安排。实际动作是下跌时分批买入,份额按 1、1、2、3、4 递增,并非每次翻倍;它也有明确的笔数和资金约束。
金字塔式加仓:后面的单笔份额更大
沿用 1 万元方案,基础份额为 625 元。图中金额单位:元。
分批计划(案例配置):越到后面单笔越大,五笔合计 68.75%
| 笔数 | 倍数 | 计划份额 |
|---|---|---|
| 第 1 笔 | 1 倍 | 6.25% |
| 第 2 笔 | 1 倍 | 6.25% |
| 第 3 笔 | 2 倍 | 12.5% |
| 第 4 笔 | 3 倍 | 18.75% |
| 第 5 笔 | 4 倍 | 25% |
| 合计 | 68.75%(其余 31.25% 留作备用) |
这个结构像打仗时的兵力投放:先派一支小分队试探火力,价格继续下探、信号再次满足时,压上去的兵力越重——前两笔是侦察兵,后面三笔才是主力。
订单越大,新买入价格对整体均价的拉动也越明显。用刚才加油的说法就是:越便宜的时候“加的油”越多,均价被拉低得越快,后续退出所参照的均价也会跟着降低。
但反过来,主力全压上之后,后方也就空了:累计持仓变大、剩余资金变少,价格若继续下跌,压力会更集中。
所以看分批策略,别只问"这一笔为什么允许买",还要问"一共允许多少笔、最多能花掉多少钱"。这里有一条硬约束:所有批次计划动用的资金加起来,不能超过总资金的 83%。
拿上面 1 万元的方案算一笔账:五笔合计 625 + 625 + 1250 + 1875 + 2500 = 6875 元,占 68.75%,红线之内,剩下 3125 元留作备用。
但假如你想多要一次机会、加成六笔——按递增规律,第六笔该是 5 倍份额、3125 元——合计正好 10000 元,也就是把本金全部押上,直接踩破 83% 的红线。
1 万元方案 · 83% 上限
这就像一桌预算封顶的聚餐:总共只能花 830 块,已经点了五道菜。想再加一道硬菜?那前面五道菜就得换掉几道、换成便宜的——总账单不变,加菜的钱只能从别的菜里省。
加仓也是一个道理:想多加一笔,就得把每笔份额缩小、或者把递增倍数调低,让六笔重新凑进 83% 以内。多加一次机会,改变的是整套资金计划。

想比较四笔和五笔哪种更适合自己的资金安排,可以把两套方案放到相同条件下做对照回测。
止盈止损怎么设?买入之后什么时候卖?
买入之后还要决定何时卖出。前面讲过,每次加仓都可能改变持仓均价,退出条件也必须跟着实际持仓走。
这套规则以持仓均价为锚,分别设置向上(止盈)和向下(止损)两个退出条件。沿用均价 100、平均下降幅度 2% 的例子:
- 止盈目标:100 ×(1 + 2% × 1)= 102,收盘价 ≥ 102 时请求平仓;
- 止损边界:100 ×(1 − 20%)= 80,当根最低价 ≤ 80 时请求退出。
注意两边用的检查价格不一样——止盈看收盘价,止损看最低价。
可以这样记:对待盈利用"最稳"的传感器,对待风险用"最敏"的传感器。 止损边界像烟雾报警器——哪怕只冒了一缕烟就散了,报警器也会响;
止盈目标则像验收签字——要等这一分钟尘埃落定、收在目标之上才算数。如果同一根 K 线触及止损边界,程序优先处理退出,跳过加仓。

止盈目标由实际均价和平均下降幅度共同决定,两者更新时目标也会移动。程序在每一分钟结束后检查退出条件,触发后提交平仓请求,再由市场撮合成交。
动态 DCA 策略适合什么行情?
前面所有设计都围绕一个共同假设:价格下探之后,仍会涨回来。 这个假设在哪些行情里成立、在哪些行情里会失效,直接决定了这套规则的适用边界。逐种行情给个明确的结论:
- 震荡市(价格在区间内反复上下):✅ 较契合。 区间里的一次次下探,正是它等待的买入形态——跌下去、放量、再回归,回归可能让价格重新接近退出目标,但每次下探都仍有继续下跌的风险。
- 上行趋势中的回调:✅ 适合。 大方向向上时的局部回落,后续若恢复上涨,便和它等待回归的假设同向。
- 持续上涨、几乎不回调:⚠️ 可能缺少入场机会。 如果开始时空仓,价格又一直达不到入场条件,就可能持续等待。已经持有的仓位仍按退出规则处理,不能仅凭行情类型判断是否会有损失。
- 持续下跌:❌ 最危险。 新低点和放量会接连出现,规则仍会一笔一笔允许加仓,仓位越加越重,而"价格终将回归"的假设恰恰在这种行情里失效。止损边界是最后一道防线,但接飞刀的风险并没有被规则消除,只是被流程约束了。碰上这种行情,退出阈值会触发平仓请求,实际损失还取决于仓位、费用、滑点和成交。
- 小幅横盘(波动很窄):⏸️ 派不上用场。 价格偏离太小,够不到买入门槛,策略可能全程沉默——不是坏了,是没有它要的形态。
- 跳跃式下跌、流动性突然枯竭:❌ 回避。 止损靠"每分钟结束后请求平仓",如果价格直接跳空、市场深度突然变薄,实际成交会偏离预期,滑点可能显著放大亏损。一分钟周期上,执行延迟与滑点的影响值得单独研究。
一句话总结:它依赖的是"下探之后还能回归"的价格结构——持续单边下跌会直接挑战这个假设。
参数怎么调?每个参数改变的是哪一步?
下面固定其他条件,对照较小、当前和较大的设置,看看每一项改变了哪一步。
| 参数 | 较小设置 | 当前设置 | 较大设置 |
|---|---|---|---|
| 低点确认根数 | 2:共 5 根,右侧等 2 根 | 3:共 7 根,右侧等 3 根 | 5:共 11 根,右侧等 5 根 |
| 价格调整倍数 | 1:门槛 98 | 1.1:门槛 97.8 | 1.5:门槛 97 |
| 成交量窗口 | 10 根 | 20 根 | 40 根 |
| 成交量门槛 | 大于 1.5 倍 | 大于 2 倍 | 大于 3 倍 |
| 止盈倍数 | 0.5:目标 101 | 1:目标 102 | 1.5:目标 103 |
| 止损百分比 | 10%:边界 90 | 20%:边界 80 | 30%:边界 70 |
- 低点窗口扩大:比较的相邻K线更多,右侧确认等待也更长;
- 成交量窗口扩大:参照系保留更长时间的记忆;
- 加仓间距 −5% 改成 −8%:价格要离均价更远才补;改成 −3%:更早满足;
- 改变总笔数:务必同时重算累计投入比例,确保仍在 83% 总量限制内。
这个策略对你有什么价值?
- 如果你是量化新手:它是一个规则比较完整的案例——低点确认、动态门槛、相对成交量、金字塔加仓、止盈止损,量化交易里最核心的概念它几乎全用到了。顺着它的规则走一遍,再看其他策略,也更容易找到该问的问题。
- 如果你想直接部署:先核对本文版本的规则、资金与退出设置。在 AlgoRover 里可以先跑模拟盘验证,再决定是否上实盘。
- 如果你想自定义改造:每个参数的含义本文都讲了,你可以带着自己的假设进产品,让 AI 帮你改参数、跑回测、做对比——研究策略不再需要会写代码。
常见问题(FAQ)
Q:动态 DCA 和普通定投有什么区别?
普通定投按固定时间买入(如每周一),不看价格;动态 DCA 按价格和成交量信号触发买入,可能长时间不出手,也可能在下跌中连续出手。前者拼的是纪律,后者拼的是规则。
Q:动态 DCA 会按固定时间买入吗?
不会。本策略完全由价格、成交量和状态条件触发。运行一段时间没有订单,多半是条件尚未同时满足——它在等,不是坏了。
Q:每跌 5% 就会再加仓一次吗?
不一定。加仓偏离以实际持仓均价为参照,同时还需要新的确认低点、完整入场信号、剩余分批额度和资金检查。一个条件通过,只说明清单上的某一项盖了章。
Q:动态 DCA 和马丁格尔策略是一回事吗?
这套案例的加仓份额按 1、1、2、3、4 递增。它最多安排五笔,计划资金上限为 83%,并设有退出条件。
Q:可以把一分钟参数直接搬到日线上用吗?
不建议。二十根日线和二十根一分钟线覆盖的市场过程完全不同,低点确认延迟、成交量参照和预热数据都会改变。
参数不是螺丝钉,不能拆下来直接装到另一台机器上——但你可以在 AlgoRover 里让 AI 帮你把策略迁移到别的周期,再用回测验证。
Q:看完规则后,怎么继续研究这个策略?
把它带进 AlgoRover,从下面这些问题开始问 AI:
- "这个策略最近在 BTC 永续合约上的表现如何?费用和回撤是多少?"
- "把成交量窗口改成 40 根,和原版做对照回测。"
- "帮我建立一个 4 笔分批的自定义版本,比较两者的资金利用率。"
也可以先阅读这篇策略参数对比的实操案例,看看别人是怎么一步步用对话做策略研究的。
下一步:这个策略靠不靠谱?带着它去问 AI
回到开头那个场景:策略广场里的策略永远是看不完的,但"拆规则"的方法是可以带走的。低点怎么确认、门槛怎么算、量能怎么比、加仓有没有上限、退出看什么价格——用这五问去套任何一个策略,黑箱就透明了一大半。
如果想继续研究,先安装 AlgoRover Live,再到策略广场找到本文的“基于成交量的动态定投策略”。复制下面这段提示词,就可以让 AI 帮你找到本文策略。
找到本文策略
请添加插件市场 https://github.com/AlgoRover/algorover-hub,并安装 AlgoRover Live;如果已经安装,请直接使用。然后打开 Live Dashboard,在策略市场中搜索“基于成交量的动态定投策略”(volume-based-dynamic-dca-strategy),打开 v1.1.0 的策略详情。
先看回测里的费用、最大回撤和不同行情阶段的表现,再决定要不要继续调整参数、用模拟环境验证。
风险提示:本文为量化策略机制科普,不构成投资建议。历史回测表现不代表未来收益,永续合约等衍生品交易存在较高风险,请根据自身情况谨慎决策。


