请教!!

 

for(int i=0; i<limit; i++)
MacdBuffer[i]=iMA(NULL,PERIOD_H1,1,0,MODE_EMA,PRICE_CLOSE,i);

我想写一个指标

1跟线是1小时的收盘价,周期为1小时。

我如何获取前2个周期和前1个周期的价格,然后画出第二个图,叠加到上面呢?

初学者请教帮忙。

 

还有为什么 有 1小时周期 4小时周期,而没有3小时周期 2小时周期呢?

 

iClose(......)

没有3小时周期 2小时周期呢? 因为那软件开发者就这样定的

 

谢谢您的回复。那么我们有什么办法能够画出这样的线条呢。

 

奇怪你到底不会什么?

你代码中MacdBuffer[i]=.......可以用来画一个指标线。

再画别当然是再用一个数组了  XXXXBuffer[i]= iClose(......

 
DxdCn:

奇怪你到底不会什么?

你代码中MacdBuffer[i]=.......可以用来画一个指标线。

再画别当然是再用一个数组了  XXXXBuffer[i]= iClose(......


MacdBuffer[i]=....... 画出的是 1小时为周期的指标线,

我想画出2小时为周期的指标线 。请教!!

 

那就要自己计算,把1小时的每两个合为两个一样的值,即两个 1小时的数算一个2小时的数,用这数在1小时图上画两个点的范围就是。

或者分区域显示 参考https://www.mql5.com/en/code/9406

 
DxdCn:

那就要自己计算,把1小时的每两个合为两个一样的值,即两个 1小时的数算一个2小时的数,用这数在1小时图上画两个点的范围就是。

或者分区域显示 参考https://www.mql5.com/en/code/9406


谢谢,也只能这样了。

int k=0;
for(int i=0; i<limit; i++)
{

///1小时周期

MacdBuffer[i]=iMA(NULL,0,1,0,MODE_EMA,PRICE_CLOSE,i);//-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

///2小时周期
SignalBuffer[i]=(iMA(NULL,0,1,0,MODE_EMA,PRICE_CLOSE,k)+iMA(NULL,0,1,0,MODE_EMA,PRICE_CLOSE,k+1))/2;

k++;
k++;

}

这样2 小时周期的均线 应该是对的了吧。

 

这相当于 1小时周期均线相邻两个值的平均。

我说的:

两个 1小时的数算一个2小时的数

是指 两个 1小时的前一个的开盘 是  此2小时的开盘, 两个 1小时的后一个的收盘 是  此2小时的收盘,

 两个 1小时的合起来的最高和最低 是 此2小时的最高和最低

MT本身没有2小时,想要就需要自己从价格数据本身开始计算其它

 

我明白了。

int k=0;
for(int i=0; i<limit; i++)
{

///1小时周期收盘
MacdBuffer[i]=Close[i];

///2小时周期收盘

MacdBuffer1[i]=Close[k];
k=k+2;
}

谢谢您!

 

不仅如此, 你至少还有两个问题要确定,

1 2小时从哪里开始计算?如是第24小时和第一小时合成2小时 还是第一和第2小时合成2小时......, 你现在写的 是当前1小时的Close也永远是当然2小时的收盘价,这样的话 构成2小时的那两个1小时是在交替结合的,就象是这次22/23, 24/1, 2/3合成2小时,下次是第23/24,  1/2结合成2小时。

2 目前X轴是在1小时单位坐标, 这样的坐标轴上画 2小时为单位的数据, 那X坐标 i  如何处理合适 ?