第 12/36 课 · 约 30 分钟
DAS 脚本 K 线、指标与观察区间
检查 K 线字段并构建区间计算,分清已显示与已收盘。
先定义图表契约,再写公式
前置知识:集合与命名窗口。K 线取决于股票、周期、时段、加载历史和图表位置。GetBar(-5) 的官方描述是倒数第五根已显示 K 线,不应改写成保证已收盘。手册示例使用 HI;不要把其他 API 的 High、Close、Timestamp 字段直接搬过来。
同时检查 K 线和指标
$feChart = GetWindowObj("feChart");
$feBar = $feChart.GetBar(-5);
$feBar.ShowObject();
$feBarHigh = $feBar.HI;
$feStudy = $feChart.GetStudyVal("feVwap");
MsgBox($feBarHigh, $feStudy);
前提与结果解释
Advanced Script · 读取与显示。需配置 feChart、feVwap,至少加载五根已显示 K 线。GetStudyVal 读取命名指标的最新值,不一定对应 GetBar(-5) 那根 K 线。两者相减会组合两个时间位置;若这正是计算目的,应明确标注。多输出指标需要单独核对配置,不能虚构通用的输出索引参数。
构建有边界的观察区间
先在当前 build 对照图表验证 -1、-2、-3,包括最新一根是否仍在形成。确认索引后,下面扩展收集三根 HI。它不代表“最近三根已完成 K 线”。必须先验证历史数量与缺失 K 线行为,再运行遍历。
索引验证后的扩展
$feBarHighs = NewUserObj();
$feOffset = 1;
while ($feOffset < 4) {
$feCurrentBar = $feChart.GetBar(0 - $feOffset);
$feBarHighs.Set($feOffset, $feCurrentBar.HI);
$feOffset = $feOffset + 1;
}
$feBarHighs.ShowObject();
练习与参考解答
使用已确认的高点 21.20、21.35、21.10,借助集合课循环求最大值。参考解答:从键 1 初始化,比较键 2、3,得到 21.35。只改变周期后重做,解释为什么观察区间改变。记录读取时间与 K 线位置;循环期间新 K 线出现可能导致相对索引移动,不能将其当作原子历史快照接口。