FennEdge Learn · 编程

DAS Trader Advanced Hotkey Script Course

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

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

36节课程≈1046预计分钟—登录后保存进度
语言与 API 参考

DAS 高级脚本语言与 API 参考

查语法、上下文、副作用与证据,覆盖本课程涉及的接口。

使用这份参考

这里收录本课程涉及的语言与接口。完整练习与解答见对应课程;每种窗口与券商特有的契约仍须单独验证。官方已记录表示对应文档存在说明;待实测表示 FennEdge 没有在具体 DAS build 上验证;待确认表示不能从本次来源确认准确契约。三者不能互相替代。

基线:Advanced Hotkey Guide 与 DAS Order Objects V2,2025-06-27;订单与 Locate 说明,2026-08-03;Trigger Guide,2026-07-06;OCO 说明,2026-06-30。来源核对日:2026-09-11。文档日期不是最低支持版本。每项都应在你使用的 build、窗口与账户下再次确认。

变量赋值 / Assignment

$name = expression;

全局变量;赋值会覆盖旧值,不区分大小写。跨热键共享,不能假设账户隔离或跨重启持久化。

状态:官方已记录 · 客户端待实测。 Advanced Hotkey Guide · p. 4

流程控制 / Control flow

if (condition) { ... } else { ... }

条件分支;手册示例用 == 比较,return; 结束脚本,while 有版本相关循环限制。错误后的继续行为仍需实测。

状态:官方已记录 · 客户端待实测。 Advanced Hotkey Guide · p. 5

MsgBox

MsgBox(value1, value2, ...)

全局函数,显示值并等待用户交互;不是订单回执。手册未在此定义可依赖的返回值。

状态:官方已记录 · 客户端待实测。 Advanced Hotkey Guide · p. 7

GetWindowObj

GetWindowObj("windowName")

参数是已配置的窗口名称,返回窗口对象;名称不存在、关闭、重命名后的行为待实测。

状态:官方已记录 · 客户端待实测。 Advanced Hotkey Guide · p. 11

ShowObject

$object.ShowObject()

对象检查方法,用于查看暴露的属性;不把检查方法的返回值当作原对象使用。

状态:官方已记录 · 客户端待实测。 Advanced Hotkey Guide · p. 15

GetQuoteObj

GetQuoteObj("symbol")

按股票取得报价对象,行情字段只读,另有可写 data 槽位;先加载对应行情。缺失数据行为与新鲜度需要另行确认。

状态:官方已记录 · 客户端待实测。 Advanced Hotkey Guide · p. 17

GetAccountObj

GetAccountObj("account")

按账户取得账户对象;文档展示 BP,但 BP 不等于允许风险金额。使用明确确认的模拟账户。

状态:官方已记录 · 客户端待实测。 Advanced Hotkey Guide · p. 10

GetStudyVal

$chart.GetStudyVal("studyName")

图表对象方法;参数是配置的指标名称,读取最新数值。周期、时段、多输出与缺失指标情况要分别核对。

状态:官方已记录 · 客户端待实测。 Advanced Hotkey Guide · p. 36

GetBar

$chart.GetBar(-5)

文档例子读取倒数第 5 根已显示 K 线,返回可检查的 bar 对象;不推测其他索引或缺失值约定。

状态:官方已记录 · 客户端待实测。 Advanced Hotkey Guide · p. 36

Round

Round(value, precision)

精度参数有特殊约定:手册列出 1–6 小数位,以及 100、101 的整手行为。不是通用向下取整别名;按目标数量与价格规则实测。

状态:官方已记录 · 客户端待实测。 Advanced Hotkey Guide · p. 7

ExecHotkey

ExecHotkey("hotkeyName")

执行热键文件中的命名脚本,副作用取决于被调用内容;依赖正文、变量和目标上下文都要审查。

状态:官方已记录 · 客户端待实测。 Advanced Hotkey Guide · p. 38

GetSecond

GetSecond()

