有您的持续关注
我们会做得更好

MQL4编程:预定义标准常量(四)



MQL4预定义标准常量(四)

目录[hide]

  • 未初始化原因代码
  • 特殊常量
  • 错误代码

为了简化程序编写,使程序文本编辑使用起来更加简便,在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 对象函数错误。

如您喜欢此文章请点下面分享按钮↴峰汇在线 » MQL4编程:预定义标准常量(四)
上一篇:
下一篇:
分享到:更多 ()