FennEdge Learn · 编程

DAS Trader Advanced Hotkey Script Course

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

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

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

DAS 脚本动态变量:GetVar、SetVar 与 DelVar

理解 GetVar、SetVar、DelVar,并设计变量归属和重置规则。

为什么按名称访问变量

前置知识:全局变量作用域。固定配置优先用直接赋值;当模块需要按名称选择配置时,才引入间接访问。GetVar 以字符串名称读取全局变量,SetVar 写入,DelVar 删除。它们不会自动提供局部作用域、跨重启保存或账户隔离。

接口契约与名称

手册列出 GetVar(varname)、SetVar(varname,value)、DelVar(Varname1, Varname2,…);没有通过示例规定字符串内是否接受 $ 前缀。采用一套命名约定后,用写入—读取和变量窗口检查确认。不要对已有业务状态同时尝试两种写法。本例用字符串内不带 $ 的独立练习名称,目的就是验证这一约定。

写入、读取并清理自己的值

$feRegistryName = "FE_Practice_ConfigRevision";
SetVar($feRegistryName, 3);
$feRegistryValue = GetVar($feRegistryName);
MsgBox("Revision: ", $feRegistryValue);
DelVar($feRegistryName);

变量归属也是数据结构的一部分

预期往返值为 3。最后一行删除的是动态寻址的变量,不是保存名称的 $feRegistryName,也不是读取结果。删除后再读会返回什么仍需确认。给共享变量记录所有者、类型、初始化入口、使用者与重置事件。全局名称不区分大小写,FE_State 和 fe_state 不能当成两份状态;多股票数据通常更适合集合对象。

重置、删除、持久化是三件事

重置把状态设为明确值,例如 ready=0;删除移除名称;两者都不是持久化写入。初始化热键应建立后续模块需要的全部状态。停止时先停用回调,再清理依赖,避免 Timer 仍在读取被删除的变量。DelVar 文档记录的是名称参数,不应擅自添加按命名空间通配删除。

练习与参考解答

两个辅助脚本都写 ready,如何修复?参考解答:为每个模块分配独立前缀,指定初始化入口,成功后再发布输出。有意共享的配置则集中到一个写入者。测试先停回调、重置、重新初始化,再恢复运行的全过程。