返回午夜起累计秒数。不能把它直接当 Unix 时间戳;具体时区、跨日和精度在当前环境确认。

状态:官方已记录 · 客户端待实测。 Advanced Hotkey Guide · p. 7

Exec

Exec(script1, script2, ...)

执行字符串或变量里的脚本;字符串内的双引号需要转义。无内置事务或局部变量隔离保证,副作用取决于正文。

状态:官方已记录 · 客户端待实测。 Advanced Hotkey Guide · pp. 37-40

GetHotkeyScript

GetHotkeyScript("hotkeyName")

取得命名热键的脚本文本,单独调用不执行。准确拼写不是 GetHokeyScript;缺失名称的返回行为待实测。

状态:官方已记录 · 客户端待实测。 Advanced Hotkey Guide · pp. 37-38

DrawHorzLineWithPrice / Color

DrawHorzLineWithPrice(price, Color(100, 100, 100))

在 Chart 上绘制水平参考线;需要正确图表执行上下文。也可用 Color("RED")。一次绘图不保证随指标更新,不创建订单。

状态:官方已记录 · 客户端待实测。 Advanced Hotkey Guide · pp. 36-37

GetMousePtPrice

GetMousePtPrice()

读取鼠标指向的图表价格,绑定热键并在图表上触发。指针不在绘图区时的结果待实测。

状态:官方已记录 · 客户端待实测。 Advanced Hotkey Guide · pp. 36-37

RemoveAllTrendLines

RemoveAllTrendLines;

清理趋势线,有删除标注的副作用,不等于只撤销最后一条。先保存布局,在专用练习图表核对关联与全局线的作用范围。

状态:官方已记录 · 客户端待实测。 Advanced Hotkey Guide · pp. 37

NewAlertObj / AddItem / Save

NewAlertObj() · $alert.AddItem("L1 BID", ">", threshold) · $alert.Save()

创建 Alert 对象,设置 name、Symb,添加条件后保存。Reset() 后 Save() 是手册给出的移除示例。重复名称、重复触发和默认动作需检查;Script 字段在提醒设置中单独配置。

状态:官方已记录 · 客户端待实测。 Advanced Hotkey Guide · pp. 33-34

GetAlertObj:契约待确认

手册 p. 33–34 的标题提到此函数,但正文没有明确查找参数或缺失时的结果。本参考不提供猜测签名。创建与清理代码见 Alert 与触发脚本。

状态:标题提及 · 详细契约待确认 · 客户端待实测。Advanced Hotkey Guide · p. 33

Locate 窗口命令

写法 作用
$window.InquiryShare = 110; 填写询价数量
$window.Inquire; 向配置的提供方发起询价
$window.LocateLowest; 实际 Locate 动作,可能产生费用

前提是 $window 来自已配置、已命名的 Short Locate 窗口;股票、账户/提供方需要核对。命令形式没有函数括号。询价后必须依据本次响应判断状态,不能把脚本继续执行当成已完成。分步例子见 Locate 课程。

状态:官方已记录 · 客户端及券商环境待实测。DAS · Short Locate

Input

Input(title, message) · Input()

全局交互函数;显示输入窗口并取得输入。带标题和消息的形式见 p. 7,无参数形式见 p. 40。接收值先当用户文本,不依赖自动数字转换。取消、空文本与空白文本的区别未形成完整契约;不能把没有内容当作合法零。每次请求先清掉旧的 ready 状态,验证后再公布结果。不要把输入直接传给 Exec。

状态:官方文档已核对;上面列出的不确定项保留待确认,客户端待实测。 Advanced Hotkey Guide · pp. 7,40 · 课程与练习

GetVar / SetVar / DelVar

GetVar(name) · SetVar(name, value) · DelVar(name1, name2, ...)

