您现在的位置:程序化交易>> 期货公式>> 交易开拓者(TB)>> 开拓者知识>>正文内容

开拓者 TB实现以个简单的排序功能 [开拓者 TB]

 

 
  • 咨询内容: 想实现以个简单的排序功能,把5条均线按值的大小再进行从大道小的顺序从新排序,保存在全局变量中
    Params
            numeric length(5);
                        MA1=Average(C,5);
                    MA2=Average(C,10);
                    MA3=Average(C,20);
                    MA4=Average(C,30);
                    MA5=Average(C,60);
                    SetGlobalVar(0,MA1);
                    SetGlobalVar(1,MA2);
                    SetGlobalVar(2,MA3);
                    SetGlobalVar(3,MA4);
                    SetGlobalVar(4,MA5);
            // 排序
            for i=0 to length-2
            {
                    for j=1 to length-1
                    {
                            if (GetGlobalVar(i)<GetGlobalVar(j))
                            {
                                    intermediate=GetGlobalVar(i);
                                    SetGlobalVar(i,GetGlobalVar(j));
                                    SetGlobalVar(j,intermediate);
                            }
                    }
            }
            PlotNumeric("1",GetGlobalVar(0));
                    PlotNumeric("2",GetGlobalVar(1));
                    PlotNumeric("3",GetGlobalVar(2));
                    PlotNumeric("4",GetGlobalVar(3));
                    PlotNumeric("5",GetGlobalVar(4));
    但输出的结果排序结果经常不对,请问是我程序的问题还是什么问题吗,谢谢

     

  • TB技术人员: i = 0 to length-2
    j = i to length-1

    快速排序嘛

     

  • TB客服:
    sorakiraa 发表于 2013-3-25 15:58
    i = 0 to length-2
    j = i to length-1

    谢谢大侠的回复 试了下 的确这次排序就对了
    但不是很明白为什么呀?

     

  • 网友回复:
    woshibing 发表于 2013-3-26 08:43
    谢谢大侠的回复 试了下 的确这次排序就对了
    但不是很明白为什么呀?

    因为你是要把大的数换到前面来,所以只用将下标大于i 的与其比较

    比如i=0的一轮过后,最大的已经换到0处了,就不需要再将其与后面的比较了

    这是个基本算法。。。应该不难理解

     

  • 网友回复:
    恩 对的 明白了 谢谢啦

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 262069696  点击在线交流进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容