FennEdge Learn · 编程

DAS Trader Advanced Hotkey Script Course

读懂代码,检查状态,验证结果。 从语言与数据结构,到订单对象、事件工作流和完整项目,系统学习 Advanced Script 编程。

按约 1046 分钟安排,已包含阅读、算例和每课练习;实际用时因人而异。

36节课程≈1046预计分钟—登录后保存进度
29
第 29/36 课 · 约 34 分钟

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 仍为零。再增加报价过期标记,只有未过期才可进入核对状态;这个标记本身必须来自已确认的观察来源。