按字符串名称读取、写入或删除全局变量。GetVar 返回对应值,SetVar 和 DelVar 改变共享状态;不能把它们当局部字典。名称字符串是否包含 $、不存在变量返回什么以及删除后的访问行为,在当前说明中不够明确。课程先用同一字符串进行 Set/Get/Del 命名探针,不声称它等价于某个 $ 标识符。记录测试结论后再做动态键。删除值不是停止仍会使用它的回调。

状态:官方文档已核对;上面列出的不确定项保留待确认,客户端待实测。 Advanced Hotkey Guide · pp. 7 · 课程与练习

NewUserObj

NewUserObj()

创建自定义对象,用属性组成有明确结构的配置、状态或结果。字段名由脚本定义;version、valid、count 等是本课程约定,不是平台保留协议。逐个初始化消费者将读取的字段,再发布对象。对象赋值不构成已记录的深拷贝;每条独立记录应明确创建自己的对象。对象与全局变量不自动持久化,也不自动按账户隔离。

状态:官方文档已核对;上面列出的不确定项保留待确认,客户端待实测。 Advanced Hotkey Guide · pp. 29-32 · 课程与练习

Set / Get / Del

object.Set(key, value) · object.Get(key) · object.Del(key)

对象方法支持按键访问,官方例子包括数值键以及 Del("")。可以用数字键加自己维护的 count 表示集合;这不是 JavaScript Array。没有依据把 Length、push、map、迭代器或自动移位补进去。删除中间项不应被假定会压缩剩余索引;要么保留空位并明确规则,要么自行重建集合。Del("") 是清空对象内容的操作,不能当成只删一条。

状态:官方文档已核对;上面列出的不确定项保留待确认,客户端待实测。 Advanced Hotkey Guide · pp. 29-32 · 课程与练习

Quote fields / data

quote.BID · ASK · LAST · HI · LO · VOLUME · SYMBOL · data

行情字段读取市场数据,data 则是可写的附加状态槽位。不要把两个层混为一谈。给 data 赋自定义对象前确认所有权,否则另一个脚本的数据会被覆盖。连续读取多个字段不构成原子快照;附加观察时间也不能证明源行情新鲜。账户差异要在你的记录键中显式表达。

状态:官方文档已核对;上面列出的不确定项保留待确认,客户端待实测。 Advanced Hotkey Guide · pp. 10,29-32 · 课程与练习

Window title, ticker and focus

$window.GetWindowTitle() · $window.GetTicker() · FocusWindow name;

GetWindowTitle 与 GetTicker 读取当前上下文,FocusWindow 按已配置名称切换焦点,是无括号命令。读取上下文函数不会锁定随后执行的裸命令目标。对象的 GetWindowObj 显式查找与前台焦点是两种机制。重名、窗口关闭和类型不匹配都应在模拟环境验证,不能猜测缺失时的返回值。

状态:官方文档已核对;上面列出的不确定项保留待确认,客户端待实测。 Advanced Hotkey Guide · pp. 11,21 · 课程与练习

NewOrderObj / fields

NewOrderObj() · NewOrderObj(shortForm)

创建 Order 对象草稿。官方列出 Account、Symbol、Price、Share、Open、Side、Tif、Route、RefNum、Status、Type;不要根据名称为 Open 或 Status 编造完整状态枚举。短写参数另见 V2。先显式设置身份与字段,再用 ShowObject 对照目标账户。对象创建或赋值不等于发送;代码示例中的 Send 保持注释。

状态:官方文档已核对;上面列出的不确定项保留待确认,客户端待实测。 Advanced Hotkey Guide · pp. 22-28 · 课程与练习

Clear / Send / Cancel

order.Clear() · order.Send() · order.Cancel()

Clear 清理对象内容,不是撤销已发送订单。Send 请求发送,Cancel 请求撤单;调用返回与外部接受、成交或撤销是不同证据。先确认对象是你要处理的草稿还是已存在订单记录。文档含每秒发送限制说明,但应按当前 build 和 broker 验证,不能通过循环或 Wait 推断可用吞吐。重试前先核对是否已产生请求。

