一、预定义数组(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)、日K图(PERIOD_D1)、周线图(PERIOD_W1)、周线图(PERIOD_W1)、月线图(PERIOD_W1)。
例:
iOpen("欧元兑美元",PERIOD_H1,0) 表明EURUSD1小时图最新K线实体的开盘价;
iClose("美元兑日元",PERIOD_H4,2) 表明USDJPY4小时图第3根K线实体的收盘价;
iClose("英镑兑美元",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);
价格种类:收盘价(PR洲际交易所_CLOSE)、开盘价(PR洲际交易所_OPEN)、最高价(PR洲际交易所_HIGH)、最低价(PR洲际交易所_LOW)、中值(PR洲际交易所_MEDIAN)、5(PR洲际交易所_TYPICAL)、6(PR洲际交易所_WEIGHTED)。
例1:iMA("欧元兑美元",PERIOD_M1,20,0,MODE_SMA,PR洲际交易所_CLOSE,0)
表明:欧元对美元1分钟图上,以收盘价计算的,20分钟简单移动平均线,最新K线所对应位置的值;
例2:iMA(NULL,0,10,0,MODE_LWMA,PR洲际交易所_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的手册。