在 MQL4 编程中,MetaTrader 4 提供了大量的内置函数,用于处理交易、字符串操作、数组操作、时间管理等任务。以下是常用的内置函数的详细分类,尤其是字符串相关函数和订单相关函数会详细列举。
一、字符串相关内置函数
字符串操作在 MQL4 中非常重要,尤其是在处理订单信息、日志记录和与外部 API 交互时。以下是 MQL4 中常用的字符串相关函数:
1. 字符串处理函数
函数名 | 功能说明 |
---|---|
StringLen(string str) |
返回字符串的长度(字符个数)。 |
StringSubstr(string str, int start, int length) |
提取子字符串,从 start 开始,长度为 length 。 |
StringFind(string str, string substr, int start_pos=0) |
查找子字符串 substr 在字符串 str 中首次出现的位置,返回索引(从 0 开始)。 |
StringReplace(string str, string search, string replace) |
将字符串 str 中的 search 替换为 replace ,返回替换后的字符串。 |
StringTrimLeft(string str) |
去除字符串左侧的空格。 |
StringTrimRight(string str) |
去除字符串右侧的空格。 |
StringToUpper(string str) |
将字符串转换为大写。 |
StringToLower(string str) |
将字符串转换为小写。 |
StringFormat(string format, ...) |
格式化字符串,类似于 printf ,支持占位符(如 %s , %d , %.2f 等)。 |
StringToCharArray(string str, char &array[], int start=0, int count=WHOLE_ARRAY, int cp=SYSTEM_CP) |
将字符串转换为字符数组,支持指定字符编码(如 UTF-8)。 |
CharArrayToString(const char &array[], int start=0, int count=WHOLE_ARRAY, int cp=SYSTEM_CP) |
将字符数组转换为字符串,支持指定字符编码。 |
StringAdd(string str1, string str2) |
将两个字符串拼接为一个字符串。 |
2. 字符编码相关函数
函数名 | 功能说明 | |
---|---|---|
StringToInteger(string str) |
将字符串转换为整数。 | |
StringToDouble(string str) |
将字符串转换为浮点数。 | |
IntegerToString(int value) |
将整数转换为字符串。 | |
DoubleToString(double value, int digits) |
将浮点数转换为字符串,保留指定的小数位数。 | |
StringToTime(string str) |
将日期时间格式的字符串转换为 datetime 类型(如 "2023.03.08 12:34" 转换为时间戳)。 |
|
`TimeToString(datetime value, int mode=TIME_DATE | TIME_MINUTES)` | 将 datetime 时间类型转换为字符串,支持不同格式(日期、时间、日期+时间)。 |
二、订单相关内置函数
MQL4 提供了一系列内置函数,用于处理订单的查询、修改、执行等操作。这些函数主要用于与交易服务器交互。
1. 订单查询函数
函数名 | 功能说明 |
---|---|
OrdersTotal() |
返回当前账户的活动订单总数(挂单和持仓)。 |
OrdersHistoryTotal() |
返回当前账户的历史订单总数(已关闭订单)。 |
OrderSelect(int index, int select, int pool) |
选择订单,index 为索引,select 指定选择方式(SELECT_BY_POS 或 SELECT_BY_TICKET ),pool 指定订单池(MODE_TRADES 或 MODE_HISTORY )。 |
OrderTicket() |
返回当前选择订单的票号(唯一标识符)。 |
OrderType() |
返回当前选择订单的类型(OP_BUY , OP_SELL , OP_BUYLIMIT , OP_SELLLIMIT , 等)。 |
OrderSymbol() |
返回当前选择订单的交易品种(如 EURUSD )。 |
OrderLots() |
返回当前选择订单的手数。 |
OrderOpenPrice() |
返回当前选择订单的开仓价格。 |
OrderClosePrice() |
返回当前选择订单的平仓价格(历史订单)。 |
OrderStopLoss() |
返回当前选择订单的止损价格。 |
OrderTakeProfit() |
返回当前选择订单的止盈价格。 |
OrderOpenTime() |
返回当前选择订单的开仓时间。 |
OrderCloseTime() |
返回当前选择订单的平仓时间(历史订单)。 |
OrderProfit() |
返回当前选择订单的利润(浮动盈亏)。 |
OrderSwap() |
返回当前选择订单的隔夜利息(Swap)。 |
OrderCommission() |
返回当前选择订单的佣金。 |
OrderMagicNumber() |
返回当前选择订单的魔术号(EA 用于标识订单的数字)。 |
OrderComment() |
返回当前选择订单的备注信息。 |
OrderExpiration() |
返回当前选择订单的到期时间(仅适用于挂单)。 |
2. 订单交易函数
函数名 | 功能说明 |
---|---|
OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE) |
开仓或挂单函数,用于发送订单到交易服务器。 |
OrderClose(int ticket, double lots, double price, int slippage, color arrow_color=CLR_NONE) |
平仓函数,用于关闭指定订单。 |
OrderCloseBy(int ticket, int opposite, color arrow_color=CLR_NONE) |
对锁仓订单进行平仓。 |
OrderModify(int ticket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE) |
修改订单的止损、止盈或挂单价格。 |
OrderDelete(int ticket) |
删除挂单。 |
3. 订单类型常量
常量名 | 值 | 描述 |
---|---|---|
OP_BUY |
0 | 市价买单。 |
OP_SELL |
1 | 市价卖单。 |
OP_BUYLIMIT |
2 | 买入限价挂单。 |
OP_SELLLIMIT |
3 | 卖出限价挂单。 |
OP_BUYSTOP |
4 | 买入止损挂单。 |
OP_SELLSTOP |
5 | 卖出止损挂单。 |
4. 订单池常量
常量名 | 值 | 描述 |
---|---|---|
MODE_TRADES |
0 | 当前活动订单池(挂单和持仓)。 |
MODE_HISTORY |
1 | 历史订单池(已关闭订单)。 |
三、其他常用内置函数
1. 日志输出函数
函数名 | 功能说明 |
---|---|
Print(...) |
输出日志到终端日志窗口。支持多个参数。 |
PrintFormat(string format, ...) |
格式化输出日志,类似于 printf 。 |
Alert(...) |
弹出警告窗口,显示信息。 |
Comment(...) |
在图表左上角显示注释信息。 |
2. 时间相关函数
函数名 | 功能说明 |
---|---|
TimeCurrent() |
返回当前服务器时间(datetime 类型)。 |
TimeLocal() |
返回本地计算机时间(datetime 类型)。 |
TimeGMT() |
返回当前 GMT 时间(datetime 类型)。 |
TimeDay(datetime time) |
返回指定时间的日期(天)。 |
TimeHour(datetime time) |
返回指定时间的小时。 |
TimeMinute(datetime time) |
返回指定时间的分钟。 |
总结
-
字符串相关函数:
- 用于处理订单信息、日志记录、API 数据交互,常用的有
StringFormat
、StringToCharArray
、StringReplace
等。
- 用于处理订单信息、日志记录、API 数据交互,常用的有
-
订单相关函数:
- 用于查询订单信息和执行交易操作,常用的有
OrdersTotal
、OrderSelect
、OrderSend
、OrderModify
等。
- 用于查询订单信息和执行交易操作,常用的有
-
时间和日志函数:
- 用于记录系统运行时间和调试信息,常用的有
TimeCurrent
、Print
、Comment
等。
- 用于记录系统运行时间和调试信息,常用的有
熟练掌握这些内置函数是编写高效 MQL4 程序的基础。