MT4编程初级手册(6):市场数据取值

阅读 :

一、预定义数组(MT4已经预先定义好了的,可直接调用)

 

开盘价、最高价、最低价、收盘价、成交量等市场历史数据,每根K线实体都各自有一个,所以必须使用数组来调用,MT4有几个预定义数组,预定义的意思就是这些数据都是被准备好了的,EA的开发者可以直接使用:

 

预定义数组:开盘价Open[]、最高价High[]、最低价Low[]、收盘价close[]、成交量Volume[]、K线所属时间Time[]

 

类型为双精度浮点double型(即精确小数)

 

这里有一个引用顺序或位置的问题,从右边起第一根K线实体(即最新的K线)的索引为0,第二根K线索引1,第三根K线索引3,以此类推,也就是说从右向左倒着数过去,最近的数值小,而越远的数值越大。

 

Open[0]、High[0]、Low[0]、Close[0],表示最新的开盘价、最高价、最低价、收盘价;

Open[1]、High[1]、Low[1]、close[1],表示第2根K线蜡烛的开盘价、最高价、最低价、收盘价(也就是昨天);

Open[2]、High[2]、Low[2]、close[2],表示第3根K线蜡烛的开盘价、最高价、最低价、收盘价;

Open[3]、High[3]、Low[3]、close[3],表示第4根K线蜡烛的开盘价、最高价、最低价、收盘价;

Open、High、Low、close,表示第i+1根K线蜡烛的开盘价、最高价、最低价、收盘价

 

以此类推……

 

说明:这些是数组,用的是方括号来制定索引值。

 

二、预定义变量

 

买入价、卖出价是行情数据,MT4用预定义变量Ask和Bid表示,数值类型为double双精度浮点类型。

 

还有一些预定义变量,如:

 

Bars 表示图表中的K线数,类型为int整数型;

 

Digits 表示当前货币对的小数位数,类型为int整数型,无日元币对为4(位),有日元币对为2(位),黄金石油等一般也为2(位);

 

Point 表示当前货币对的点值(相当于最小变动价位),类型为双精度浮点double型,无日元币对为0.0001,有日元币对为0.01。与Digits正好相反。

 

三、指标函数

 

1、价格、成交量、时间

 

它们都有三个参数:货币对名(相当于品种名)、K线时间框架、位置序号。

 

开盘价:iOpen(symbol,timeframe,shift)    双精度浮点double型;

 

收盘价:iClose(symbol,timeframe,shift)    双精度浮点double型;

 

最高价:iHigh(symbol,timeframe,shift)    双精度浮点double型;

 

最低价:iLow(symbol,timeframe,shift)    双精度浮点double型;

 

成交量:iVolume(symbol,timeframe,shift)  双精度浮点double型;

 

所属时间:iTime(symbol,timeframe,shift)  日期时间datetime型;

 

K线时间框架为:1分钟图(PERIOD_M1)、5分钟图(PERIOD_M5)、15分钟图(PERIOD_M15)、30分钟图(PERIOD_M30)、1小时图(PERIOD_H1)、4小时图(PERIOD_H4)、日线图(PERIOD_D1)、周线图(PERIOD_W1)、周线图(PERIOD_W1)、月线图(PERIOD_W1)。

 

例:

 

iOpen("EURUSD",PERIOD_H1,0)   表示欧元兑美元1小时图最新K线实体的开盘价;

 

iClose("USDJPY",PERIOD_H4,2)  表示美元兑日元4小时图第3根K线实体的收盘价;

 

iClose("GBPUSD",PERIOD_H1,i)  表示英磅兑美元1小时图第i+1根K线实体的收盘价;

 

iHigh(NULL,0,0)               既不指定商品,也不指定K线周期,用在谁就是谁,用在哪就是哪。

 

2、移动平均值。双精度浮点double型

 

iMA(symbol, timeframe, period, ma_shift, ma_method, applied_price, shift)

 

参数共7个,分别为:商品名称、K线时间框架、均线周期、均线偏移、平均模式、价格种类、位置;

 

均线时间框架:10天平均线的均线时间框架为10,20天均线的均线时间框架为20;

 

均线偏移:均线位置整体左右移动的位置偏移量;

 

