Params
Numeric N(5,1,200,1);
Vars
Array<Integer> id;
Array<Numeric> SHUZU; //数组
Series<Numeric> ZHANGFU;
Numeric A1;
Numeric B1;
Numeric C1;
Events
OnBar(ArrayRef<Integer> indexs)
{
ZHANGFU = Round((High-OPEN)/OPEN,2);
A1 = CountIf (ZHANGFU[1] <= 0.004,N);
B1 = CountIf (ZHANGFU[1] >= 0.005 AND ZHANGFU[1] <= 0.01,N);
C1 = CountIf (ZHANGFU[1] > 0.01,N);
Commentary(ZHANGFU: + Text(ZHANGFU));
Commentary(A1: + Text(A1));
Commentary(B1: + Text(B1));
Commentary(C1: + Text(C1));
SHUZU[0] = A1;
SHUZU[1] = B1;
SHUZU[2] = C1;
id = [0,1,2];
Na1Sort2(SHUZU, id, 0, 2, False);
Commentary(降序排序后 id= + TextArray(id) + SHUZU= + TextArray(SHUZU));
Commentary(SHUZU: + Text(SHUZU[1]));
Commentary(id: + Text(id[2]));
}
以上代码的意思是,统计过去N天开盘价到最高价涨了多少比例,然后按照不同的比例来计数。最后用Na1Sort2函数排序输出后如下图。
问题一:不知道为什么并没有给降序,也没有排列
问题二:我不明白Na1Sort2这个函数里ID这个参数的用法是什么意思, 看过函数帮助文档后也没太理解,意思是不是ID参数等于我新命名的序号下标??然后等于给下标排了个序还是啥意思??比如我把id = [0,1,2]; 改成id = [1,2,3]; 有什么区别吗??
问题三:请教如何能返回变量的名称?? 比如我这个排序后,如上图所示应该是B1最大,序号应该是0,(但是返回的值好像还是0? 不知道我理解的对不对)我想要达到的效果是如果排序后B1最大,返回值能直接返回B1这个变量名称,如果C1最大,返回值能直接返回C1这个变量名称。(如果有类似的效果也可以)
这样的话,比如B1最大,我就可以写成——如果返回值==B1,就用OPEN*1.005,如果返回值==A1,就用OPEN*1.003,这样用起来非常的方便。
无非就是自己建立一个映射关系,比如四个指标,0就是第一个,1就是第二个,然后根据映射关系来处理
老师,直播课在哪看的??
变量名称不能返回
老师,有没有什么写法可以达到类似的效果??我看了几个TB讲数组的视频,说是Na1Sort2这个函数可以知道排序后是谁最大,但是现在返回值又不是变量名称,等于我确实能看到谁最大,但程序依然不知道谁最大。
我想写出的效果是,对SHUZU进行排序,然后如果SHUZU[0]=B1,则OPEN*1.005。等于A1..则......
如果返回的是根数的话,我这样排序就意义不大了,虽然确实排序了,也知道最大的是几根了,但还是没法写程序判断啊。
注:因为回溯中A1/B1/C1经常会出现相等的情况,所以我想表达的这个SHUZU[0]=B1不是表示SHUZU中序号为0下标的数字等于B1的数字,而是想能判断一下SHUZU中序号为0下标的是由B1返回的还是由A1返回的。这样是就可以直接写成想要表达的意义。