预定义标准常量( MarketInfo(Symbol(),MOD
为了简化程序编写,使程序文本编辑使用起来更加简便,在MQL4中预定义了标准常量。
标准常量类似于宏代换,并且是int(整数类型)。
这些常量按用途进行分组。
序列化数组
序列化数组标识符 用在ArrayCopySeries(), iHighest()和iLowest()函数。可以是以下任意值:
(常数 值 描述)
MODE_OPEN 0 开
MODE_LOW 1 低
MODE_HIGH 2 高
MODE_CLOSE 3 收
MODE_VOLUME 4 量(用于iLowest()和iHighest()函数中)
MODE_TIME 5 时 (用于ArrayCopySeries()函数中)
图表时间框
(图表时间周期)。
(常数 值 描述)
PERIOD_M1 1 1 分钟
PERIOD_M5 5 5 分钟
PERIOD_M15 15 15 分钟
PERIOD_M30 30 30 分钟
PERIOD_H1 60 1 小时
PERIOD_H4 240 4 小时
PERIOD_D1 1440 日
PERIOD_W1 10080 周
PERIOD_MN1 43200 月
0 (zero) 0 图表中当前时框
交易类型
用于OrderSend()函数。
(常数 值 描述)
OP_BUY 0 即时买
OP_SELL 1 即时卖
OP_BUYLIMIT 2 限挂买
OP_SELLLIMIT 3 限挂卖
OP_BUYSTOP 4 突挂买
OP_SELLSTOP 5 突挂卖
价格常量
(常数 值 描述)
PRICE_CLOSE 0 收价
PRICE_OPEN 1 开价
PRICE_HIGH 2 高价
PRICE_LOW 3 低价
PRICE_MEDIAN 4 中价 (h+l)/2.
PRICE_TYPICAL 5 典价(h+l+cl)/3.
PRICE_WEIGHTED 6 权价(h+l+2*c)/4.
市场信息
用在MarketInfo(Symbol(), MODE_....) 函数:
(常数 值 简称 描述)
MODE_LOW 1
该币今高价 // 今日最低价。
MODE_HIGH 2
该币今低价 // 今日最高价。
MODE_TIME 5
最后K线时// 最新接收到的tick(最新的价位)的时间 (最新知道的服务器时间)。
MODE_BID 9
该币叫买价 // 最新叫买价。 对于当前币,则使用保存在预定义变量里的 Bid 。
MODE_ASK 10
该币叫卖价 // 最新叫卖价。 对于当前币,则使用保存在预定义变量里的 Ask 。
MODE_POINT 11
规定点值 // 当前报价的点值。对于当前货币对,在预定义变量 Point 中。
MODE_DIGITS 12
规定小数位 // 在货币对价格中小数点后小数位数。对于当前货币对,它被保存在预定义变量Digits 中。
MODE_SPREAD 13
规定点差 // 当前点差。
MODE_STOPLEVEL 14
规定止损幅 // 平台规定的允许的到最小止损位的距离和起码的挂单的距离点数。
MODE_LOTSIZE 15
基币标手金 // 基准货币的标准手数大小。(即: 一标准手基础币是多少金额)。
如:
MarketInfo("EURUSD", MODE_LOTSIZE); 表示一标准手(即10万)的欧元可换多少美元。其中欧元写在前面,是基础币;美元写在后面,是目标币。该函数返回的是一个固定的值 100,000.
例:
基币标手金= MarketInfo(Symbol(), MODE_LOTSIZE);
if(使用资管==true){
手数= AccountEquity()*(风险/100) /(基币标手金/杠杆);
手数= StrToDouble(DoubleToStr(手数, 手位数));
}
else{
手数= 手数参数;
}
MODE_TICKVALUE 16
标手每跳金 // 当前品种报价每一跳的价值。
在相对于指定的货币存款中 返回点值
MODE_TICKSIZE 17
报价最小单位 // 当前品种报价每一跳的大小。
对于当前货币对, MarketInfo(Symbol(), MODE_POINT) 和MarketInfo(Symbol(), MODE_TICKSIZE)的值是相同的。
MODE_SWAPLONG 18
多头掉期 // 看涨仓位掉期。
MODE_SWAPSHORT 19
空头掉期 // 卖空仓位掉期。
MODE_STARTING 20
期货开始日 // 交易开始日期 (用于期货)。
MODE_EXPIRATION 21
期货到期日 // 交易到期日 (用于期货)。
MODE_TRADEALLOWED 22
允交易币量 // 货币对是否允许交易。
MODE_MINLOT 23
规定最小手 // 允许交易的最小手数。
MODE_LOTSTEP 24
改标手步幅 // 交易手数的最小增量。改变标准手步幅。
改标手步幅= MarketInfo(Symbol(), MODE_LOTSTEP);
if( 改标手步幅 ==0.01)
手位数= 2;
if( 改标手步幅 ==0.1)
手位数= 1;
MODE_MAXLOT 25
规定最大手 // 允许交易的最大手数。
MODE_SWAPTYPE 26
计掉期方式 // 掉期计算方法。
0 – 按点;
1 -按基准货币对;
2 – 按利率;
3 – 按保证金货币。
MODE_PROFITCALCMODE 27
计赢利方式 // 赢利计算模式。
0 – Forex(外汇);
1 – CFD(如黄金);
2 – Futrues(期货)。
MODE_MARGINCALCMODE 28
计保证金方式 // 保证金计算模式。
0 – Forex(外汇);
1 – CFD(差价合约);
2 – Futrues(期货);
3 – CFD for indices(CFD指数)。
MODE_MARGININIT 29
一标手初始金额 // 1标准手的初始保证金需求。
MODE_MARGINMAINTENANCE 30
一标手开仓金 额 // 维持开仓1标准手的保证金。
MODE_MARGINHEDGED 31
一标手护盘金 额 // 1标准手的对冲保证金。
MODE_MARGINREQUIRED 32
现价标手金 // 要求买1标准手的保证金余额。以现价( 卖出价 )返回一个标准手的价格
MODE_FREEZELEVEL 33
冻结订单水平位 // 冻结订单的点位。如果执行价出现在冻结订单的点位范围内,订单将不能被修改会、取消或平仓。
画线样式
SetIndexStyle()函数中 画线样式的列表。
类型:
(常数 值 描述)
DRAW_LINE 0 线
DRAW_SECTION 1 线条
DRAW_HISTOGRAM 2 柱
DRAW_ARROW 3 箭 (货币对)。
DRAW_ZIGZAG 4 折线
DRAW_NONE 12 不画线
其中 线的样式,宽度为1时有效:
(常数 值 描述)
STYLE_SOLID 0 实
STYLE_DASH 1 虚
STYLE_DOT 2 点
STYLE_DASHDOT 3 点划线
STYLE_DASHDOTDOT 4 双点划线
箭头代码
预定义箭头代码列表:
常数 值 描述
SYMBOL_THUMBSUP 67 大拇指向上符号 (C).
SYMBOL_THUMBSDOWN 68 大拇指向下符号 (D).
SYMBOL_ARROWUP 241 箭头向上符号 (?).
SYMBOL_ARROWDOWN 242 箭头向下符号 (ò).
SYMBOL_STOPSIGN 251 打叉符号(?).
SYMBOL_CHECKSIGN 252 打钩符号 (ü).
对于价格和时间的特殊箭头代码:
常数 值 描述
1 右上转箭头 (?).
2 右下转箭头(?).
3 左指向三角 (?).
4 破折号(–).
SYMBOL_LEFTPRICE 5 价格左侧标签
SYMBOL_RIGHTPRICE 6 价格右侧标签
指标线标示符
用在iMACD(), iRVI(), iStochastic()函数指标中。
MODE_MAIN 0 基本指标线。
MODE_SIGNAL 1 信号线。
(略)
Ichimoku Kinko Hyo指标线标示符
用在iIchimoku() 指标中
(略)
移动平均计算方法
用在iAlligator(), iEnvelopes(), iEnvelopesOnArray, iForce(), iGator(), iMA(), iMAOnArray(),iStdDev(), iStdDevOnArray(), iStochastic()中。
常数 值 描述
MODE_SMA 0 简单均
MODE_EMA 1 指数均
MODE_SMMA 2 平滑均
MODE_LWMA 3 线性加权均
信息框从信息框函数MessageBox()返回代码。
如果信息框中有“Cancel(取消)”按钮,当选择Cancel按钮或是按了ESC键时,函数将返回IDCANCEL值。
如果信息框中不存在Cancel按钮,按ESC键无效。
注:信息框返回码定义在WinUser32.mqh文件中
常数 值 描述
IDOK 1 选择 (OK) 确定按钮.
IDCANCEL 2 选择 (Cancel) 取消按钮.
IDABORT 3 选择 (Abort) 中止按钮.
IDRETRY 4 选择 (Retry) 重试按钮.
IDIGNORE 5 选择 (Ignore) 忽略按钮.
IDYES 6 选择 (Yes)是按钮.
IDNO 7 选择 (No)否按钮.
IDTRYAGAIN 10 选择 (Try Again) 再次尝试按钮.
IDCONTINUE 11 选择 (Continue) 继续按钮.
MessageBox()函数标志描述了一个对话框的内容和行为。
这个值还可以和下列值组合应用。
为在信息框中显示相应按钮,可以指定下列值之一。
常数 值 描述
MB_OK 0×00000000 消息框中包含的一个按钮: (OK) 确定 这是默认值.
MB_OKCANCEL 0×00000001 消息框中包含的两个按钮: (OK) 确定 和 (Cancel) 取消.
MB_ABORTRETRYIGNORE 0×00000002 消息框中包含的三个按钮: (Abort)中止, (Retry)重试和(Ignore)忽略.
MB_YESNOCANCEL 0×00000003 消息框中包含的三个按钮: (Yes)是,(No)否 和 (Cancel)取消
MB_YESNO 0×00000004 消息框中包含的两个按钮: (Yes)是 和 (No)否
MB_RETRYCANCEL 0×00000005 消息框中包含的两个按钮: (Retry)重试 和 (Cancel)取消
MB_CANCELTRYCONTINUE 0×00000006 Windows 2000: 消息框中包含的三个按钮: 取消, 重试, 继续, 使用这个消息框类型代替
为在信息框中显示图标,可以指定下列值之一。
常数 值 描述
MB_ICONSTOP, MB_ICONERROR, MB_ICONHAND 0×00000010 显示禁止标志的图标.
MB_ICONQUESTION 0×00000020 显示问号的图标.
MB_ICONEXCLAMATION, MB_ICONWARNING 0×00000030 显示感叹号图标.
MB_ICONINFORMATION, MB_ICONASTERISK 0×00000040 显示小写字母 i 组成的图标.
为在信息框内显示默认的图标,可以指定下列值之一。
常数 值 描述
MB_DEFBUTTON1 0×00000000 第一个按钮为默认。除非指定MB_DEFBUTTON2, MB_DEFBUTTON3, MB_DEFBUTTON4, 否则MB_DEFBUTTON1是默认的
MB_DEFBUTTON2 0×00000100 第二个按钮为默认.
MB_DEFBUTTON3 0×00000200 第三个按钮为默认.
MB_DEFBUTTON4 0×00000300 第四个按钮为默认.
MessageBox()函数行为标志定义在WinUser32.mqh文件内,这就是为什么这个头文件必须通过#include包含进来的原因。此处,没有列出所有的标志,详见Win32 API说明。
Wingdings符号(略)
Web颜色名称(略)
对象类型
用在ObjectCreate(), ObjectsDeleteAll() 和 ObjectType() 函数中:
对象可能有1-3 个相关类型的坐标。
常数 值 描述
OBJ_VLINE 0 垂线 // 使用第一坐标的时间部分。
OBJ_HLINE 1 横线 // 使用第一坐标的价格部分。
OBJ_TREND 2 趋线。 使用2个坐标。
OBJ_TRENDBYANGLE 3 角度趋线 // 使用1 个坐标。应用ObjectSet()函数设置线的角度。
OBJ_REGRESSION 4 回归 // 使用头两个坐标的时间部分。
OBJ_CHANNEL 5 通道 // 使用3个坐标。
OBJ_STDDEVCHANNEL 6 标准差通道 // 使用头两个坐标的时间部分。
OBJ_GANNLINE 7 甘氏线 // 使用2个坐标,但忽略第二个坐标的价格部分。
OBJ_GANNFAN 8 甘氏扇形线 // 使用2个坐标,但忽略第二个坐标的价格部分。
OBJ_GANNGRID 9 甘氏网格线 // 使用2个坐标,但忽略第二个坐标的价格部分
OBJ_FIBO 10 斐波纳契回撤 // 使用2个坐标。
OBJ_FIBOTIMES 11 斐波纳契时间周期线 // 使用2个坐标。
OBJ_FIBOFAN 12 斐波纳契扇形线 // 使用2个坐标。
OBJ_FIBOARC 13 斐波纳契弧线 // 使用2个坐标。
OBJ_EXPANSION 14 斐波纳契扩展 // 使用3个坐标。
OBJ_FIBOCHANNEL 15 斐波纳契通道 // 使用3个坐标。
OBJ_FIBO 10 斐波纳契回撤 // 使用2个坐标。
OBJ_RECTANGLE 16 矩形 // 使用2个坐标。
OBJ_TRIANGLE 17 三角 // 使用3个坐标。
OBJ_ELLIPSE 18 椭圆 // 使用2个坐标。
OBJ_PITCHFORK 19 安德鲁分叉线 // 使用3个坐标。
OBJ_CYCLES 20 圆 // 使用2个坐标。
OBJ_TEXT 21 文本 // 使用1 坐标。
OBJ_ARROW 22 箭头 // 使用1个坐标。
OBJ_LABEL 23 标签 // 按像素使用1个坐标。
对象属性
对象值索引用在ObjectGet() 和 ObjectSet() 函数中:
常数 值 类型 描述
OBJPROP_TIME1 0 datetime 设置/获取第一个坐标时间部分的数值。
OBJPROP_PRICE1 1 double 设置/获取第一个坐标价格部分的数值。
OBJPROP_TIME2 2 datetime 设置/获取第二个坐标时间部分的数值。
OBJPROP_PRICE2 3 double 设置/获取第二个坐标价格部分的数值。
OBJPROP_TIME3 4 datetime 设置/获取第三个坐标时间部分的数值。
OBJPROP_PRICE3 5 double 设置/获取第三个坐标价格部分的数值。
OBJPROP_COLOR 6 color 设置/获取对象颜色的数值。
OBJPROP_STYLE 7 int 设置/获取对象的线型样式。
值为以下常量之一:
STYLE_SOLID,
STYLE_DASH,
STYLE_DOT,
STYLE_DASHDOT,
STYLE_DASHDOTDOT
OBJPROP_WIDTH 8 int 设置/获取对象的线宽的数值。可以是1到5。
OBJPROP_BACK 9 bool 设置/获取对象背景线标志的布尔值。
OBJPROP_RAY 10 bool 设置/获取对象射线标志的布尔值。
OBJPROP_ELLIPSE 11 bool 设置/获取斐波纳契弧线椭圆标志的布尔值。
OBJPROP_SCALE 12 double 设置/获取缩放对象属性的数值。
OBJPROP_ANGLE 13 double 设置/获取角度对象属性的数值。
OBJPROP_ARROWCODE 14 int 设置/获取箭头代码对象属性的数值。
OBJPROP_TIMEFRAMES 15 int 设置/获取图表时段对象属性,其值为一个或多个时段对象显示常数的组合值。
OBJPROP_DEVIATION 16 double 设置/获取标准差对象离差属性的双精度值。
OBJPROP_FONTSIZE 100 int 设置/获取文本对象字号的整数值。
OBJPROP_CORNER 101 int 设置/获取标签对象固定窗口角的整数值。必须是从0到3
OBJPROP_XDISTANCE 102 int 设置/获取固定X间隔对象属性的整数值。
OBJPROP_YDISTANCE 103 int 设置/获取固定Y间隔对象属性的整数值。
OBJPROP_FIBOLEVELS 200 int 设置/获取斐波纳契对象水平线个数的整数值。可以从0到32。
OBJPROP_LEVELCOLOR 201 color 设置/获取对象水平线颜色的颜色值。
OBJPROP_LEVELSTYLE 202 int 设置/获取对象水平线样式的值。
其值为之一:
STYLE_SOLID,
STYLE_DASH,
STYLE_DOT,
STYLE_DASHDOT,
STYLE_DASHDOTDOT。
OBJPROP_LEVELWIDTH 203 int 设置/获取对象水平线宽度的整数值。可以从1到5。
OBJPROP_FIRSTLEVEL+n 210+n int 斐波纳契对象水平线编号,此处n为设置/获取第n条水平线编号。可以是从0到31。
对象可视性
对象显示的图表时段。在ObjectSet()函数中设置OBJPROP_TIMEFRAMES属性。
常数 值 描述。
OBJ_PERIOD_M1 0×0001 对象只在1分钟图表中显示。
...
OBJ_PERIOD_H4 0×0020 对象只在4小时图表中显示。
OBJ_PERIOD_D1 0×0040 对象只在日图表中显示。
OBJ_PERIOD_W1 0×0080 对象只在周图表中显示。
OBJ_PERIOD_MN1 0×0100 对象只在月图表中显示。
OBJ_ALL_PERIODS 0x01FF 对象在所有时间周期图表中显示。
NULL 0 对象在所有时间周期图表中显示。
EMPTY -1 在所有时间周期图表中不显示。