5.2 Standard constants标准常数
为了简化编写程序并使其程序文本更加方便,在MQL4中预定义了标准变量。
此变量是按照用途分组的。
5.2.1 Series arrays系列数组
系列数组识别符在ArrayCopySeries( ) ,iHighest()和iLowest)函数中使用,可以是以下任意值:

5.2.2 Timeframes图表周期时间
图表的时间周期,可以是以下任意值:

5.2.3 Trade operations交易操作
对于OrderSend()函数的交易类型,可以是以下任意值:

5.2.4 Price constants价格常数
提供的价格常数,可以是以下任意值:

5.2.5 Marketlnfo市场信息识别符
市场信息识别符,使用MarketInfo( )函数。表达格式:MarketInfo ( Symbol),MODE_DIGITS )
可以是以下任意值:



5.2.6 Drawing styles画线风格
SetIndexStyle( )函数画线风格枚举可以是以下任意值:

画线风格的有效宽度,可以是以下任意值:

5.2.7 Arrow codes预定义箭头
预定义箭头,可以是以下任意值:

对于价格和时间的特殊箭头代码,可以是以下任意值:

5.2.8 Wingdings特殊符号
使用箭头对象的Wingdings符号:


5.2.9 Web colors颜色常数(见文前彩插)
5.2.10 Indicator lines指标线
指标线识别在iMACD( ) ,iRVI()和iStochastic)指标中使用,可以是以下任意值:

指标线识别符在iADX()指标中使用,可以是以下任意值:

指标线识别符在iBands()和iGator()指标中使用()、iE nvelopes()、iEnvelopesOnArray()、iFractals可以是以下任意值:

5. 2. 11 Ichimoku Kinko Hyo日本云指标
Ichimoku Kinko Hyo识别符使用在iIchimoku)指标中作为请求数据代码调用,可以为以下任意值:

5.2.12 Moving Average methods移动平均方法
移动平均if算在iAlligator ( ) , iEnvelopes ( )()、iGator)、iMA()、iMAOnArray()、iStdDev()drastic)指标中使用,可以是以下任意值:、iEnvelopesOnArray、iForce、iStdDevOnArray()和iSto-

5.2.13 MessageBox信息箱
MessageBox)返回代码。如果选择信箱中的“Cancel”或是取消选择,函数返回IDCANCEL值。如果信箱中不存在取消按键,按ESC无效。
注意:消息框返回的代码在WinUser32. mqh文件中有定义。

MessageBox函数是一个具有特殊功能的对话框,可以和以下值结合并用:

要显示在消息框中的图标,指定下列值之一:


在消息框内显示的图标是以下值之一:

MessageBox)功能被指定在WinUser32. mqh文件内,这就是为什么这个文件程序必须通过##include < WinUser32. mqh>的原因。这里列出部分常用参数,详细细节请参阅Win32 APIo
5.2.14 Object types对象类型
订单类型常数在ObjectCreate)、ObjectsDeleteAll)和ObjectType()函数中使用。对象可能有1一3个坐标。可以是以下任意值:



5.2.15 Object properties对象属性
对象属性函数同ObjectGet)和ObjectSet)功能一起使用,可能是以下任意值:



5.2.16 Object visibility对象有效周期
在指定的时间周期内显示。在ObjectSet()应用函数中设置OBJPROP_TIMEFRAMES属性。


5.2.17 Uninitialize reason codes撤销初始化原因代码
用Uninitialize Reason()返回未初始化代码。可以是以下的任意值。

5.2.18 Special constants特别常数
特别常数使用于指定参量和变量状态,可以是以下任意值:

5.2.19 Error codes错误代码
GetLastError()函数返回错误代码。错误代码被指定在stderror. mqh文
件里。打印文本信息使用在stdlib. mqh文件中的Error Description)函数:
#include
#include
<stderror. mqh>
<stdlib. mqh>
void SendMyMessage( string text)
{
int check;
SendMail”some subject" ,text);
check=GetLastError();
if( check!二ERR_ NO ERROR) Print("Cannot send message ,error; ",Error描述(check));
}
从服务器返回的错误代码如下:



MQL4运行错误代码如下:






