FennEdge Learn · 编程

DAS Trader Advanced Hotkey Script Course

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

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

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

DAS 脚本条件判断、提前结束与共享状态

先检查再计算;先初始化再复用。

让无效输入走一条可观察的路径

Advanced Script · 仅计算。 练习计算两个价格的距离,不选择交易入场点,也不发送订单。

$feUpper = 18.4;
$feLower = 18.1;
$feDistance = 0;
if ($feUpper > $feLower) {
    $feDistance = $feUpper - $feLower;
} else {
    MsgBox("Check the input order");
    return;
}
MsgBox($feDistance);

这些输入对应的数学距离是 0.30。把两个值设成一样,应进入提前结束分支。显式归零的意义是:输入无效时,不把上一次计算结果当成本次结果。

赋值与比较

= 是赋值,官方条件示例用 == 判断相等。花括号包住分支,return; 结束脚本。不要在没有 DAS 来源的情况下直接套用 JavaScript 的 ===、Promise 或异常处理语法。

2025 年 6 月版手册记录了 while,并给出最多 200 次循环的限制。这是该手册的版本事实,不是“忙等循环适合调度”的保证。学习循环时使用有限次的纯计算,不用循环等待成交。

一个有终点的循环

Advanced Script · 仅计算。 累加 1、2、3,预期结果是 6。计数器每次推进,条件最终变为假;这比依赖平台上限来停止更清楚。

$feCounter = 1;
$feTotal = 0;
while ($feCounter < 4) {
    $feTotal = $feTotal + $feCounter;
    $feCounter = $feCounter + 1;
}
MsgBox($feTotal);

动手练习:四种输入

依次测试正距离、相等、顺序颠倒,以及改完输入后的第二次运行。每次先写预期分支。以后组织多步流程时,明确账户切换、股票切换、布局重载后的重置条件。多个热键共享全局变量,应当是有意设计的依赖。

有效性与数值分开保存

把结果清零还不够:零可能是合法结果,也可能表示未计算。可以另设 $feReady=0,只有所有前提通过后才置为 1。读取者必须先检查 ready,再消费结果;后续 脚本模块 会把这做成完整的输入输出协议。

return; 退出当前执行,不撤销前面已经发生的赋值或窗口变化。尽量把读取、校验、计算放在会产生副作用的操作之前。它仍不是数据库事务,不能保证外部状态在校验后不发生变化。

为什么循环必须自己终止

本课计数器始于 1,每轮加 1,在 4 时退出,循环体运行三次。如果忘记递增,平台的最大迭代保护可能终止它,但那是故障保护,不是你的算法。处理集合时让记录数量成为循环边界,并把总量限制在文档所述上限以内;超过时分批而不是假设无限循环。

四案例解答与复测顺序

输入 分支 可用结果
18.4 / 18.1 正差值 数学值 0.30
18.1 / 18.1 提示并退出 无新有效结果
18.1 / 18.4 提示并退出 无新有效结果
有效案例后紧接无效案例 重新初始化后退出 不能沿用上一轮 0.30

最后一项比单次测试更容易暴露全局状态残留。改账户、改股票、恢复桌面和重启脚本,都应被当成需要重新验证输入身份的场景。