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

TB新手不知道的那些事1:TB内建的用户函数只能取得data0的值[开拓者公式]

  • 咨询内容: 本帖最后由 慕容表哥 于 2012-12-13 17:22 编辑

    TB新手不知道的那些事1:用户函数只能取得data0的值
    变量a=data0.VolD;
    变量b=data1.VolD;
    你会发现b永远等于a,TB的用户函数只能默认取得data0的值,即使你前缀data1,2,3。。。也没有用

    建议说明书注明这方面,当然更希望新版TB支持用户函数能取得data1,2,3的值

     

  • TB技术人员: 此类用户函数,可以看到函数代码,看一下代码里的计算方法 ,可以知道无论是否使用data1.xxx
    其计算都是使用data0的值

     

  • TB客服:
    小米 发表于 2012-12-12 17:08
    此类用户函数,可以看到函数代码,看一下代码里的计算方法 ,可以知道无论是否使用data1.xxx
    其计算都是使 ...

    那是否修改原来函数的代码,加入data1的前缀,新建一个用户函数,就可以取得data1.xxx的值?

     

  • 网友回复:
    慕容表哥 发表于 2012-12-12 17:18
    那是否修改原来函数的代码,加入data1的前缀,新建一个用户函数,就可以取得data1.xxx的值? ...


    是的。
    修改原函数代码里,对K线数据部分的内容用data1.xxx替换,其结果就如你所需了。

     

  • 网友回复:

    修改后的OpenIntD1和VolD1,分别可以取data1商品的n天前的持仓量和成交量

    //------------------------------------------------------------------------
    // 简称: OpenIntD1
    // 名称: 求N天前的持仓量
    // 类别: 用户函数
    // 类型: 内建函数
    // 输出: 数值型
    //------------------------------------------------------------------------

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

    //------------------------------------------------------------------------
    // 编译版本        GS2010.12.08
    // 版权所有        TradeBlazer Software 2003-2010
    // 更改声明        TradeBlazer Software保留对TradeBlazer平
    //                        台每一版本的TradeBlazer公式修改和重写的权利
    //------------------------------------------------------------------------


    //------------------------------------------------------------------------
    // 简称: VolD1
    // 名称: 求N天前的成交量1
    // 类别: 用户函数
    // 类型: 用户函数
    // 输出: 数值型
    //------------------------------------------------------------------------

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

    //------------------------------------------------------------------------
    // 编译版本        GS2010.12.08
    // 用户版本        2012/12/13 10:56
    // 版权所有        cyqh007
    // 更改声明        TradeBlazer Software保留对TradeBlazer平台
    //                        每一版本的TrabeBlazer公式修改和重写的权利
    //------------------------------------------------------------------------

 

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

可联系技术人员 QQ: 262069696  点击在线交流进行 有偿 编写!不贵!点击查看价格!

 


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

相关文章

    没有相关内容