DAS Locate 成本模型与结果核对
建模询价、分配与重试,不虚构跨券商通用接口。
扩展流程,而不只延长命令串
前置知识:Locate 基础与自定义对象。InquiryShare、Inquire 用于准备和询价,LocateLowest 可发起实际借股。所核对公开指南没有定义结构化返回对象或通用费用上限参数。进阶实现应分成可移植的计算/状态层,以及针对实际 ShortLocate 命令表和券商验证的适配层。
建模一条已观察响应
Advanced Script · 仅做假设算术。以下为人工提供的测试数据,不是 DAS Locate API 返回属性。假定价格单位为美元/股,最低收费与其他费用不在这个简化模型内。
成本工作表
$feLocateReview = NewUserObj();
$feLocateReview.requested = 200;
$feLocateReview.available = 150;
$feLocateReview.pricePerShare = 0.025;
$feLocateReview.feeCap = 4.00;
$feLocateReview.candidate = $feLocateReview.requested;
if ($feLocateReview.candidate > $feLocateReview.available) {
$feLocateReview.candidate = $feLocateReview.available;
}
$feLocateReview.estimatedFee = $feLocateReview.candidate * $feLocateReview.pricePerShare;
$feLocateReview.withinCap = 0;
if ($feLocateReview.candidate > 0) {
if ($feLocateReview.pricePerShare >= 0) {
if ($feLocateReview.estimatedFee <= $feLocateReview.feeCap) {
$feLocateReview.withinCap = 1;
}
}
}
MsgBox($feLocateReview.candidate, $feLocateReview.estimatedFee, $feLocateReview.withinCap);
正确解释输出
预期候选数量 150、模型费用 3.75,在假设下未超过 4 美元。但这不等于可以借股:数量不足 200、报价可能失效、可能另有费用,最终价格也可能不同。是否接受部分数量必须是明确规则,不能悄悄改写 requested。零价格可能合法,也可能代表缺失,应由响应适配层区分。
结果核对记录
记录账户、股票、提供方、请求量、询价时间、报价数量、单位、选择数量、实际分配量、收费与状态。状态区分已请求/等待/已观察/未知/失败,不能只有 success 布尔值。响应丢失属于未知,不自动属于失败。重试前查原请求与分配记录,交易撤单不等于撤销借股费用。
如何扩展券商相关命令
对客户端中的 InquireAll、自动 Locate、价格上限等,先从 Script Builder 记录精确签名和单位,再写适配层。询价与承诺分开测试,确认券商是否提供不计费测试环境。本章不虚构轮询字段、LocateStatus() 或回调名;未确认的部分使用人工核对步骤,不伪装成可工作的代码。
练习与参考解答
可用数量改为 200、单价 0.03,参考结果:候选 200、费用 6、withinCap=0。可用数量为零时,候选零,虽然费用也是零,withinCap 仍为零。再增加报价过期标记,只有未过期才可进入核对状态;这个标记本身必须来自已确认的观察来源。