// 变量定义区:声明全局变量和系列变量
Vars
Series<Numeric> ma5; // 5日均线
Series<Numeric> ma20; // 20日均线
Plot pltX; // 主图表绘图对象
Bool isAlerted(false); // 警报状态标记
Integer i; // 循环计数器
Integer sss; // 临时变量
// 事件处理区:系统回调函数
Events
// 初始化事件:订阅数据
OnInit()
{
SubscribeBar(Symbol, "1m", BeginDateTime); // 订阅1分钟K线
SetBasePeriod("1m"); // 基础周期1分钟
data0.Hide; // 隐藏默认图表
}
// K线更新事件:全量刷新+标记特定位置
OnBar(ArrayRef<Integer> indexs)
{
// 计算指标
ma5 = Average(C, 5);
ma20 = Average(C, 20);
Range[1:1]
{
// 修正:避免向前引用,使用当前K线索引
sss = Data0.BarCount - 1;
// 注意:这个条件可能永远不会满足,需要根据实际需求调整
If(Data0.BarCount-Data0.CurrentBar == 1)
{
// 修正:使用Data0.H[CurrentBar]引用当前K线的最高价
pltX.text("日K", Data0.H, "1111111111111111");
}
}
}
这样可以If(Data0.BarCount-Data0.CurrentBar == 1)
If(Data0.BarCount-Data0.CurrentBar == 2) 就没显示了
不引用周期的话,显示的很好,就是现在那个K线上显示都可以
各位老师如何搞定,或者别的方法
你图里都只有一个图层,你为什么要range1:1a???
为什么我看不懂这个帖子在说什么?
012
COUNT = 3
3-2=1
状态=1相当于 d0.barstatus==2 ?
=2没显示
那就往前翻
1m数据太多了