动态 DCA 策略详解:什么是动态定投?成交量放大时分批买入的量化策略图解

价格跌了,策略为什么还不买?沿着一个动态DCA案例,看清低点确认、成交量、分批投入和退出怎样一起决定下一步。

动态 DCA 策略详解:什么是动态定投?成交量放大时分批买入的量化策略图解

策略广场里几千个策略,你到底在选什么?

打开 OKX 或币安的策略广场,成百上千个策略排在眼前,收益率曲线一个比一个漂亮,"年化 80%""胜率 92%"的标签闪闪发亮。但"看起来都不错"反而更难选:它什么时候买?跌了怎么办?什么时候认亏离场?这些数字背后的运行逻辑,你其实一概不知——多数人最后只能凭收益率排名下注,把钱交给一个读不懂的黑箱。

与其赌排名,不如把规则拆开看。今天我就拿一个具体策略当样本——动态 DCA 相对成交量策略(Dynamic DCA with Relative Volume)——把它的买入、加仓、退出三套规则讲给你听。

先解释下名字:DCA 是"定投"(Dollar-Cost Averaging),把资金分成几份分批投入、摊平成本。传统定投按固定时间扣款,而动态 DCA 由市场信号触发:这个策略只做多,观察一分钟永续合约 K 线,等"价格下跌 + 成交量放大"两个信号同时出现才出手,越跌买得越多。

你可能在实盘里见过它的怪脾气:价格跌了它不买,再跌一截它却突然出手了。为什么?咱们顺着它的思路走一遍就明白了。

什么是局部低点确认?看到一个低价,怎么判断它是不是"底"?

先从一根 K 线说起:每根 K 线就像这一分钟价格的一张"成绩单",记下开盘价、收盘价、最高价和最低价。上下两根细线(影线)的顶端和底端分别是最高价和最低价;中间的粗块(实体)是开盘价与收盘价之间的范围。这一步我们只关心细线的底端——最低价。

局部低点确认(Swing Low Confirmation)指的是:等低点右侧再出现若干根价格更高的 K 线后,才回头认定那个低点成立。 本策略要求右侧再等三根。

从一根 K 线,看懂局部低点

① 细线的底端,就是最低价

以下用上涨的一分钟举例;下跌时,开盘价在实体上端,收盘价在下端。

最高价 108收盘价 105开盘价 100最低价 98上影线实体下影线 AlgoRover
接下来,只比较每根 K 线的最低价 ↓

② 第 4 根最低,等到第 7 根结束才确认

第四分钟结束:右侧三根还没发生

观察
左侧三根第 4 根右侧尚未发生

第七分钟结束:右侧三根的最低价都高于 100

低点确认
左侧三根第 4 根右侧三根已完成
第 4 根标记低点,第 7 根完成确认;每根 K 线代表一分钟。

假设前四分钟的最低价依次是 105、104、103、100。第四分钟结束时,你只知道价格到了 100,第五分钟会不会更低,谁也不知道。

抄底最怕接到"飞刀"——你以为到底了,结果下面还有十八层。这套规则的做法是:不猜,让价格自己证明。

想想坐过山车的体验:俯冲的时候你根本说不清最低点在哪,直到车身重新往上爬了一段,你才反应过来"刚才那一下就是最低"。最低点永远是被"之后开始回升"这件事追认的,而不是在俯冲途中能当场指认的。

这套规则做的就是这件事:先记下 100 这个低点,再等三根 K 线,如果价格一路没再创新低,才回头追认第四根是"局部低点"。

沿着 K 线最低价,确认局部低点。
沿着 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%,把门槛算了一遍。这个数来自历史数据:策略回头比较相邻的确认低点,量一量每次出现更低的低点时,下降了多少。

过去的低点,通常比前一个低多少?

下面每个圆点,都是一个已经确认的低点。这里借一组假设价格,把过程展开看。

1009910097 下降 1%记录 ✓低点抬高不记录下降 3%记录 ✓ AlgoRover
留下下降样本1% 和 3%求算术平均(1% + 3%)÷ 2 = 2%
本例计算结果平均下降幅度 2%

2% 是本例的平均值。策略使用历史样本算出的实际平均下降幅度,数值会随样本更新。

实际数值随历史样本更新。新确认一个低点,就与前一个比较;只在更低时新增样本,对最近最多 4000 个有效样本求平均。

低点持平或抬高时不新增样本。注意:样本是随低点变化积累的,时间间隔不固定,所以它不能直接理解成"最近二十分钟的平均跌幅"。

这样,两件事就接上了:低点确认,给出一张待用的买入券;历史平均降幅,帮助算出这张券要等待的价格。再把它们放回同一条 K 线行情,看看什么时候领券、什么时候才提交买单。

放回同一条行情:先领券,再等条件齐全买入

沿用低点 100 的例子,以下从空仓开始,展示一次首次买入过程。

1105210431034100510261017104891011 低点 领券 买入 94.8 右侧三根完成 旧券已用 根AlgoRover
4 低点 1007 确认领券8 本例买入
为什么这个例子在第 8 根买?

