老师:
按照学习视频在跨周期策略中加入规避信号闪烁的语句。“i”和“result”一开始忘了定义初始值了,如第一图所示。我的问题:是不是两个参数的初始值都定义为“1”?即:
Params
Numeric i(1);
Numeric result(1);
?
谢谢!
其实这里定不定义初值无所谓
您的意思,我这么写是可以的吧?因为如果不写,编译时会报错(如附件所示)。
Params
Numeric i(1);
Numeric result(1);
你看错了吧,这个报错报的是第二行和第三行,你截图没截这两行吧?
你不会是把i和result定义成参数了吧?
您看这样写对吗?(涂色部分)谢谢老师!
Params
Numeric i(1);
Vars
Series<Numeric> Var1; // ZLXC
Series<Numeric> Var2;
..................
Events
OnBar(ArrayRef<Integer> indexs)
{
Numeric i;
Numeric result = 1;
for i=0 to DataSourceSize-1
{
result= result*data[i].BarExistStatus;
}
If(result<>1) Return;
Range[0:0] //大周期
{
Var1 = low[1]; // ZLXC
Var2 = SMA(ABS(Low-Var1),3,1)/SMA(MAX(Low-Var1,0),3,1) * 100;
Var3 = XAverage(Var2*10,3);
............
错了错了!是不是这样:
Params
Vars
Numeric i;
Numeric result;
........
Series<bool> bool_crossoverLH_BF;
Series<bool> bool_crossunderLH_BF;
Series<bool> bool_crossoverMXT_BF;
Series<bool> bool_crossunderMXT_BF;
.........
Events
OnBar(ArrayRef<Integer> indexs)
{
Numeric i;
Numeric result = 1;
for i=0 to DataSourceSize-1
{
result= result*data[i].BarExistStatus;
}
If(result<>1) Return;
Range[0:0]
...........
视频教程里写了在params理论定义i和result这两个变量?不可能吧?为什么要额外在参数里定义?
老师:我一开始搞错了,视频里讲是“不要忘了为 i 和 result 定义变量”。 所以,是不是应该在 Vars 里定义。即:
Vars
Numeric i;
Numeric result;
这样对吗?谢谢!
这就对了,但是视频里定义变量是直接在onbar域里定义临时变量,没必要两边都定义一遍,vars里定义了onbar域里就没必要再定义一遍了
谢谢老师!