- 精华
- 0
- 在线时间
- 63 小时
- UID
- 136887
- 积分
- 8
- 帖子
- 2
- 阅读权限
- 10
- 注册时间
- 2012-5-30
- 最后登录
- 2024-3-14
- 精华
- 0
- UID
- 136887
- 积分
- 8
- 帖子
- 2
- 主题
- 2
- 阅读权限
- 10
- 注册时间
- 2012-5-30
- 最后登录
- 2024-3-14
|
本帖最后由 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,即求最小值,最小值没有问题,求出的值和索引都是对的。我检查多遍都没有发现哪里错了,求教版主即高手,我哪里写错了吗,怎么会出现这么奇怪的现象呢?
|
|