收盘价 94.8 ≤ 买入门槛 97.8;本例此前空仓,这次是首笔订单。 相对成交量为 2.73 倍,大于 2;分批额度、资金和订单检查也通过。

领券固定等待右侧三根;买入等条件全部满足,可能当根满足,也可能继续等多根。本例第 8 根满足。

不过,价格够低只满足了一个条件。接下来还要看这个位置的交易是不是比近期更热闹。

什么是相对成交量(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 倍
当前这一根,也会抬高平均成交量
平均量 110(含当前)300前十九根:每根 100当前300 ÷ 110 ≈ 2.73 倍AlgoRover
当前成交量 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 元。图中金额单位:元。

625第 1 笔1 倍625第 2 笔1 倍1250第 3 笔2 倍1875第 4 笔3 倍2500第 5 笔4 倍前两笔相同,从第三笔开始逐步加大AlgoRover
五笔计划合计6875 元
占总资金 68.75%。每一笔仍需新的低点确认,并通过价格、成交量和资金等检查。

分批计划(案例配置):越到后面单笔越大,五笔合计 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% 上限

五笔计划
6875 元
资金上限
8300 元
六笔计划
10000 元

这就像一桌预算封顶的聚餐:总共只能花 830 块,已经点了五道菜。想再加一道硬菜?那前面五道菜就得换掉几道、换成便宜的——总账单不变,加菜的钱只能从别的菜里省。

加仓也是一个道理:想多加一笔,就得把每笔份额缩小、或者把递增倍数调低,让六笔重新凑进 83% 以内。多加一次机会,改变的是整套资金计划。

在资金上限内,重新分配分批订单。
在资金上限内,重新分配分批订单。

想比较四笔和五笔哪种更适合自己的资金安排,可以把两套方案放到相同条件下做对照回测。

止盈止损怎么设?买入之后什么时候卖?

买入之后还要决定何时卖出。前面讲过,每次加仓都可能改变持仓均价,退出条件也必须跟着实际持仓走。

这套规则以持仓均价为锚,分别设置向上(止盈)和向下(止损)两个退出条件。沿用均价 100、平均下降幅度 2% 的例子:

  • 止盈目标:100 ×(1 + 2% × 1)= 102,收盘价 ≥ 102 时请求平仓;
  • 止损边界:100 ×(1 − 20%)= 80,当根最低价 ≤ 80 时请求退出。
同一套退出规则,两种独立情况
止盈看收盘价 止损看最低价 止盈线 102 均价 100 收盘价 102.2实体上沿 102.2 ≥ 102 → 请求止盈平仓 止损线 80 最低价 79.5下影线末端 79.5 ≤ 80 → 请求止损平仓 AlgoRover
左右分别放大关键价格区间。每一分钟结束后检查:止盈看实体上沿的收盘价,止损看下影线末端的最低价。

注意两边用的检查价格不一样——止盈看收盘价,止损看最低价。

可以这样记:对待盈利用"最稳"的传感器,对待风险用"最敏"的传感器。 止损边界像烟雾报警器——哪怕只冒了一缕烟就散了,报警器也会响;

止盈目标则像验收签字——要等这一分钟尘埃落定、收在目标之上才算数。如果同一根 K 线触及止损边界,程序优先处理退出,跳过加仓。

在 K 线上区分最低价止损与收盘价止盈。
在 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:

  1. "这个策略最近在 BTC 永续合约上的表现如何?费用和回撤是多少?"
  2. "把成交量窗口改成 40 根,和原版做对照回测。"
  3. "帮我建立一个 4 笔分批的自定义版本,比较两者的资金利用率。"

也可以先阅读这篇策略参数对比的实操案例,看看别人是怎么一步步用对话做策略研究的。


下一步:这个策略靠不靠谱?带着它去问 AI

回到开头那个场景:策略广场里的策略永远是看不完的,但"拆规则"的方法是可以带走的。低点怎么确认、门槛怎么算、量能怎么比、加仓有没有上限、退出看什么价格——用这五问去套任何一个策略,黑箱就透明了一大半。

如果想继续研究,先安装 AlgoRover Live,再到策略广场找到本文的“基于成交量的动态定投策略”。复制下面这段提示词,就可以让 AI 帮你找到本文策略。

找到本文策略

复制提示词:安装 Live,找到本文策略
请添加插件市场 https://github.com/AlgoRover/algorover-hub,并安装 AlgoRover Live;如果已经安装,请直接使用。然后打开 Live Dashboard,在策略市场中搜索“基于成交量的动态定投策略”(volume-based-dynamic-dca-strategy),打开 v1.1.0 的策略详情。

先看回测里的费用、最大回撤和不同行情阶段的表现,再决定要不要继续调整参数、用模拟环境验证。

风险提示:本文为量化策略机制科普,不构成投资建议。历史回测表现不代表未来收益,永续合约等衍生品交易存在较高风险,请根据自身情况谨慎决策。