FennEdge Learn · 编程

DAS Trader Advanced Hotkey Script Course

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

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

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

DAS 脚本按股票组织状态与账户上下文

区分只读行情字段、QuoteObj.data 与账户专属状态。

三种归属与生命周期

前置知识:自定义对象与行情对象。BID、ASK 等字段报告市场观察;QuoteObj.data 是文档明确允许写入的自定义数据槽;账户状态则属于明确指定的账户。同一个股票的 QuoteObj 并不会为两个账户自动生成两份 data。

附加一条有归属的记录

Advanced Script · 读取行情并替换该行情对象的自定义 data。练习会话需已加载 MSFT 行情,且没有其他脚本使用这个 data 槽。初始化不能放在每秒重复执行的 Timer 中。

示例代码

$feQuote = GetQuoteObj("MSFT");
$feQuote.data = NewUserObj();
$feQuote.data.owner = "FE_QuotePractice";
$feQuote.data.schema = 1;
$feQuote.data.enabled = 0;
$feQuote.data.sampleSecond = GetSecond();
$feQuote.data.observedBid = $feQuote.BID;
$feQuote.data.observedAsk = $feQuote.ASK;
MsgBox($feQuote.data.owner, $feQuote.data.observedBid);

什么在更新,什么只是快照

行情对象可能持续暴露变化的报价,observedBid 则只是本次读取的副本。sampleSecond 是脚本观察时间,不是交易所时间。重新赋 data 会替换这个槽中的旧值。多个模块共享时,应建立统一父对象并划分子记录,或使用独立的应用注册表。自定义 armed 标记不能当作券商状态。

账户读取

GetAccountObj("account") 在手册中列出 BP、NBP、Equity。使用准确的模拟账户标识并先检查对象。下方 TR_PRACTICE 是占位名称,不是已经创建的账户。BP、NBP、Equity 不能互换;不能仅凭缩写猜一个通用 NBP 计算公式。

账户读取片段

// Replace TR_PRACTICE with a verified training account first.
$feAccount = GetAccountObj("TR_PRACTICE");
$feAccount.ShowObject();
MsgBox($feAccount.BP, $feAccount.Equity);

练习与参考解答

两个账户都观察 MSFT 并写 quote.data.ready,问题在哪里?参考解答:该对象按股票寻址,不是按账户加股票寻址。应在记录内保存账户并检查是否匹配,或为账户分别维护注册表;切换账户时使准备状态失效。专门测试“股票不变,只切换账户”。