Na1Sort2函数不管用,以及如何返回变量名称的问题

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返回的。这样是就可以直接写成想要表达的意义。

回复:https://old.tbquant.net/TrainDetail?id=522 关于横向比较排序然后选品种的直播课程里其实说过很多回了你看看这个是怎么处理的吧

https://www.bilibili.com/video/BV1Vu4y1J7Zs/?spm_id_from=333.999.0.0&vd_source=148cb1d807933f47bb50c46ed69d3c82 这个视频12分钟左右会讲排序函数