序列变量时不时传递不进子函数,怎么办? [开拓者 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 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容