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)。