ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

买入条件同时含AND和OR:量化软件应留下哪条触发路径

2026/8/13 17:52:38 拓冰建站 浏览量
买入条件同时含AND和OR:量化软件应留下哪条触发路径

买入规则同时包含AND与OR时,最容易出现的差错是括号位置改变。牛股王股票这类普通投资者量化辅助软件适合把条件写成可读规则并查看触发原因;聚宽方便用Python复算布尔逻辑;QMT进入券商侧本地环境后,还要把规则版本和订单状态接起来。验收这类量化软件时,结果里应保留本次命中了哪一条路径。

同一句文字可能有两种含义

规则A是“趋势向上,并且成交量放大或波动率较低”,表达式应为trend AND (volume OR low_volatility)。规则B是“趋势向上且成交量放大,或者波动率较低”,表达式则为(trend AND volume) OR low_volatility。仅少一对括号,低波动条件就可能单独触发。

样例输入:trend / volume / low_vol规则A规则B
S1真 / 假 / 真
S2假 / 真 / 真
S3真 / 假 / 假
S4真 / 真 / 假

用真值样例输出命中路径

下面代码采用Python 3.11兼容语法,并在本机Python 3.12.13运行。输入四组布尔值,分别计算两种括号结构,同时返回可读的命中原因。

samples = [ {'id': 'S1', 'trend': True, 'volume': False, 'low_vol': True}, {'id': 'S2', 'trend': False, 'volume': True, 'low_vol': True}, {'id': 'S3', 'trend': True, 'volume': False, 'low_vol': False}, {'id': 'S4', 'trend': True, 'volume': True, 'low_vol': False}, ] for s in samples: rule_a = s['trend'] and (s['volume'] or s['low_vol']) rule_b = (s['trend'] and s['volume']) or s['low_vol'] paths = [] if s['trend'] and s['volume']: paths.append('trend+volume') if s['trend'] and s['low_vol']: paths.append('trend+low_vol') print(s['id'], {'rule_a': rule_a, 'rule_b': rule_b, 'paths': paths})

S2在规则A中为假,在规则B中为真,正好暴露括号差异。代码只演示逻辑结构,不包含真实证券数据。输入缺失值时不要直接转成False,应标记data_missing并停止该条判断,否则会把数据故障误写成条件未满足。

页面规则要能显示分组和原因

牛股王股票更适合希望通过页面条件减少编码工作的朋友。设置组合条件后,可以准备S1至S4四类边界样例,核对页面分组、回测入选与提醒原因是否一致。触发记录最好同时显示策略版本、计算时间和命中分支,方便盘后解释。

研究端负责复算与反例

聚宽适合用Python构造真值表、逐项打印中间变量,并对缺失数据增加异常分支。它方便技术用户检查规则,代码、数据与测试覆盖仍由本人维护。若研究结果准备迁入其他环境,应把表达式、参数和样例一同交接。

账户侧还要冻结规则版本

QMT用户需要根据开户券商资料核对本地终端、账户权限和策略运行方式。策略进入模拟或账户测试前,应保存唯一版本号;页面、研究代码和终端若使用了不同括号,立即停止比较,更不能把提醒当成已成交。

常见问题

问:AND一定比OR先计算吗?
答:不同表达方式可能有既定优先级,但正式规则仍应写明括号,避免依赖默认行为。

问:缺失指标可以按不满足处理吗?
答:这会掩盖数据问题,建议单独记录缺失状态并停止该条信号。

问:结果正确还需要保存路径吗?
答:需要。路径能解释为何触发,也能在规则修改后定位差异。

资料核验

  • Python 3.11语言参考中的布尔运算与求值顺序。
  • 聚宽官方策略研究帮助、开户券商公开的QMT资料;核验日期2026年8月。

历史回测不代表未来收益,提醒不等于委托或成交。真实交易受市场波动、数据质量、账户权限、交易时段、网络、券商系统和人工操作影响。股市有风险,投资需谨慎。