FennEdge Learn · 编程

DAS Trader Advanced Hotkey Script Course

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

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

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

DAS 脚本窗口、对象与执行上下文

区分命名目标与当前焦点,理解属性读写的边界。

先取得对象,再检查、读取

Advanced Script · 只读与显示。 先打开命名 Montage,并确认已有报价。

$feWindow = GetWindowObj("feMontage");
$feBid = $feWindow.BID;
MsgBox($feBid);

$feWindow 指向窗口对象,$feBid 存的是执行到这一行时读取的数值。这个数值不是会自动刷新的订阅。

目标也是程序的一部分

裸命令通常在当前焦点窗口执行;命名对象让目标窗口明确下来。但窗口当前股票、账户、行情是否可用,仍然需要检查。给 Montage 命名不会把它的内容固定住。

层次 例子 需要确认
窗口身份 GetWindowObj("feMontage") 已配置的唯一名称
对象检查 $feWindow.ShowObject() 当前 build 暴露的字段
属性读取 $feWindow.BID 报价含义与新鲜度
属性写入 Montage 的 Price、Share 界面输入发生变化
外部动作 提交或撤单 单独核对订单确认

动手练习:一次只改一个依赖

分别把焦点放在两个不同窗口,读取同一个命名 Montage。再改变该 Montage 的股票后重读,每次同时记录目标窗口和股票。关闭或重命名窗口应作为独立检查测试;在围绕它编写执行脚本之前,先确认失败行为。

显式目标不会自动改变后续语句的目标

$feWindow = GetWindowObj("feMontage") 只给变量赋了一个对象。它没有建立“从此所有裸命令都发往这个窗口”的作用域。每一条对象方法看接收对象,每一条裸命令看它的执行上下文;不要把两种规则混合。

对象引用也不是不可变快照。把对象赋给另一个变量,官方并没有因此承诺深拷贝。要保留某个观察时刻的数字,应读取具体字段并保存在自定义记录中,同时记录股票、账户和观察时间。后续 自定义对象 会明确记录的结构与生命周期。

缺失目标怎样排查

按顺序检查:窗口是否存在、名字是否完全对应、是否重复命名、是否恢复了另一套桌面、对象字段是否属于这种窗口、数据是否已加载。先手动恢复依赖,再做最小读取。没有文档契约时,不要写“找不到就返回空字符串”的兜底。

练习解答

把焦点切到另一个 Montage 后,显式读取 $feWindow.BID 和裸 Price= 不必指向同一处。检查的是每一条语句的目标,而不只是脚本第一行。把“脚本里出现过正确账户”当成所有后续动作都受它约束,是上下文错误。