状态:官方文档已核对;上面列出的不确定项保留待确认,客户端待实测。 Advanced Hotkey Guide · pp. 22-23 · 课程与练习

Order Objects V2 grammar

Side Share Symbol Route OrderType OtherPrice Price TIF

这是 NewOrderObj 的短写解析,不是另一个 NewOrderObjV2 函数。未填写字段可能来自 Default Order Templates;文档默认方向是 Sell。Side 包含 B/BUY、S/SELL、SS/SHRT/SHORT。短写的 D、D+ 与属性赋值的 DAY、DAY+ 不能无条件互换。修改 Route 不自动修正 Type。先设置账户,再考虑 Send。Sell 示例和 Range 次序冲突见勘误课。

状态:官方文档已核对;上面列出的不确定项保留待确认,客户端待实测。 DAS Order Objects V2 · pp. 1-5 · 课程与练习

Order types / Peg / TIF

M · L · P · SM · SL · SLP · TL · RG · RGM

类型分别涉及 Market、Limit、Peg、Stop Market、Stop Limit、盘前盘后 Stop Limit、Trailing、Range 与 Range Market。SL 的触发价在限价前。Trailing 数字距离与带 % 的距离不是同一单位。Peg 策略包含 AGG/MID/PRIM/LAST,且路由必须支持。SLP 需要券商启用。TIF 列表包括 DAY、DAY+、AtOpen、AtClose、FOC、IOC、GTC、GTC+;保留原文 FOC,不默改成 FOK。它们是文档词汇,不是所有路由和账户的支持承诺。

状态:官方文档已核对;上面列出的不确定项保留待确认,客户端待实测。 DAS Order Objects V2 · pp. 3-5 · 课程与练习

GetOrderObj

GetOrderObj(filter)

通过过滤条件读取订单对象。复合过滤器一节标明 5.7.9.9+,字段包括 Acc、Symb、Oid、RefNum、Price、Share、First、Last,以逗号组合;准确例子见课程。返回第一条匹配记录,不是订单数组。先使用已知 RefNum 并对照 Orders,避免仅按股票匹配到别的账户。无匹配行为必须实测,不能凭空补一个安全空对象。

状态:官方文档已核对;上面列出的不确定项保留待确认,客户端待实测。 Advanced Hotkey Guide · pp. 23,29 · 课程与练习

Account CancelOrder

account.CancelOrder(flag, symbol, price)

账户对象上的撤单方法,过滤范围由接收账户和参数共同决定。文档列 BUY、SELL、FIST、LAST、P>、P<、P=、P>=、P<=,并演示按位样式分隔符 | 组合,例如 BUY|P<。其中 FIST 保留为原文拼写疑点,不自行改成 FIRST 并给出可执行示例。必须先理解“多条订单请求”的作用范围;返回后仍需确认每条订单终态。

状态:官方文档已核对;上面列出的不确定项保留待确认,客户端待实测。 Advanced Hotkey Guide · pp. 10 · 课程与练习

WithTrigger / OCO

WithTrigger=RT:... PX:... ACT:... QTY:... TIF:...;

为主单附加次单说明的传统命令结构;官方 Trigger Guide 描述主单完全成交后触发。QTY:POS 不等于主单固定 Share。OCO 是订单间的取消关系,不能通过创建两张独立订单代替。课程提供全注释的 WithTrigger 字段阅读,以及 OCO 界面和 Wizard 生成步骤;并不编造未核对的 OCO 热键语法。

状态:官方文档已核对;上面列出的不确定项保留待确认,客户端待实测。 Trigger Order Guide · 2026-07-06 · 课程与练习

Timer Event / Chart Update Script / DesktopLoadScript

Event callback bodies configured in DAS

Timer 文档描述每秒执行,Chart Update 随图表更新执行,DesktopLoadScript 是桌面加载入口;三者不是可互换时钟。每次回调要有界,避免阻塞弹窗、无限等待与隐式重复动作。准备初始化、启用、观察、禁用、清理五个阶段。先停入口再删数据;本课程的 enabled 字段是应用约定,不会自动取消平台事件配置。