5.2.20 Predefined variables预定义变量
对于每个执行的MQL4程序,规定了一定数量的变量来反映图表中的价格状态可用于智能交易程序、脚本或者是客户指标。
为了安全、迅速获得这些数据,终端程序提供了副本。这些数据会在EA或者指标运行时自动更新,或者由RefreshRates)函数来更新。
5.2.20.1 Ask最新卖价
double Ask
对于当前货币对的最新卖出价格。可使用RefreshRates)函数更新。
参见MarketInfo)。
【示例】
if( iRSI( NULL,O,14,PRICE_CLOSE,O)<25)
OrderSend(Symbol(),OP_BUY,Lots, Ask,3,Bid一StopLoss*Point, Ask+
TakeProfit*Point.
‘’My order #2" ,3,D'2005. 10. 10 12 } 30',Red);
return
5.2.20.2 Bars柱数
int Bars
返回图表中的柱数。
参见iBars).
【示例】
int counter=1;

5.2.20.3 Bid最新买价
double Bid
对于当前货币对的最新买人价格。使用RefreshRates)函数更新。
参见MarketInfo)。
【示例】

5.2.20.4 Close 收盘价
double Close
系列数组包含当前图表每个柱的收盘价格。
系列数组元素被索引入倒序的订单,即从最后一个到第一个。当前最后一个柱在数组中的索引为零。图表中的第一个柱的索引为Bars一to
参见iClose()。
【示例】
int handle=FileOpen”file. csv" ,FILE_CSV I FILE_ WRITE,”;”);
if( handle>0)
//表格栏标题记录
FileWrite ( handle,”Time; Open;High;Low;Close;Volume"
//数据记录
for( int i=0;i<Bars; i++)

FileClose ( handle );
5.2.20.5 Digits汇率小数位
int Digits
返回当前货币对的汇率小数位。
参见MarketInfo)。
【示例】
Print( DoubleToStr( Close [ 0,小数位));
5.2.20.6 High 最高价
double High
系列数组包含当前图表每个柱的最高价格。
系列数组元素被索引人倒序的订单,即从最后一个到第一个。当前最后一个柱在数组中的索引为零。图表中的第一个柱的索引为B ars一1.
参见iHigh)。
【示例】


5.2.20.7 Low 最低价
double Low
系列数组包含当前图表每个柱的最低价格。
系列数组元素被索引人倒序的订单,即从最后一个到第一个。当前最后一个柱在数组中的索引为零。图表中的第一个柱的索引为Bars一to
参见iLow
【示例】


5.2.20.8 Open 开盘价
double Open
系列数组包含当前图表每个柱的开盘价格。
系列数组元素被索引人倒序的订单,即从最后一个到第一个。当前最后一个柱在数组中的索引为零。图表中的第一个柱的索引为B ars一1
参见iOpen()。
【示例】


5.2.20.9 Point点值double Point
返回当前图表的点值。
参见MarketInfo()
【示例】
OrderSend( Symbol(),OP_ BUY,Lots, Ask , 3 ,0 , Ask+TakeProfit Point);
5.2.20.10 Time 开盘时间
datetime Time「」
系列数组包含当前图表的每个柱开盘时间。数据像日期时间一样呈现时间,从1979年1月1日零点开始以秒计算。
系列数组元素被索引人倒序的订单,即从最后一个到第一个。当前最
后一个柱在数组中的索引为零。图表中的第一个柱的索引为Bars一to
参见iTime)。
【示例】


5.2.20.11 Volume 成交量
double Volume[]
系列数组包含当前图表每个柱价格变动成交量。
系列数组元素被索引人倒序的订单,即从最后一个到第一个。当前最后一个柱在数组中的索引为零。图表中的第一个柱的索引为Bars一1
参见iVolume()。
【示例】

last Epos=FileTell( ExtHandle);
last_volume=Volume } i;
File W riteInleger ( ExtHandle,i time,LONG_ VALUE);
FileWriteDouble( ExtHandle,d_open,DOUBLE_ VALUE);
FileWriteDouble(ExtHandle,d_ low,DOUBLE_ VALUE);
FileW riteI)ouble ( ExtHandle , d_high,DOUBLE_ VALUE);
FileW riteDouble ( ExtHandle , d_close。DOUBLE_ VALUE);
FileWriteDouble(ExtHandle,d volume,DOUBLE_VALUE);