Params
Vars
Events
 
    OnInit()
    {
    }
 
 
    OnBar(ArrayRef<Integer> indexs)
    {
        
        Commentary("lowd"+text(LowD(0)));
        if (BarStatus!=2)  //最新一个bar运行
         return;
                
             Numeric yesClose  =CloseD(1);  //昨天的收盘价
            Numeric todayLow  =LowD(0);    //今天的最低价
            Numeric todayHigh =HighD(0); //今天的最高价
            FileAppend("c:\\testlow.txt" ,  text(SystemDateTime)+"--"+symbol+"--"+text(date())+"--"+text(time())+"==Q_High ="+ text(Q_High)+"==Q_low ="+ text(Q_low)    +"==HighD(0) ="+ text(todayHigh)+"==LowD(0) ="+ text(todayLow)      );
            if (time ==0.1459)
            buy(1,open);
            
    }
请问一下,盘中行情这个lowD(0)为什么取不到值呢,而且highd(0)取出的值和Q_HIGH不一致啊


下面的是实盘的14点行情数据,上面的是模拟盘的14点数据,可以看到highd0价格不一样,lowd0价格都是0.
highD 之类的函数 有内部运行逻辑,通过打开函数查看,放在if条件内导致,代码运行不全
axx = highD; 在主程序第一层下运行并赋值给变量,通过变量去使用。
highd(0)的行为和lowd(0)一致吗,另外Q_High 盘中出现NA,是否也和限制最新bar有关。
HighD和LowD都是一样的,这一类都叫序列函数,您可以找官网的学习视频看看。Q_High只要是实时BAR应该都可以取到数据,除非在历史BAR上。
不能仅在最新BAR上运行。把下面这句去掉
 if (BarStatus!=2)  //最新一个bar运行
         return;