状态:官方文档已核对;上面列出的不确定项保留待确认,客户端待实测。 Advanced Hotkey Guide · pp. 6,18-19,35 · 课程与练习

Wait

Wait(milliseconds)

暂停当前脚本一段毫秒时间后继续。毫秒与 GetSecond 的秒必须分开。等待不是 broker 确认,不保证行情刷新,也不等于后台调度器。事件中长时间等待会影响交互与执行节奏;用有界回调读取最新状态,并明确跳过、补跑和时钟回退策略。课程采用跳过积压,不制造批量重放。

状态:官方文档已核对;上面列出的不确定项保留待确认,客户端待实测。 Advanced Hotkey Guide · pp. 8,18-19 · 课程与练习

Speak / PlaySound

Speak(text, device, flag) · PlaySound(file, device, flag)

播放语音或本机 WAV/MP3。设备是本机名称;可用标志有 INTRPT、SHARE、STOP、LOOP。这些是有感知副作用,重复事件可能叠音或循环。先单次播放确认设备,再测试停止,最后才接入事件。文件播放不是任意文件读写 API;不从它推导 JSON、CSV 或网络下载能力。

状态:官方文档已核对;上面列出的不确定项保留待确认,客户端待实测。 Advanced Hotkey Guide · pp. 7-8 · 课程与练习

Application and desktop commands

NewWindow · SaveDesktop · SaveLayout · SwitchDesktop · Shell

全局 App 表列出窗口、布局、主题、朗读、行情暂停/恢复、录屏和外部打开等命令。无括号命令没有函数返回值。SaveLayout 会覆盖当前布局;ClearDesktop 会清理窗口;Shell 和 HTTP/HTTPS 属于外部动作,不能当成返回 JSON 的 fetch。Panic 涉及账户清仓,不是普通错误恢复指令。本课程按作用范围审阅这些命令,不提供自动清仓或任意外部执行入口。

状态:官方文档已核对;上面列出的不确定项保留待确认,客户端待实测。 Advanced Hotkey Guide · pp. 8-9 · 课程与练习

传统命令与有副作用的操作

写法 / 类别 行为 核对重点
Price / Share 修改 Montage 输入 焦点、字段继承、单位
BUY=Load 加载买单信息 不按 Enter;仍会改变订单输入
BUY=Send / SELL=Send 发送订单 账户、路由、TIF、数量与回执
TriggerOrder 关联后续订单 主单条件、部分成交、后续确认
撤单命令 请求撤销订单 当前 build 的准确拼写与账户/股票作用范围
InquiryShare / Inquire 数量配置 / 询价 窗口、提供方与响应
LocateLowest Locate 动作 数量、费用、有效性与结果

这些条目用于识别副作用,不是可以拼接执行的完整脚本。来源:订单字段与 Load/Send、关联订单、Locate。

参考层的覆盖边界

参考分类 本版覆盖 尚需确认
语法、运算符、变量、流程控制 本课程使用的语法 完整运算符、类型转换与错误继续行为
全局函数、窗口对象 上方最小契约与检查方法 未记录的窗口属性与缺失结果行为
订单对象 构建、V2 语法、类型、查询、撤单与生命周期 缺失结果、冲突示例与 build 实测
图表、行情、账户 只读接口与数据语义 多输出指标、缺失值和跨窗口一致性
UI、时间、事件 Input、音频、Timer、Chart Update、DesktopLoadScript、Alert GetAlertObj 契约、回调重入与断线行为
文件与外部交互 副作用审查方法 逐项接口权限与契约
常量、错误、兼容性 记录方法和待确认标记 券商路由全集、错误码、最低 build

未查证的能力不等于“不支持”。添加参考项时记录准确签名、参数、返回值、副作用、来源页码、build 和测试证据;文档冲突保留双方说明,不凭相似语言猜测。