系统化策略(基于规则的策略)

系统化策略(systematic strategy)是一套完全由书面规则界定的交易流程:相同的输入永远导出相同的入场、出场、仓位和放弃交易的决定,无论这些规则是由人执行还是由程序执行。

Senzoukria · 术语表 · 更新于 2026 年 9 月


系统化说的是规则,不是电脑

它的决定性属性是确定性。给定同样的已收线 K 线、同样的时段过滤和同样的账户状态,一条系统化策略每次都会得出相同的决定。交易者可以用手去执行这样的规则,脚本也可以自动执行。被排除在外的是当下的临场裁量:一条写成「如果 delta 看起来够有说服力就入场」的规则不是系统化的,因为同一根 K 线,两个人可以读出两种结论。

正因如此,量化交易入门指南才说量化交易既可以是手动的,也可以是自动的。自动化是后面的一步,它让重复变得更便宜、让失误变得更少;但它并不能把一条含糊的规则变精确。

一套完整规则的构成

一套完整的规则需要写明的组成部分
组成部分它回答的问题
标的范围与时段哪个品种、哪些时间、哪种 K 线构造方式
信号哪一个计算出的条件,回看多长、阈值多少,在已收线 K 线上评估
入场时机在哪个价位、什么时候入场,例如下一根 K 线的开盘价
出场止损、目标位、时间止损,以及两者在同一根 K 线内都被触及时怎么处理
仓位大小下多少手,依据的是哪一份风险预算
放弃交易什么时候不交易:时段收尾、同时只持一仓、状态过滤器

系统化与裁量式订单流的区别

  • 裁量式的订单流阅读,靠足迹图、DOM 和热力图逐根 K 线形成判断。它可以既熟练又稳定,但仍然不是系统化的。
  • 同一个想法的系统化版本,必须把判断归约成数据里真实存在的字段:每个价位上成交的买卖量、delta、按写明比率界定的失衡、已收线 K 线的价格。
  • 有些观察经不起这种翻译。排队位置、隐藏的后备挂单、某个参与者的意图,都不是数据里的字段,不能成为规则的一部分。

在 Senzoukria 里

策略在脚本编辑器里用 TypeScript、Python 或 C++ 编写,输入是足迹数据,即每个价位的 bid、ask 和 delta。编辑器自带若干模板,例如 Breakout strategy——它以固定止损和目标位买入 N 根 K 线高点的突破,且仅在模拟账户上运行——以及 Python 版的 Mean reversion under regime (HMM + Hurst)。一条策略可以驱动模拟账户、回放,或者在兼容的 Rithmic 账户上、于自动驾驶面板中键入布防词完成布防之后,驱动那个可选的自动驾驶,并受其 Max contracts 和 Max daily loss 限额约束。引导教程把顺序说得很直白:先在你自己的 K 线上回测,再在模拟账户上运行;实盘执行则需要手动给自动驾驶布防。

常见错误

  • 把一条规则称作系统化的,却把出场或仓位留给临场判断。
  • 在时段中途推翻规则,事后却按「规则被完整执行过」来评估这条策略。
  • 以为一条系统化规则因为写成了代码就算被验证过;代码只是让它变得可检验。
  • 把「能在模拟账户上运行的策略」和「获准在出资账户上运行」混为一谈。

其他语言版本

常见问题

系统化策略可以使用 delta、失衡这类订单流输入吗?
可以,前提是这些输入在数据里有定义。每个价位的 delta 是主动买量减主动卖量;对角线失衡则按写明的比率,把某个价位的主动买量与下方一个跳动点上的主动卖量作比较。两者都可以从带方向分类的成交数据算出来,所以规则可以使用它们。基于深度的条件则需要盘口历史,而成交数据本身并不包含它。
系统化策略和自动化策略是一回事吗?
不是。系统化描述的是规则,自动化描述的是谁来执行。一个人完全可以手动遵循一套系统化规则,而程序也完全可能执行一条界定不清、行为未定义的规则。在桌面端,把一条规则自动化到实盘账户上,需要一个独立且显式的布防步骤,并且带有它自己的限额。
为什么信号必须在已收线 K 线上评估?
因为正在形成的 K 线在收线之前一直在变,一条在 K 线中途读取它的规则,会看到历史测试从未见过的数值。在已收线 K 线上评估、在下一根开盘入场,能让实盘行为与回测保持一致,这也正是桌面端历史测试所采用的执行模型。

继续阅读