- 未初始化原因代码
- 特殊常量
- 错误代码
为了简化程序编写,使程序文本编辑使用起来更加简便,在MQL4中预定义了标准常量。
标准常量类似于宏代换,并且是int(整数类型)。
这些常量按用途进行分组。
未初始化原因代码
使用UninitializeReason() 函数返回未初始化原因代码。可以是以下任意值:
常数 | 值 | 描述 |
---|---|---|
0 | 脚本独立执行完成 | |
REASON_REMOVE | 1 | 从图表中删除智能交易。 |
REASON_RECOMPILE | 2 | 重新编译智能交易。 |
REASON_CHARTCHANGE | 3 | 改变了图表货币对和时间周期。 |
REASON_CHARTCLOSE | 4 | 关闭图表 |
REASON_PARAMETERS | 5 | 用户改变了输入参数 |
REASON_ACCOUNT | 6 | 其他账户已激活 |
特殊常量
特殊常量用于描述参数和变量状态。可以是以下任意值:
常数 | 值 | 描述 |
---|---|---|
NULL | 0 | 表明字符串为空值。 |
EMPTY | -1 | 表明参数为空值。 |
EMPTY_值 | 0x7FFFFFFF | 默认自定义指标为空值。 |
CLR_NONE | 0xFFFFFFFF | 表明颜色为空值。 |
WHOLE_ARRAY | 0 | 配合数组函数应用,表示数组所有元素将被处理。 |
错误代码
GetLastError()函数返回出错代码,错误代码常量定义在stderror.mqh文件里。想要获取错误的文本信息,请调用在stdlib. mqh文件中定义的ErrorDescription()函数。
#include <stderror.mqh>#include <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)); }
从服务器返回的错误代码及描述说明
常数 | 值 | 描述 |
---|---|---|
ERR_NO_ERROR | 0 | 没有错误返回。 |
ERR_NO_RESULT | 1 | 没有错误返回,但结果不明。 |
ERR_COMMON_ERROR | 2 | 一般错误。 |
ERR_INVALID_TRADE_PARAMETERS | 3 | 无效交易参数。 |
ERR_SERVER_BUSY | 4 | 交易服务器繁忙。 |
ERR_OLD_VERSION | 5 | 客户终端版本太旧。 |
ERR_NO_CONNECTION | 6 | 没有连接服务器。 |
ERR_NOT_ENOUGH_RIGHTS | 7 | 没有权限。 |
ERR_TOO_FREQUENT_REQUESTS | 8 | 请求过于频繁。 |
ERR_MALFUNCTIONAL_TRADE | 9 | 无效交易。 |
ERR_ACCOUNT_DISABLED | 64 | 账户禁用。 |
ERR_INVALID_ACCOUNT | 65 | 无效账户 |
ERR_TRADE_TIMEOUT | 128 | 交易超时。 |
ERR_INVALID_PRICE | 129 | 无效价格。 |
ERR_INVALID_STOPS | 130 | 无效平仓。 |
ERR_INVALID_TRADE_VOLUME | 131 | 无效交易量。 |
ERR_MARKET_CLOSED | 132 | 市场关闭。 |
ERR_TRADE_DISABLED | 133 | 交易被禁止。 |
ERR_NOT_ENOUGH_MONEY | 134 | 资金不足。 |
ERR_PRICE_CHANGED | 135 | 价格已变动。 |
ERR_OFF_QUOTES | 136 | 无报价。 |
ERR_BROKER_BUSY | 137 | 经纪繁忙。 |
ERR_REQUOTE | 138 | 重新报价。 |
ERR_ORDER_LOCKED | 139 | 定单被锁定。 |
ERR_LONG_POSITIONS_ONLY_ALLOWED | 140 | 只允许多头头寸。 |
ERR_TOO_MANY_REQUESTS | 141 | 请求过多。 |
ERR_TRADE_MODIFY_DENIED | 145 | 因为订单过于接近市价,修改被拒绝。 |
ERR_TRADE_CONTEXT_BUSY | 146 | 交易系统忙。 |
ERR_TRADE_EXPIRATION_DENIED | 147 | 交易过期,被经纪商拒绝。 |
ERR_TRADE_TOO_MANY_ORDERS | 148 | 开仓和挂单总数已经达到经纪商的限定。 |
ERR_TRADE_HEDGE_PROHIBITED | 149 | 当对冲功能被关闭时,尝试开仓一个和现有仓位相反的订单。 |
ERR_TRADE_PROHIBITED_BY_FIFO | 150 | 尝试关闭一个违反FIFO规则的订单。 |
MQL4 运行时错误代码
常数 | 值 | 描述 |
---|---|---|
ERR_NO_MQLERROR | 4000 | 没有错误。 |
ERR_WRONG_FUNCTION_POINTER | 4001 | 错误函数指针。 |
ERR_ARRAY_INDEX_OUT_OF_RANGE | 4002 | 数组索引(下标)超出范围。 |
ERR_NO_MEMORY_FOR_CALL_STACK | 4003 | 没有足够内存开设函数调用堆栈。 |
ERR_RECURSIVE_STACK_OVERFLOW | 4004 | 递归堆栈溢出。 |
ERR_NOT_ENOUGH_STACK_FOR_PARAM | 4005 | 没有足够堆栈储存参数。 |
ERR_NO_MEMORY_FOR_PARAM_STRING | 4006 | 没有足够内存储存字符串参数。 |
ERR_NO_MEMORY_FOR_TEMP_STRING | 4007 | 没有足够内存保存临时字符串。 |
ERR_NOT_INITIALIZED_STRING | 4008 | 没有初始化字符串。 |
ERR_NOT_INITIALIZED_ARRAYSTRING | 4009 | 在数组中没有初始化字符串。 |
ERR_NO_MEMORY_FOR_ARRAYSTRING | 4010 | 没有足够内存保存字符串数组。 |
ERR_TOO_LONG_STRING | 4011 | 字符串过长。 |
ERR_REMAINDER_FROM_ZERO_DIVIDE | 4012 | 余额除零。 |
ERR_ZERO_DIVIDE | 4013 | 除零。 |
ERR_UNKNOWN_COMMAND | 4014 | 不明命令。 |
ERR_WRONG_JUMP | 4015 | 错误跳转(不产生错误)。 |
ERR_NOT_INITIALIZED_ARRAY | 4016 | 没有初始化数组。 |
ERR_DLL_CALLS_NOT_ALLOWED | 4017 | 禁止调用DLL 。 |
ERR_CANNOT_LOAD_LIBRARY | 4018 | 不能加载库。 |
ERR_CANNOT_CALL_FUNCTION | 4019 | 不能调用函数。 |
ERR_EXTERNAL_CALLS_NOT_ALLOWED | 4020 | 禁止调用智能交易函数。 |
ERR_NO_MEMORY_FOR_RETURNED_STR | 4021 | 没有足够内存保存函数返回的字符串。 |
ERR_SYSTEM_BUSY | 4022 | 系统繁忙 (不产生错误)。 |
ERR_INVALID_FUNCTION_PARAMSCNT | 4050 | 非法函数参数个数。 |
ERR_INVALID_FUNCTION_PARAM值 | 4051 | 非法函数参数值。 |
ERR_STRING_FUNCTION_INTERNAL | 4052 | 字符串函数内部出错。 |
ERR_SOME_ARRAY_ERROR | 4053 | 数组错误。 |
ERR_INCORRECT_SERIESARRAY_USING | 4054 | 使用了错误的序列数组。 |
ERR_CUSTOM_INDICATOR_ERROR | 4055 | 自定义指标错误。 |
ERR_INCOMPATIBLE_ARRAYS | 4056 | 数组不兼容。 |
ERR_GLOBAL_VARIABLES_PROCESSING | 4057 | 全局变量处理错误。 |
ERR_GLOBAL_VARIABLE_NOT_FOUND | 4058 | 全局变量未找到。 |
ERR_FUNC_NOT_ALLOWED_IN_TESTING | 4059 | 不许在测试模式使用函数。 |
ERR_FUNCTION_NOT_CONFIRMED | 4060 | 函数不被允许 |
ERR_SEND_MAIL_ERROR | 4061 | 发送邮件错误。 |
ERR_STRING_PARAMETER_EXPECTED | 4062 | 要求字符串参数。 |
ERR_INTEGER_PARAMETER_EXPECTED | 4063 | 要求整数参数。 |
ERR_DOUBLE_PARAMETER_EXPECTED | 4064 | 要求双精度参数。 |
ERR_ARRAY_AS_PARAMETER_EXPECTED | 4065 | 要求用数组作参数。 |
ERR_HISTORY_WILL_UPDATED | 4066 | 正在更新历史数据。 |
ERR_TRADE_ERROR | 4067 | 交易执行出错。 |
ERR_END_OF_FILE | 4099 | 到了文件尾。 |
ERR_SOME_FILE_ERROR | 4100 | 文件错误。 |
ERR_WRONG_FILE_NAME | 4101 | 错误文件名称。 |
ERR_TOO_MANY_OPENED_FILES | 4102 | 打开文件过多。 |
ERR_CANNOT_OPEN_FILE | 4103 | 不能打开文件。 |
ERR_INCOMPATIBLE_FILEACCESS | 4104 | 不兼容文件访问。 |
ERR_NO_ORDER_SELECTED | 4105 | 没有选择定单。 |
ERR_UNKNOWN_SYMBOL | 4106 | 未知货币对。 |
ERR_INVALID_PRICE_PARAM | 4107 | 交易函数的价格参数无效。 |
ERR_INVALID_TICKET | 4108 | 无效定单编号。 |
ERR_TRADE_NOT_ALLOWED | 4109 | 不允许交易。在智能交易中勾选”Allow live trading(允许实时交易)”。 |
ERR_LONGS_NOT_ALLOWED | 4110 | 不允许多头。检查智能交易属性。 |
ERR_SHORTS_NOT_ALLOWED | 4111 | 不允许空头。检查智能交易属性。 |
ERR_OBJECT_ALREADY_EXISTS | 4200 | 对象己经存在。 |
ERR_UNKNOWN_OBJECT_PROPERTY | 4201 | 未知对象属性。 |
ERR_OBJECT_DOES_NOT_EXIST | 4202 | 对象不存在。 |
ERR_UNKNOWN_OBJECT_TYPE | 4203 | 未知对象类型。 |
ERR_NO_OBJECT_NAME | 4204 | 缺少对象名称。 |
ERR_OBJECT_COORDINATES_ERROR | 4205 | 对象坐标错误。 |
ERR_NO_SPECIFIED_SUBWINDOW | 4206 | 没有找到子窗口。 |
ERR_SOME_OBJECT_ERROR | 4207 | 对象函数错误。 |
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容