这种写法,不知为什么在旗舰版上无法得到aa的有效值,而在TBquant上可以?

 //这种写法,不知为什么在旗舰版上无法得到aa的有效值,而在TBquant上可以?那位老师可以回答

Params
    Numeric length(14);
    Numeric lots(1);
Vars
                numericseries aa;
    numericseries sf;
                numericseries up_move;
    numericseries low_move ;
    
Begin

        up_move = Abs(h[1] - h[2]);
        Commentary("up_move="+Text(up_move));
        low_move = Abs(l[1] - l[2]);
        Commentary("low_move="+Text(low_move));
        sf = abs((up_move  -low_move) / (up_move +low_move));
        Commentary("sf="+Text(sf));
        

        
        if (CurrentBar==0 )
        {
            aa = close;
            Commentary("aa1="+Text(aa));
        }
        Else
        {
            if (aa== InvalidNumeric)
            {
                aa = close[1];
                Commentary("aa2="+Text(aa));
                       }
                      Else
                      {
            aa= close[1] * sf+ aa[1] * (1-sf) ;
                 Commentary("aa3="+Text(aa));
                    }
              
        
                
        }


            Commentary("CurrentBar2="+Text(CurrentBar));
            Commentary("aa4="+Text(aa));

        
end

自动推送和接收数据 在TQuant 上可以实现,在TBquant3上如何实现
TBQuant在Win7上安装失败
代码在期货上正常,在股票上无法显示买入信号
可以在委托列表上增加备注功能吗?
请问老师,文华的模型在TB上用可以吗,
手机宽客宝软件上无法修改策略上的合约。
TBQuant可以与旗舰版在同一主机下同时运行么
在TB上,程序化交易
递进优化在TICK数据上不能运行
如何将tbquant上的策略转换成python代码

TBQ是新版本,对数据处理的机制上跟以前版本比,肯定是做了很多优化和升级的。所以建议大家尽量使用新版本。

当然,就您这个具体问题而言,旗舰版上的公式之所以aa会出现无效值,其实是跟sf的值有关的,而sf会出现无效值,是因为计算机里面不能进行除0运算,您只要加个判断条件,保证除数不为0即可。

    If(up_move+low_move<>0)
        sf = abs((up_move  -low_move) / (up_move +low_move));

 

在语句里加了,这个条件也不行吗?

 if (aa== InvalidNumeric)
            {
                aa = close[1];
               
                       }

您这不是无效值,是除0运算出错了。