用iHighest函数获取某一区间的MODE_HIGH,总是出错,获取到了区间内第一根K线的最高价

 

如上图所示,下面是代码,蓝色链接的highest_index和time都是箭头指向的那根K线,而i就是红色箭头指向的那根信号K线,获取ihighest的代码就是下面的那行,highest_lowest_num是设置的一个全局变量,为10,i就是for主循环里的变量,total就是rates_total。

int ihighest_index=iHighest(NULL,0,MODE_HIGH,highest_lowest_num,i-highest_lowest_num+1);

上面获取到highest_index后,直接用

highest=high[ihighest_index];

这个获取最大值,但是获取到的却是区间的第一根K线的最高价

 
highest=iHigh(NULL,0,ihighest_index);
 
Hung Wen Lin #:

iHigh的第三个参数是相对于当前周期的向左的偏移,我通过iHighest获取到的ihighest_index是最近的几根K线,方向不同,我试着重写了一下iHighest函数,后面看看情况

 
cloudchina #:

iHigh的第三个参数是相对于当前周期的向左的偏移,我通过iHighest获取到的ihighest_index是最近的几根K线,方向不同,我试着重写了一下iHighest函数,后面看看情况

你是要获取图表的最高价吗?这个不难,加我wx一起探讨探讨
 
cloudchina #:

iHigh的第三个参数是相对于当前周期的向左的偏移,我通过iHighest获取到的ihighest_index是最近的几根K线,方向不同,我试着重写了一下iHighest函数,后面看看情况

int ihighest_index=iHighest(NULL,0,MODE_HIGH,highest_lowest_num,i);
 
Li Bo #:
iHighest(NULL,0,MODE_HIGH,highest_lowest_num,i)

这表示从索引index为i的柱开始,向右找highest_lowest_num根K线,i就表示刚收线的那根K线,往右边找越界了,出错吧,我是看帮助文档里面的示例代码是这样解释的,没试过

 

double   high =iHigh(Symbol(),0,iHighest(Symbol(),0,MODE_HIGH,highest_lowest_num,0));

从第0根(最新一根)到 highest_lowest_num(你设定的范围)之间K线的最高价


iHighest(Symbol(),0,MODE_HIGH,highest_lowest_num,0)

这个是定位到有最高价的K线的序列

 
Xiao Nan Xi #:

从第0根(最新一根)到 highest_lowest_num(你设定的范围)之间K线的最高价


这个是定位到有最高价的K线的序列

我一般是只判断收线了的K线,所以可以更改一下

double   high =iHigh(Symbol(),0,iHighest(Symbol(),0,MODE_HIGH,highest_lowest_num,1));

另外,已经重写函数了,先观察一下运行情况,不管有无问题,到时候都试一下上面这行代码