综合练习:只读的 DAS 检查工具
把明确依赖、条件检查和可观察结果连接起来。
先定义契约
为命名 Montage 做一次性价差检查器:读取两个价格,拒绝非正值或颠倒输入,显示差值。它不选择交易,不改订单输入,也不请求 Locate。
Advanced Script · 读取与显示 · FennEdge 尚未在客户端实测。 需要开启 Advanced Script、存在 feMontage 窗口且行情可用。先完成第 1 课对象检查;本示例的条件没有覆盖“对象不存在”的行为。
$feWindow = GetWindowObj("feMontage");
$feBid = $feWindow.BID;
$feAsk = $feWindow.ASK;
$feSpread = 0;
if ($feBid > 0) {
if ($feAsk > 0) {
if ($feAsk < $feBid) {
MsgBox("Inverted quote: inspect feed");
return;
}
$feSpread = $feAsk - $feBid;
MsgBox($feSpread);
} else {
MsgBox("Ask unavailable");
return;
}
} else {
MsgBox("Bid unavailable");
return;
}
执行之前先逐行推演
假设 Bid 为 12.40、Ask 为 12.43,数学结果是 0.03;两个正价格相等,结果为零;Bid 或 Ask 为零,显示信息并停止;Ask 小于 Bid,提示报价颠倒后停止。这些是练习的输入规则,不是对所有市场状态的通用分类。
两次属性读取不是原子的行情快照。中间报价可能变化;脚本也不证明新鲜度、订阅质量或成交价。把这些限制与结果一起记在练习记录里。
验收清单
- 确认准确 build、模拟环境、窗口与股票。
- 读取实际行情前,先用假设数字推演每个分支。
- 检查没有写订单字段、提交、撤单、Locate 或辅助脚本调用。
- 单次运行,记录观察时间,与可见报价对照。
- 改变焦点,再改变股票,分别重试并解释结果。
与自己的工作区连接
在研究中查看带来源的股票证据,在复盘里整理自己的复盘。脚本观察值应和时间、配置放在一起,不自动变成 FennEdge 的市场结论。分享笔记时去掉私有账户标识。
把单次检查变成可交接的作品
交付物不仅是代码,还包括窗口命名说明、依赖清单、输入与输出字段、预期样例、错误分支和停止方式。让另一位读者只凭这些说明在自己的模拟环境准备相同对象,才算完成本课的可复现目标。
检查器输出应该包含本次是否有效,不能在失败时保留上次价差作为当前值。若想保留历史,使用单独的历史记录字段,并把它清楚标为历史。记录一次 Bid/Ask 不意味着跨字段原子采样。
综合项目路线
| 项目 | 新增的编程能力 | 核心验收 |
|---|---|---|
| 多股票观察簿 | 集合、记录结构、逐行校验 | 两条记录独立,失败不沿用旧值 |
| 事件观察器 | Timer、状态机、滞回、启停 | 同一区间不重复触发,回退时钟可处理 |
| 订单审计台 | 精确查询、数量核对、证据分类 | 查询身份明确,请求与终态分开 |
练习解答
当 Ask 小于 Bid 时,本课不输出一个“有效负价差”。先标记本次无效,保留输入用于调查。名称缺失时修复对象依赖;它不是一个可以用数字零替代的正常行情场景。完成后才能把读取器接入更频繁的事件入口。