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

序列变量时不时传递不进子函数,怎么办? [开拓者 TB]

  • 咨询内容: 在主函数定义了几个序列变量,其中几个作为子函数的参数传过去,为什么有时行有时不行?需要声明的是这些子函数都没有放在条件句或循环句中!最奇怪的是,如果子函数前对序列变量的当前值赋值,那么子函数里就全部得到零数据(包括历史数据)。如果把赋值放在子函数之后,那么子函数里就能拿到历史数据了。这是什么原因?我的TB版本是4.2.8

     

  • TB技术人员: 请提供源代码,便于找出问题所在

     

  • TB客服: 这个问题换一个角度来说吧
    以前上一根K线上的值传递到当前K线上是靠手工的语句,现在版本4是自动的对吧。的确多数情况下是要继承过来的,但是我这个程序不希望继承上一根K线的值,而是需要一个0初值,所以在进入程序的开头进行了零赋值,这时把这个序列变量传递到子函数去的话,子函数得到的历史数据就全是0了!我以为历史值是清不掉无法改变的,为什么也清零了呢?

     

  • 网友回复:
    ample 发表于 2013-4-17 16:16
    请提供源代码,便于找出问题所在

    请问序列变量在每根K线上需要一个零初值该怎么做呢?如果光一个主函数、主应用,似乎没有问题,在程序开头赋值零就可以了,但是如果这个序列变量还要作为参数传给子函数的,那么问题就来了,在主函数里清零后,在子函数里就会得到所有历史K线都是主函数里赋的零值,历史数据消失了!但是在主函数里历史数据还能看到。。

     

  • 网友回复: //------------------------------------------------------------------------
    // 简称: TestNS1
    // 名称:
    // 类别: 公式应用
    // 类型: 用户应用
    // 输出:
    //------------------------------------------------------------------------
    Params

    Vars
            NumericSeries        AAA(0);
           
    Begin       
           
            AAA=0;
           
            Func1(AAA);
           
            // do something here, so...
            AAA=1;
           
            Return;
    End


    //------------------------------------------------------------------------
    // 简称: Func1
    // 名称:
    // 类别: 用户函数
    // 类型: 用户函数
    // 输出: 布尔型
    //------------------------------------------------------------------------

    Params
            NumericSeries        AAA;
           
    Vars
            Bool Con1;
           
    Begin
            Commentary("AAA[0]="+Text(AAA[0])+" AAA[1]="+Text(AAA[1])+" AAA[2]="+Text(AAA[2]));
           
            Return (AAA[1]==1);
    End

 

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

可联系技术人员 QQ: 1145508240  有需要帮忙请点击这里留言!!!进行 有偿 编写!不贵!点击查看价格!


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

相关文章

    没有相关内容