【摘要】探索一套将量化交易策略与实时数据流结合的系统架构,旨在为盘中交易提供确定性、可执行的操作建议,实现从策略到工程的闭环。

引言

在A股市场中,盘中交易充满了不确定性。价格的瞬息万变、资金的暗流涌动,以及市场情绪的快速切换,都对交易决策构成了严峻挑战。许多量化策略在历史回测中表现优异,但在实盘环境中却常常因为延迟、噪声或执行偏差而大打折扣。问题的核心在于,如何构建一个能够实时响应市场变化严格执行既定规则,并输出清晰可执行指令的系统。

这不仅仅是一个策略问题,更是一个复杂的工程挑战。它要求我们将抽象的交易思想,转化为一套由数据驱动、逻辑严密、且具备高可用性的技术架构。本文将详细拆解一个A股盘中实时决策系统的完整设计与实现思路,覆盖从顶层设计哲学到底层数据契约、从多周期策略引擎到用户交互场景的全部环节。我们的目标不是提供一个必胜的“圣杯”,而是展示一种将交易员的盘中思考过程,系统化、工程化的实现路径。

一、🏛️ 系统设计哲学:从“交易员直觉”到“确定性规则”

构建任何一个复杂的系统,起点都应是清晰的设计哲学。对于一个旨在辅助交易决策的系统,其设计哲学直接决定了系统的可靠性与实用性。我们摒弃了试图预测市场的“黑箱模型”,转而拥抱一套基于“规则、确认与风控”的透明化决策框架。

1.1 可执行性优先

系统输出的任何信号,如果不能被清晰地理解和执行,那就毫无价值。因此,可执行性是我们设计的首要原则。这意味着每一条建议都必须包含四个核心要素。

  1. 明确的动作:持有、增仓、减仓、清仓。

  2. 量化的仓位:相对当前持仓变动±X%。

  3. 具体的价位:提供可直接挂单的限价(如SellS1/SellS2)与可设置条件单的止损触发价(StopS)。

  4. 清晰的理由:解释触发了哪条规则,关键因子是什么,当前值与阈值的对比如何。

这种设计确保了用户在收到信号时,无需进行二次解读,可以直接转化为交易终端上的具体操作。

1.2 杜绝未来函数

在量化领域,未来函数(Future Leakage)是导致回测“虚高”的头号杀手。在实时系统中,这个问题同样致命。我们的核心原则是,在任何一个评估时间点 t,系统只能使用 t 时刻及之前可知的信息。

为了严格遵守这一原则,我们对数据进行了分层处理。

  • 日频指标(慢变量):如MA20、布林带、MACD、RSI等,这些指标的计算必须基于 T-1日(或更早)的收盘数据。它们为当天的交易提供了一个稳定的“背景参考系”。

  • 盘中数据(快变量):如现价、分钟级成交量额、VWAP、实时资金流等。这些数据用于在T-1日确定的背景参考系中,实时触发交易决策。

这种设计确保了系统的每一个决策都有坚实的历史数据支撑,同时又能敏锐地捕捉盘中的最新变化。

1.3 决策分层:趋势、资金与风控

一个稳健的交易决策,通常不是由单一指标决定的。它更像是一个多层滤网,逐层确认信号的有效性。我们的规则引擎也遵循这一分层逻辑。

  1. 趋势层:由MA20、布林带、MACD等指标构成,负责判断当前价格所处的宏观技术状态(如多头排列、空头排列、盘整区间)。这是决策的基石。

  2. 确认层:由分钟级的主力资金净流入占比(net_inflow_main_ratio)VWAP偏离度等指标构成。当价格触及趋势层的关键位置时,资金是否同步跟进,是判断信号真伪的关键。例如,放量突破MA20,远比缩量突破更可靠。

  3. 风控层:由止损线(Stop Price)波动率(vol_20d)最大回撤(max_drawdown_250d)以及ST状态等构成。它为所有交易决策划定了一条不可逾越的红线,是保证系统长期生存的最后一道防线。

这三层结构确保了系统的决策既有方向感,又有确认度,更有安全垫。

1.4 架构理念:事件驱动与配置化