平均模式:简单移动平均(MODE_SMA)、指数移动平均(MODE_EMA)、平滑移动平均线(MODE_SMMA)、线性加权移动平均线(MODE_LWMA);

 

价格种类:收盘价(PRICE_CLOSE)、开盘价(PRICE_OPEN)、最高价(PRICE_HIGH)、最低价(PRICE_LOW)、中值(PRICE_MEDIAN)、5(PRICE_TYPICAL)、6(PRICE_WEIGHTED)。

 

例1:iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,0) 

 

表示:欧元对美元1分钟图上,以收盘价计算的,20分钟简单移动平均线,最新K线所对应位置的值;

 

例2:iMA(NULL,0,10,0,MODE_LWMA,PRICE_CLOSE,5)

 

表示:在当前商品、当前K线周期图表上,以收盘价计算的,10(天)线性加权移动平均线第6根K线(Bar)所对应位置的值。

 

其他如MACD指标、威廉指标、RSI、SAR、布林线等常用指标取值都与移动平均线指标相类似。

 

3、求数组元素的移动平均值。双精度浮点double型

 

iMAOnArray(数组名, 总数, 平均周期, 均线偏移, 平均模式, 位置)

 

这也与iMA函数差不多,不过数据源变为数组,也就是原来写货币对的地方改为数组名。

 

从数组中不但可以求得移动平均值,还可以求得RSI等常用指标值。

 

4、求自定义指标的值

 

我们经常根据需要自己编一些自定义指标,可用iCustom函数来取得自定义函数的值。

 

iCustom(商品名 ,K线周期 ,自定义指标名称 ,自定义指标参数1 ,参数2 ,参数3…… ,自定义指标线编号 ,位置)

 

如果自定义指标只有一根指标线,则自定义指标线的编号为0。

 

如果自定义指标有多根指标线,则第一条自定义指标线的编号为0,第二条为1,第三条为2。。。

 

例如:iCustom(NULL,0,"mykdj",9,3,3,2,0)   (9,3,3)为自定义指标mykdj的三个参数

 

表示:求当前图表中,自定义指标mykdj(9,3,3)的第3条指标线在当前位置的值。

 

抛砖引玉,这里只是有代表性地列了几个函数,详细请查阅MT4的手册。

本文标题:MT4编程初级手册(6):市场数据取值 - MT4平台MQL4编程学习
本文地址:http://www.ea666.cn/fxschool/autotrading/mql4/40519.html

相关文章

  • 小菜鸟教你们写外汇ea

    声明:本人新手+菜逼,接触外汇和ea都时间不长,盈利记录为0,题目写的这么装逼是为了来网络上寻找虚拟自尊。如果不是这个目的,我想不出任何其他投稿的理由。闷头看别人的文章吸取别人经验对自己多有利啊,还不...

    MQL4编程学习
  • MT4编程中的交易类型

    交易类型ConstantValueDescriptionOP_BUY 0 Buying position. OP_SELL 1 Selling position. OP_BUYLIMIT 2 Buy limit pending position. OP_SELLLIMIT 3 Sell limit pendin...

    MQL4编程学习
  • MQL4数组处理相关函数(三)

    用于数组处理的一组函数。数组的最大维数为四维。每一维索引编号为0至(数组大小 减 1)。例如,在50个元素的一维数组中,调用第一个元素用array[0],最后一个元素用array[49]。ArrayBsearch() – 数组搜索 Ar...

    MQL4编程学习
  • 智能外汇交易系统是什么

    在关于投资交易的建议中笔者一直强调依赖外汇交易系统做交易的重要性,因为对于无规律的行情只有坚持固定的交易方式才能够取得更好的成功率。由此可以推出这样一个问题--智能外汇交易系统是否可靠?智能外汇交易系统...

    MQL4编程学习
  • 适合外汇EA交易使用的高性价比稳定VPS推荐
    适合外汇EA交易使用的高性价比稳定VPS推荐

    目前外汇交易者使用最多的外汇EA交易系统大部分都是基于MT4平台开发的。虽然有一些外汇平台公司提供免费的外汇VPS使用,但是都要求在他们的公司开户并且有金额较高的入金,也就是说,大客户免费,小客户免谈。这时候,对于大部...

    MQL4编程学习
你可能感兴趣