MQL4编程教程:内置函数详解与实战应用
4.4. 内置函数
MetaQuotes 4语言提供了极为丰富的内置功能,适用于多种不同的应用场景。这些功能涵盖了技术指标计算、交易操作、时间处理、数学与三角函数运算、数据转换及输出等方面,为开发者构建自动化交易系统提供了坚实的技术基础。
Abs – 返回数值的绝对值(即去除符号后的数值)。
语法:Abs(n)
参数: 数值
AccountName – 返回包含账户用户名的文本字符串(同义词:AccName)。
Alert – 产生包含用户定义数据的对话屏。
语法: Alert(...)
参数的个数不限。
Ceil – 返回大于或等于指定数值的最小整数(向上取整)。
语法:Ceil(n)
参数:数值
CloseOrder – 用于平掉当前持仓头寸(部位)。
语法:CloseOrder(order, lots, price, slippage, color)
参数说明:
order - 要平仓的订单编号
lots – 平仓的手数
price – 期望的平仓价格
slippage – 允许的最大价格滑点
color – 图表上标记的颜色
Comment – 在图表的左上角显示用户自定义的信息。
语法: Comment(...)
参数数量可任意。
Cos – 计算并返回指定数值的余弦值,该数值以弧度为单位。
语法: Cos(x)
参数:数值
CurTime – 返回自1970年1月1日以来经过的秒数(Unix时间戳)。
Day – 返回当前日期在当月中的序号(1-31)。
DayOfWeek – 返回当前日期在当周中的序号。1-星期日,2-星期一,...,7-星期六。
DeleteOrder – 删除之前提交的挂单(延迟订单)。
语法:DeleteOrder(order)
参数:order - 待删除的订单编号
Exp – 返回以自然常数e为底的指定次幂的值。
语法:Exp(n)
参数:数值
Floor – 返回小于或等于指定数值的最大整数(向下取整)。
语法:Floor(n)
参数:数值
Highest – 在指定周期内,返回最高价、最低价、开盘价、收盘价或成交量的最大值(由type参数决定)。
语法:Highest(type, beginbar, periods)
参数说明:
Type - 数据类别,可取值:MODE_OPEN, MODE_LOW, MODE_HIGH, MODE_CLOSE, MODE_VOLUME;beginbar - 起始柱的偏移量(相对于当前柱);
periods - 计算所涵盖的周期数
Hour – 返回当前时间在24小时制中的小时数(0-23)。
iADX - 平均方向移动指数(ADX)。
语法:iADX(period, mode, shift)
参数:
period – 计算周期数;
mode – 数据类型,可取值:MODE_MAIN(主要指标)、MODE_PLUSDI(+DI线)、MODE_MINUSDI(-DI线)。
shift – 偏移量(向回移动的柱数),用于获取数据。
iATR - 平均真实波幅指标。
语法:iATR(period, shift)
参数:
period – 计算周期数;
shift – 偏移量(向回移动的柱数),用于获取数据。
iBANDS - 布林带指标。
语法: iBANDS(period, deviation, mode, shift)
参数:
period – 计算周期数;
deviation - 标准差倍数;
mode – 可取值:MODE_MAIN(主线)、MODE_LOW(下轨)、MODE_HIGH(上轨)。
shift – 偏移量。
iCCI – 商品通道指数指标。
语法: iCCI(period, shift)
参数:
period – 计算周期数;
shift – 偏移量。
iMA – 移动平均线指标。
语法: iMA(period, mode, shift)
参数:
period – 计算周期数;
mode – 计算模式,可取值:MODE_SMA(简单平均)、MODE_EMA(指数平均)、MODE_WMA(加权平均)。
shift – 偏移量。
iMACD - 指数平滑异同移动平均线指标。
语法:iMACD(fast_ema_period, slow_ema_period, signal_period, mode, shift)
参数:
fast_ema_period - 快线EMA周期(通常为12);
slow_ema_period - 慢线EMA周期(通常为26);
signal_period - 信号线周期(通常为9);
mode - 数据源,可取值:MODE_MAIN(主指标)、MODE_SIGNAL(信号线);
shift - 偏移量。
iMFI – 资金流量指标。
语法:iMFI(period, shift)
参数:
period – 计算周期数;
shift – 偏移量。
iMOM – 动量指标。
语法:iMOM(period, shift)
参数:
period – 计算周期数;
shift – 偏移量。
iRSI – 相对强弱指标。
语法:iRSI(period, shift)
参数:
period – 计算周期数;
shift – 偏移量。
iSAR - 抛物线转向指标。
语法: iSAR(step, maximum, shift)
参数:
step - 步长增量,通常为0.02;
maximum - 最大值,通常为0.2;
shift - 偏移量。
iSTO - 随机振荡指标(KDJ)。
语法:iSTO(%Kperiod, %Dperiod, slowing, method, mode, shift)
参数:
%Kperiod - %K线周期;
%Dperiod - %D线周期;
slowing – 平滑值;
method – 计算方法,可取值:MODE_SMA(简单平均)、MODE_EMA(指数平均)、MODE_WMA(加权平均);
mode – 数据源:MODE_MAIN(主指标线)、MODE_SIGNAL(信号线);
shift - 偏移量。
iWPR - 威廉百分比范围指标。
语法:iWPR(period, shift)
参数:
period – 计算周期数;
shift – 偏移量。
IsDemo – 如果智能交易系统在模拟账户上运行,则返回真(true),否则返回假(false)。
IsIndirect – 如果当前工具采用反向报价方式,则返回真(true),否则返回假(false)。
LastTradeTime – 返回最近一次交易操作的时间(如SetOrder、DelOrder、CloseOrder、ModifyOrder),以Unix时间戳形式表示。
Log – 返回指定正数值的自然对数。
语法:Log(n)
参数: 正数
Lowest - 在指定周期内返回最低价、最高价、开盘价、收盘价或成交量的最小值(由type参数决定)。
语法:Lowest(type, beginbar, periods)
参数:
type – 可取值:MODE_OPEN, MODE_LOW, MODE_HIGH, MODE_CLOSE, MODE_VOLUME
beginbar – 起始柱偏移量;
periods – 周期数
Minute – 返回当前小时中的分钟数(0-59)。
Mod - 返回两个数值相除的余数(取模运算)。
语法:Mod(n1, n2)
参数: 数值1、数值2
ModifyOrder – 修改已开仓头寸或挂单的属性(如止损、获利、价格等)。
语法:ModifyOrder(order, price, stoploss, takeprofit, color)
参数:
order – 订单编号;
price – 新的价格(仅适用于挂单);
stoploss – 新的止损价格;
takeprofit – 新的止盈价格;
color – 图表上标记的颜色
Month – 返回当前月份(1-12)。
MoveObject – 移动或创建指定的图表对象。
语法:MoveObject(name, type, time1, price1, time2, price2)
参数:
name – 对象名称(字符串);
type – 对象类型,可取值:OBJ_HLINE(水平线)、OBJ_VLINE(垂直线)、OBJ_TRENDLINE(趋势线)、OBJ_SYMBOL(符号)、OBJ_TEXT(文本);
time1 – 第一个点的时间;
price1 - 第一个点的价格;
time2 - 第二个点的时间;
price2 - 第二个点的价格
NumberToStr – 将数值转换为指定精度的字符串。
语法:NumberToStr(number, precision)
参数:
number – 要转换的数值;
precision – 保留的小数位数
OrderValue – 返回订单的特定属性值,如开仓时间、类型、手数等。
语法:OrderValue(position, mode)
参数:
position – 订单在交易列表中的序号(从1开始);
mode – 要获取的数据类型,可取值:VAL_TICKET(订单号)、VAL_OPENTIME(开仓时间)、VAL_TYPE(订单类型)、VAL_LOTS(手数)、VAL_SYMBOL(交易品种)、VAL_OPENPRICE(开仓价)、VAL_STOPLOSS(止损价)、VAL_TAKEPROFIT(止盈价)、VAL_CLOSEPRICE(平仓价)、VAL_COMISSION(手续费)、VAL_SWAP(库存费)、VAL_PROFIT(盈亏)、VAL_COMMENT(注释)、VAL_CLOSETIME(平仓时间)。
Ord – 与OrderValue功能相同。
Period – 返回当前图表的时间周期(以分钟为单位)。
Pow – 返回指定基数的指数次幂。
语法:Pow(base, exponent)
参数:数值1、数值2。
Print – 将用户指定的信息输出到系统日志中。
语法:Print(...)
参数数量可任意。
PrintTrade – 将特定持仓的详细信息写入日志。
语法:PrintTrade(position)
参数:position – 交易列表中的持仓序号。
Rand – 生成一个伪随机数。使用前需调用Srand函数初始化随机数发生器,否则每次启动程序时使用默认种子。
Round – 返回指定数值四舍五入后的整数值。
语法:Round(n)
参数: 数值
ServerAddress – 返回服务器IP地址(字符串形式)。
SetArrow – 在图表上绘制箭头标记。
语法:SetArrow(time, price, symbol, color)
参数:
time - 时间坐标;
price - 价格坐标;
symbol - 符号索引(来自Wingdings字体);
color - 颜色
SetObjectText - 为指定对象设置文本内容。
语法:SetObjectText(name, text, font, size, color)
参数:
name – 对象名称;
text – 要设置的文本;
font – 字体名称;
size – 字体大小;
color – 字体颜色
SetOrder – 用于开仓或设置挂单的核心函数。
语法:SetOrder(operation, lots, price, slippage, stoploss, takeprofit, color)
参数:
operation – 操作类型,可取值:OP_BUY(买入)、OP_SELL(卖出)、OP_BUYLIMIT(买入限价)、OP_SELLLIMIT(卖出限价)、OP_BUYSTOP(买入止损)、OP_SELLSTOP(卖出止损);
lots – 手数;
price – 期望的成交价格;
slippage - 最大滑点(仅OP_BUY和OP_SELL);
stoploss – 止损价格;
takeprofit – 止盈价格;
color – 图表上标记的颜色
SetText – 在指定位置创建文本对象。
语法:SetText(time, price, string, color)
参数:
time - 时间坐标;
price - 价格坐标;
string – 文本内容;
color – 文字颜色
Sin - 计算指定弧度角度的正弦值。
语法:Sin(x)
参数: 数值
Sqrt - 计算并返回指定正数的平方根。
语法:Sqrt(x)
参数: 正数
Srand – 初始化伪随机数发生器。建议在程序启动时使用当前时间作为种子,以增强随机性。
语法:Srand(seed)
参数: 种子值
Symbol – 返回当前智能交易系统所运行交易品种的名称(字符串)。
Tan - 计算指定弧度角度的正切值。
语法:Tan(x)
参数: 数值
TimeToStr – 将Unix时间戳转换为格式为“yyyy.mm.dd hh:mi”的字符串。
语法:TimeToStr(time)
参数: 时间戳
Year – 返回当前年份(如2025)。