市场是动态的,系统也必须是灵活的。我们采用事件驱动(Event-Driven)的架构,系统的核心逻辑由市场数据流的变化来驱动,而非固定的轮询。同时,所有策略参数,如RSI的超买阈值、止损的百分比、减仓的仓位比例等,全部外部化配置

这种设计带来了两大好处。

  • 高响应性:分钟级资金流的异动可以立即触发评估,系统能更快地响应市场。

  • 高灵活性:策略优化师可以不修改代码,仅通过调整配置文件,就能快速迭代和优化策略,适应不同的市场风格。

二、🏗️ 核心架构:数据驱动的实时决策流

基于上述设计哲学,我们构建了一个模块化、高内聚的系统架构。整个系统可以看作一条精密的流水线,原始数据从一端输入,结构化的决策报告从另一端输出。

2.1 系统模块解耦

我们将系统拆分为七个核心模块,每个模块职责单一,便于独立开发、测试与维护。

模块名称

核心职责

Data Adapter (数据接入)

负责从行情源、资金流源、因子库和持仓库中获取并标准化所有输入数据。

Validator (校验与降级)

校验输入数据的完整性与有效性,处理停牌、数据缺失等异常,并执行降级策略。

Feature Assembler (特征装配)

基于原始数据计算盘中衍生指标(如dev_ma20),统一数据口径。

Rule Engine (规则引擎)

核心决策模块,并行评估短、中、长线策略,并根据优先级输出唯一动作。

Price Engine (定价与约束)

根据规则引擎的输出,生成具体的卖出价位和止损价,并用涨跌停价进行约束。

Explain Engine (解释引擎)

生成决策的可解释性报告,说明触发了哪条规则,关键因子数值如何。

Report Generator (报告生成)

将所有结果格式化为用户可读的完整报告、列表表格以及机器可读的JSON。

Notification Engine (通知引擎)

(可选)负责处理Push场景,执行事件判断、去重、冷却和频控逻辑。

2.2 实时数据流图

下图清晰地展示了当一次评估被触发时,数据在各个模块之间的流动路径。

这个流程确保了每一次决策都是基于同一时间点(as_of)的完整快照,避免了数据不同步导致的问题。

2.3 数据分层:慢变量与快变量的协同

如前所述,数据分层是杜绝未来函数的关键。在工程实现上,这意味着数据接入层(Data Adapter)必须清晰地区分两类数据。

  • 慢变量(Slow Variables):这些数据在盘前一次性加载或从T-1的因子库中获取。它们在整个交易日内保持不变,构成了当日决策的“静态地图”。

  • 快变量(Fast Variables):这些数据通过分钟级的消息队列或API推送进入系统。它们是地图上的“动态指针”,其实时变化驱动着规则引擎的每一次评估。

这种快慢分离的设计,极大地简化了系统的状态管理,提升了处理效率和决策的可靠性。

三、📦 输入契约:构建稳健的数据基石

垃圾进,垃圾出。一个决策系统的上限,取决于其输入数据的质量和完备性。我们为系统定义了一套严格的数据输入契约,确保规则引擎有足够的“弹药”来进行精确裁决。

3.1 数据输入概览

下表汇总了系统运行所需的核心数据字段,并解释了其在决策中的作用。

数据类别

关键字段

中文名称

作用与 rationale

标识与状态

ticker, is_trading, is_st

证券代码, 是否交易, 是否ST

唯一标识,处理停牌与重大风险升级。

盘中实时行情

last_price, vwap, limit_up/down_price

现价, VWAP, 涨跌停价

触发决策的核心,当日成本锚,执行价格约束。

盘中资金流

net_inflow_main_ratio, net_inflow_nb

主力净流入占比, 北向净流入

决策的“确认”信号,判断资金真实意图。

T-1趋势因子

ma20, boll_upper/mid/lower_20d, macd_hist

20日均线, 布林带, MACD柱

定义短、中线趋势状态与关键攻防位置。

T-1情绪/风险因子

rsi_14, vol_20d, max_drawdown_250d

RSI, 20日波动率, 最大回撤

判断市场是否过热,评估风险敞口,动态调整止损。

持仓信息

position_shares, available_shares

持仓股数, 可卖股数

用于计算可执行的卖出数量,遵循T+1规则。

长线/事件

