您现在的位置:程序化交易>> 期货公式>> 交易开拓者(TB)>> 开拓者知识>>正文内容

叠加数据后,函数取数据有问题,请问为什么? [开拓者 TB]

  • 咨询内容: Vars
       Numeric volcon(0);

    Begin
         If(date>20150825)
    {
        PlotNumeric("bars",data1.barssincetoday);
       PlotString("date",Text(data1.openD(0)));
            }
    End       

       //   data0 为if000    data1 为沪深300  ,        PlotNumeric("bars",data1.barssincetoday); 这个命令用来取 沪深300 开盘到目前的bar数。但是测试出来的确实9:15开始的 股指的bar根数。
       
       //  PlotString("date",Text(data1.openD(0)));   这个本来想取 data1的 openD(0) 数据,但是 取出来的 也是data0   if000的数据,请问为什么? 使用错了吗?
      

     

  • TB技术人员: 多数据源 操作,用到的函数 如果这样,那都不能用了,取不到data1 等后面的数据。请问用多个数据有什么需要注意的吗?

     

  • TB客服: //------------------------------------------------------------------------
    // 简称: data1_OpenD
    // 名称: data1的OpenD
    // 类别: 用户函数
    // 类型: 用户函数
    // 输出: 数值型
    //------------------------------------------------------------------------

    Params
            Numeric daysAgo(2);
    Vars
            NumericSeries barCnt;
            NumericSeries dayOpen;
            Numeric i;
            Numeric j;
            Numeric nIndex(0);
            Numeric CBIndex;
    Begin
            CBIndex = data1.CurrentBar;
            If(CBIndex == 0 || TrueDate(0)!=TrueDate(1))
            {
                    barCnt = 1;
                    dayOpen = data1.Open;
            }Else
            {
                    barCnt = barCnt + 1;
            }
                   
            If(daysAgo == 0)
            {
                    return dayOpen;
            }Else
            {
                    For i = 1 To daysAgo
                    {
                            If( i == 1)
                            {       
                                    j = 0;
                            }Else
                            {
                                    j = j + BarCnt[j];                               
                            }
                            If (j > CBIndex )
                                    Return InvalidNumeric;
                            nIndex = nIndex + BarCnt[j];
                    }
                    Return dayOpen[nIndex];
            }
    End


       按照论坛里面的其他帖子提示, openD  跟 barssincetoday 函数,都无法通过测试。  说是 返回值类型 跟公式定义的返回值类型不符。
    简称: data1_BarsSinceToday
    // 名称: data1的bars sincetoday
    // 类别: 用户函数
    // 类型: 用户函数
    // 输出: 数值型
    //------------------------------------------------------------------------

    Vars
            NumericSeries ReBars;
    Begin
            If(data1.CurrentBar == 0 || TrueDate(0)!=TrueDate(1))
            {
                    ReBars = 0;
            }Else
            {
                    ReBars = ReBars + 1;
            }
            Return ReBars;  
    End

        请问版主如何解决....

     

  • 网友回复: 最好是 版主能把 修改好的 代码贴出来,学习一下。   

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 511411198  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容