设为首页收藏本站

 找回密码
 注册
查看: 2493|回复: 1
打印 上一主题 下一主题

请教关于数组的代码 [复制链接]

Rank: 1

精华
0
UID
136887
积分
8
帖子
2
主题
2
阅读权限
10
注册时间
2012-5-30
最后登录
2024-3-14
跳转到指定楼层
1#
发表于 2016-6-3 10:23:35 |只看该作者 |倒序浏览
本帖最后由 hjh123456 于 2016-6-3 21:46 编辑

Params
        Numeric N1(10);
        Numeric N2(20);  
        Numeric N3(30);  
        Numeric N4(40);  
               
        Numeric n(4);
Vars
        Numeric MA1;
        Numeric MA2;
        Numeric MA3;
        Numeric MA4;
       
        NumericArray arr[4];     //数组1声明,定义数值型数组arr,数值的长度函数中可延伸
        Numeric i;
       
        Numeric myextrem;        //数组的极值
        Numeric exIndex;         //数组极值的索引        


Begin
        MA1=AverageFC(Close,N1);
        MA2=AverageFC(Close,N2);
        MA3=AverageFC(Close,N3);
        MA4=AverageFC(Close,N4);
        PlotNumeric("MA0",MA1);
        PlotNumeric("MA1",MA2);
        PlotNumeric("MA2",MA3);
        PlotNumeric("MA3",MA4);

       
        SetGlobalVar(0,MA1);
        SetGlobalVar(1,MA2);
        SetGlobalVar(2,MA3);
        SetGlobalVar(3,MA4);
               

        arr[0]=GetGlobalVar(0);                                
         
        For i = 1 To n
    {
                arr = GetGlobalVar(i);
        }

        Commentary(Text(arr[0]));
        Commentary(Text(arr[1]));
        Commentary(Text(arr[2]));
        Commentary(Text(arr[3]));

       
        myextrem = NthExtremesArray(arr,1,True,exIndex);    //数组的第1个极值        
        Commentary(Text(exIndex));                                                         //返回第N极值在数组的索引
    Commentary(Text(myextrem)); //数组的第N个极值   
        
       
      
End


上面一段代码,我参考tianlan版主的帖子编写,我的目的是想对比一个均线组(4条均线)的大小,将他们排序,我想查询某日哪根均线的值是最大的(或最小的,或第2大等),最大值是多少等等,刚好看到tianlan版主关于数组的那个帖子,所以我试着用数组函数实现,但是小弟对于编程是半路出家,学艺不精,求教版主及各位高手几个问题,不甚感激:
问题1,我不知道怎么用数组来给4条均线赋值,或者说怎么用数组来表示这4条均线(因为数组有下标之类的),所以用全局变量函数setGlobalVar/GetGlobalVar来转化,请问是不是这么表达的,有没有更好更简单的方法?
问题2,代码是通过编译了,而且好像计算出来的数组的值(arr[0],arr[1]。。。)也是对的。但是我用NthExtremesArray函数求数组的第1个最大值时出现了问题,代码如上,我觉得好像没有问题,但是求出来的值不对,图表中看Commentary(Text(exIndex))为4, Commentary(Text(myextrem))为N/A。当我把第二个参数1改为2时,计算出来的结果按理说应该是第二大的值,但是出来的却是是第一大的值。我又试着把第三个参数改为false,即求最小值,最小值没有问题,求出的值和索引都是对的。我检查多遍都没有发现哪里错了,求教版主即高手,我哪里写错了吗,怎么会出现这么奇怪的现象呢?












Rank: 2

精华
0
UID
85848
积分
67
帖子
40
主题
11
阅读权限
30
注册时间
2011-12-11
最后登录
2017-8-8
2#
发表于 2016-11-24 15:32:51 |只看该作者
arr(i) = GetGlobalVar(i);  这样就可以了

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-10 20:41

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部