cons_target_price, lockup_release_date

一致预期目标价, 解禁日期

为长线策略提供估值兑现锚点与事件风险提示。

这套数据契约的设计,旨在实现决策所需信息的最小完备集,既保证了策略的有效性,又避免了不必要的数据冗余。

四、⚙️ 规则引擎:多周期策略的并行裁决

规则引擎是系统的大脑。它接收装配好的特征数据,并根据预设的逻辑,输出明确的交易动作。我们的引擎核心特点是多周期并行优先级裁决

4.1 优先级设计:安全第一

在任何一个周期(短、中、长)内部,规则的评估都遵循严格的优先级顺序。

清仓 > 减仓 > 增仓 > 持有

这意味着,系统会首先检查是否存在需要立即清仓的极端风险信号。只有在清仓条件不满足时,才会继续评估减仓、增仓和持有的条件。这种设计确保了风险控制永远是第一位的。

4.2 短线策略(1–5天):布林带、RSI与资金流的共振

短线交易的核心是捕捉情绪与资金的共振。策略逻辑围绕“识别极端状态并寻求资金确认”来构建。

  • 减仓/止盈逻辑:当价格触及布林带上轨(boll_upper_20d)且RSI进入超买区(如≥72)时,这是一个典型的技术性过热信号。但为了过滤假突破,我们引入盘中资金流作为确认。如果此时主力资金净流入占比(net_inflow_main_ratio)转为负数,或现价显著偏离VWAP(dev_vwap ≥ +1.2%),这通常意味着“拉高出货”的风险,减仓信号的强度会大幅提升。

  • 清仓/止损逻辑布林带中轨(boll_mid_20d)被视为短线生命线。当价格跌破中轨,尤其是伴随着主力资金净流出价格低于当日VWAP时,表明多头力量衰竭,触发清仓信号。

4.3 中线策略(5–20天):MA20趋势与MACD结构的确认

中线交易更注重趋势的延续性。策略的核心是“跟随趋势,并在结构破坏时退出”。

  • 核心趋势线20日移动平均线(ma20)是判断中线趋势多空的分水岭。价格在其上,视为多头趋势;价格在其下,视为空头趋势。

  • 结构确认MACD指标用于确认趋势的健康度。当价格站上MA20,同时MACD金叉且柱状体(macd_hist)为正时,是中线看多的经典结构。反之,当价格跌破MA20,且MACD死叉时,则是明确的中线离场信号。

  • 资金验证:同样,中线操作也需要资金流的验证。在趋势向好时,若主力资金持续净流入,则增仓的确定性更高。

4.4 长线策略(>20天):基本面与风控的锚定

长线持有的决策,更多地依赖于基本面估值和对重大风险的规避,对短期价格波动的容忍度更高。

  • 估值兑现:当股价达到券商一致预期目标价(cons_target_price),或其市盈率(pe_ttm)进入历史高位,且净资产收益率(roe_ttm)没有同步提升时,触发长线减仓信号,锁定利润。

  • 硬风控:长线持有的最大敌人是巨大的回撤。当个股的历史最大回撤(max_drawdown_250d)超过预设阈值(如-30%),且价格仍处于MA20下方时,触发长线清仓信号,避免陷入更深的亏损。

  • 事件驱动:临近大规模限售股解禁(lockup_release_date)时,若股价趋势走弱,系统会提升风险等级,收紧止损线。

五、🎯 定价引擎:从“动作”到“可执行订单”

规则引擎给出了“做什么”(减仓)和“做多少”(-30%),而定价引擎(Price Engine)则负责回答“在哪里做”。它将抽象的交易动作,转化为具体的、符合交易规则的限价单和条件单参数。

5.1 卖出价位(Sell Prices)的分层设计

