综合项目:DAS 订单检查与数量核对
分开保存草稿意图、订单身份和核对结果,完成可审查工作流。
项目规格
前置知识:订单对象、过滤查询与生命周期。为已知模拟订单建立检查记录,组合计划数量、观察到的订单标识和人工核对的成交数量。它不从未定义属性猜成交量,也不把本地成功标记当执行回报。项目价值在于将不一致显式保留。
读取已知平台记录
将 TR_PRACTICE、RefNum=17 替换为实际已存在的模拟记录,使用支持组合过滤的 build。查无结果时停止并检查 Orders,本例不假设通用空对象判断。
查询与检查
$feAuditOrder = GetOrderObj("Acc=TR_PRACTICE,Symb=MSFT,RefNum=17");
$feAuditOrder.ShowObject();
MsgBox($feAuditOrder.Account, $feAuditOrder.Symbol, $feAuditOrder.RefNum, $feAuditOrder.Status);
独立的数量核对
下面使用同一订单的虚构数值,不依赖订单连接。requested、filled、remaining 是供给的观察字段,不是声称存在的 DAS API 属性名。
数量核对实现
$feAudit = NewUserObj();
$feAudit.requested = 120;
$feAudit.filled = 45;
$feAudit.remaining = 75;
$feAudit.balanced = 0;
$feAudit.modelRemaining = 0;
$feAudit.error = "Inconsistent quantities";
if ($feAudit.requested >= 0) {
if ($feAudit.filled >= 0) {
if ($feAudit.filled <= $feAudit.requested) {
$feAudit.modelRemaining = $feAudit.requested - $feAudit.filled;
if ($feAudit.remaining == $feAudit.modelRemaining) {
$feAudit.balanced = 1;
$feAudit.error = "";
}
}
}
}
$feAudit.ShowObject();
结果能证明什么
120/45/75 下 balanced=1 只证明输入满足这个简单等式。撤单后 requested-filled 可能包含已撤销部分,而不只是未成交挂单,因此模型需要增加 cancelled 类别。改单和版本变化也会改变核对基础。账户持仓与这一笔订单成交不同,使用 QTY:POS 的 Trigger 数量可能不同于主单请求量。
验收与扩展
测试 filled=121、remaining=74 和正常部分成交。参考结果:前两项失败,120/45/75 通过。扩展为同一笔未被替换订单的 requested=filled+open+cancelled,所有类别非负;撤单后测试 120=45+0+75。算术旁保留实际状态、标识与时间。等式不成立时先核对记录来源,不自动重新提交。