全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
Na1Sort2函数不管用,以及如何返回变量名称的问题
2024-08-21 17:55

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函数排序输出后如下图。

问题一:不知道为什么并没有给降序,也没有排列

data-href=

问题二:我不明白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,这样用起来非常的方便。


kyover

变量名称不能返回

2024-08-23 09:50
WWWLIKEASD
@kyover

老师,有没有什么写法可以达到类似的效果??我看了几个TB讲数组的视频,说是Na1Sort2这个函数可以知道排序后是谁最大,但是现在返回值又不是变量名称,等于我确实能看到谁最大,但程序依然不知道谁最大。

我想写出的效果是,对SHUZU进行排序,然后如果SHUZU[0]=B1,则OPEN*1.005。等于A1..则......

如果返回的是根数的话,我这样排序就意义不大了,虽然确实排序了,也知道最大的是几根了,但还是没法写程序判断啊。

注:因为回溯中A1/B1/C1经常会出现相等的情况,所以我想表达的这个SHUZU[0]=B1不是表示SHUZU中序号为0下标的数字等于B1的数字,而是想能判断一下SHUZU中序号为0下标的是由B1返回的还是由A1返回的。这样是就可以直接写成想要表达的意义。

2024-08-23 10:40
kyover
@WWWLIKEASD

https://old.tbquant.net/TrainDetail?id=522

关于横向比较排序然后选品种的直播课程里其实说过很多回了

你看看这个是怎么处理的吧

2024-08-26 09:08
kyover

无非就是自己建立一个映射关系,比如四个指标,0就是第一个,1就是第二个,然后根据映射关系来处理

2024-08-26 09:09
WWWLIKEASD
@kyover

老师,直播课在哪看的??

2024-08-27 10:35
您未登录,请先 登录注册 后发表评论
顶部