为了兼顾成交概率卖出价格,我们设计了两档卖出价位:SellS1和SellS2。

  • SellS1(高概率成交价):这一档价格的设计目标是尽快成交。它通常取当日VWAP关键技术位(如布林带上轨)中的较大值,再向下浮动一个微小的滑点(如-0.2%)。

    • 计算公式示例SellS1 = max(vwap, boll_upper_20d) * (1 - 0.002)

    • 逻辑:VWAP是当日市场参与者的平均持仓成本,在此价格附近卖出,成交阻力较小。而技术压力位则是潜在的抛压集中区。取两者之中的有利价格,并略作让步,可以有效提高成交率。

  • SellS2(理想博弈价):这一档价格的设计目标是博取更好的卖点。它通常在关键技术位的基础上,向上浮动一个滑点(如+0.3%)。

    • 计算公式示例SellS2 = boll_upper_20d * (1 + 0.003)

    • 逻辑:当市场情绪高涨时,价格可能会短暂冲破技术压力位。设置SellS2,可以在不追高的情况下,尝试捕捉这种“过冲”带来的额外收益。

5.2 止损价位(Stop Price)的动态设定

止损是交易的生命线。我们的止损价位并非固定不变,而是根据交易周期市场波动率动态调整。

  • 短线止损(StopS):紧密跟随,通常设置在布林带中轨下方一个较小的百分比(如-0.6%)。

  • 中线止损(StopM):给予趋势一定的容错空间,通常设置在MA20下方一个稍大的百分比(如-1.0%)。

  • 长线止损(StopL):容忍度最高,通常设置在MA20下方一个更大的百分比(如-2.0%),以过滤掉大部分市场噪音。

未来版本还可以引入20日波动率(vol_20d)作为动态调整因子。当市场波动加剧时,自动放宽止损范围,避免被无效波动“震”出场;当市场趋于平稳时,则收紧止损,保护利润。

5.3 交易规则约束

所有计算出的价位,都必须经过合法性约束模块的处理,才能最终输出。

  1. Tick取整:所有价格必须按照交易所规定的最小变动价位(price_tick)进行取整。我们推荐向下取整,因为这能略微提高卖出订单的成交概率。

  2. 涨跌停约束:任何输出的卖出价都不能高于涨停价(limit_up_price),任何止损价都不能低于跌停价(limit_down_price)。如果计算结果超出范围,系统会将其钳制在边界值,并附带“可能难以成交”的风险提示。

  3. 停牌处理:如果is_trading=0,系统将不会输出任何可执行的卖出价位,仅保留止损价作为“若恢复交易,需关注的风险位”提示。

六、💬 输出场景:Pull与Push的协同工作

一个好的决策系统,不仅要算得准,还要在合适的时机,以合适的方式将信息传递给用户。我们设计了Pull(主动查询)和Push(被动推送)两种模式,以适应不同的用户需求。

6.1 Pull模式:深度诊断的“体检报告”

这是系统的核心使用场景。用户可以随时对持仓或关注的股票发起一次“深度诊断”。系统会返回一份详尽的、结构化的报告。

  • 触发方式:用户在UI界面点击“生成报告”按钮。

  • 刷新机制:页面可以设置一个60秒的自动刷新周期,与分钟级资金流的更新频率保持同步,确保用户看到的是最新的市场解读。

  • 内容呈现:报告内容必须结构化、分层级,从顶层的核心结论,到中层的多周期分析,再到底层的关键数据支撑,一目了然。

6.2 Push模式:关键事件的“预警雷达”

Push模式的目标不是信息轰炸,而是在关键时刻发出高信噪比的预警。它只在系统判断市场发生了“重大状态变化”时才被触发。

  • 事件定义:我们定义了两类需要立即推送的强事件

    1. 清仓信号触发:任何一个周期的建议从非清仓变为“清仓”。

    2. 止损线首次被击穿:现价首次从上方向下穿越任何一个周期的止损线(StopS/StopM/StopL)。

  • 状态机与冷却机制:为了避免在震荡行情中频繁推送,后台必须为每只被监控的股票维护一个状态机

    1. 状态变化才推送:只有当评估出的新状态(如{action: "减仓"})与上一分钟的旧状态(如{action: "持有"})不同时,才进入推送流程。

    2. 冷却时间(Cooldown):一旦某个规则(如M-CLEAR-01)触发了一次推送,那么在接下来的10分钟内,即使该规则被反复触发,也不会再次推送。这极大地提升了用户体验。

    3. 用户级频控:在系统层面,还应设置一个用户维度的总频率上限,例如每分钟最多接收2条弹窗,超出部分自动转为站内信,避免打扰。

  • 消息设计:Push消息必须极度精简,直击要点,并提供一个“查看完整报告”的入口,将用户引导回Pull模式进行深度分析。

