诚信为本
量力而为
当前位置:峰汇在线 ea编程知识 正文

ea编程中如何获取不同图表货币的Open、Close、Low、High值?

之前写过一篇文章,介绍了Open[0]、Close[0]、Low[0]、High[0]四个函数分别获取当前图表最新蜡烛的开盘价、收盘价、最低价、最高价。其中[0]中的0表示当前蜡烛,设为1、2、3、4…… 就分别是从右往左数的第二根、第三根、第四根等。明白了这几个函数,我们就可以灵活的运用它们对当前图表的价格进行比较或运算。

那么如果要在ea中获取不同图表周期又或者不同货币对的开盘价、收盘价、最低价、最高价,又该用什么函数呢?其实这种需求在很多ea策略中都有用到的,比如说,同一货币比较不同周期的K线的收盘价与开盘价的大小,以选择不同周期阴阳线同步作为开仓的一种条件。当然,如果编写多货币多周期同时交易的ea,那么跨图表获取数据就是最基本的了。

跨图表获取K线的开盘价、收盘价、最低价、最高价可以调用iOpen、iClose、iLow、iHigh四个函数。四个函数的参量结构完全一致,我们熟悉其参量后就可以通过参量赋值的不同来获取想要的数据。下面我们先看下四个函数的结构:

iOpen(symbol,timeframe,shift);
iClose(symbol,timeframe,shift);
iLow(symbol,timeframe,shift);
iHigh(symbol,timeframe,shift);

上面四个函数括号内三个参量分别是:

  • symbol 货币名称,NULL或者Symbol()表示当前图表获取。要获取其它图表数值,该参数输入货币名称即可。如”EURUSD””USDJPY”等。
  • timeframe 图表周期,默认是0(PERIOD_CURRENT),只当前图表。如果设定PERIOD_M1到PERIOD_MN1之间的值,那么就是获取一分钟至月线中的对应周期图表的值。
  • shift 是K线序号。图表从右往左依次是0、1、2…….

通过上面介绍,我们就可以来变化参数获取不同图表不同周期的数值了。下面我们举几个例子供新手参考下:

示例一:交易品种是欧美兑美元EURUSD,我们分别获取5分钟和一小时图表的K线对应数值。由于只交易一个品种,货币名称我们直接用Symbol()表示当前图表货币。代码如下:

iOpen(Symbol(),PERIOD_M5,0);
iClose(Symbol(),PERIOD_M5,0);
iLow(Symbol(),PERIOD_M5,0);
iHigh(Symbol(),PERIOD_M5,0);
iOpen(Symbol(),PERIOD_H1,0);
iClose(Symbol(),PERIOD_H1,0);
iLow(Symbol(),PERIOD_H1,0);
iHigh(Symbol(),PERIOD_H1,0);

示例二:假如在上面EA中,我们需要同时交易欧元兑美元EURUSD和美元兑日元USDJPY,那么在示例一中的Symbol()更改为”EURUSD”,在获取美元兑日元USDJPY5分钟和一小时图表的K线对应数值时用如下代码:

iOpen("USDJPY",PERIOD_M5,0);
iClose("USDJPY",PERIOD_M5,0);
iLow("USDJPY",PERIOD_M5,0);
iHigh("USDJPY",PERIOD_M5,0);
iOpen("USDJPY",PERIOD_H1,0);
iClose("USDJPY",PERIOD_H1,0);
iLow("USDJPY",PERIOD_H1,0);
iHigh("USDJPY",PERIOD_H1,0);

在编写外汇EA的时候,如果需要比较K线所对应的几个价格,那么灵活调用上面几个函数,通过赋值的不同来获取想要的数据就可以了。

版权所有转载请注明标题及链接:峰汇在线 » ea编程中如何获取不同图表货币的Open、Close、Low、High值?