七、📊 报告范例:将数据转化为洞察

下面,我们通过一个虚拟个股的完整案例,展示系统如何将冰冷的数据,转化为一份有温度、可执行的决策报告。

7.1 场景设定

  • 虚拟个股:688888.SH 星云科技

  • 评估时间:2025-12-29 10:31:00

  • 盘中行情:股价早盘强势拉升,涨幅超过3%,触及布林带上轨,但盘中主力资金净流入占比开始由正转负,呈现出一定的价量背离迹象。

7.2 完整提示报告(页面全文)

【盘中交易提示报告】

  • 评估时间:2025-12-29 10:31:00(+08:00)

  • 股票:688888.SH 星云科技

  • 交易状态:可交易

  • 涨停/跌停:26.40 / 21.60

一、盘中快照(用于执行)

指标

数值

解读

现价 (last_price)

24.86

-

盘中涨跌幅 (chg)

+3.58%

强势

VWAP偏离 (dev_vwap)

+1.84%

价格高于当日平均成本

主力净流入占比

-1.8%

资金开始流出,注意背离风险

北向资金净流入

+8,500,000 元

外资偏好

二、T-1关键位(趋势与锚)

  • MA20(20日移动平均线):23.40

  • 布林带:上轨 24.90 / 中轨 23.50 / 下轨 22.10

  • RSI14:73.6 (进入超买区

三、短线建议(1–5天)

  • 动作减仓(reduce)

  • 相对当前持仓-30%

  • 可执行卖出单(限价单,当日有效)

    • SellS1 = 24.85

    • SellS2 = 24.97

  • 条件止损触发价StopS = 23.36

  • 触发规则与原因

    • S-REDUCE-01:触上轨+RSI超买。last_price(24.86) 接近 boll_upper_20d(24.90)rsi_14(73.6) ≥ 72。

    • 风险提示dev_vwap(+1.84%) > 0 但 net_inflow_main_ratio(-1.8%) < 0,存在资金背离,冲高回落风险增加

四、中线建议(5–20天)

  • 动作持有(hold)

  • 中线止损/清仓线StopM = 23.17

  • 理由last_price > ma20macd_hist > 0,中线趋势结构依然健康。

五、长线建议(>20天)

  • 动作持有(hold)

  • 长线止损/清仓线StopL = 22.93

  • 理由:基本面无重大变化,未触及估值兑现或硬风控条件。

7.3 推送消息范例

场景:用户开启了“中等事件”推送,当系统首次生成上述报告时,会触发一次Push。

  • APP弹窗

    • 标题:星云科技 短线建议减仓30%

    • 正文:SellS1=24.85,SellS2=24.97,StopS=23.36。原因:触及布林上轨+RSI超买,且主力资金出现背离。

    • 按钮:查看完整提示报告

  • 短信

    【盘中提醒】688888 星云科技:短线触发减仓(-30%)。参考卖价24.85,止损23.36。原因:技术性超买且资金背离。详情:{URL}

结论

我们详细阐述了一个A股盘中实时决策系统的完整设计方案。这个系统并非一个追求高频交易的“阿尔法”模型,而是一个旨在增强人类交易员决策能力的“辅助驾驶”系统。它通过将成熟的技术分析规则、实时的资金流数据与严格的工程化约束相结合,试图在充满噪声的盘中环境中,为交易者提供一个冷静、客观、且可执行的决策参考。

从设计哲学到具体实现,我们始终强调可解释性、可执行性和风险控制。系统的价值不在于预测未来,而在于严格执行一套正期望的交易纪律,帮助交易者克服情绪的干扰,在波动的市场中保持一致性。未来的迭代方向将聚焦于引入更多维度的因子(如历史分位估值、行业轮动等),并探索将规则引擎与机器学习模型相结合,以实现更智能的动态阈值调整。

📢💻 【省心锐评】

这套架构的核心,是将交易员的盘中“心法”固化为确定性的工程“算法”。它不追求预测,而是通过规则、确认与风控的闭环,赋予交易决策以纪律性和一致性,这正是穿越市场周期的关键。