EATC

 找回密码
 立即注册
查看: 522|回复: 0

MQL4预定义标准常量(四)

[复制链接]

192

主题

1118

帖子

1209

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1209
发表于 2022-8-20 11:40:33 | 显示全部楼层 |阅读模式
  • 未初始化原因代码
  • 特殊常量
  • 错误代码

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

收藏本站|法律声明|Archiver|小黑屋|support@ea198.com|EATC ( 桂ICP备2022005787号 )

风险提示与免责声明:擅自从事外汇保证金交易的双方不受法律保护!社区内展示内容,均为网友自发分享,不构成投资建议,社区无法全面监控由第三方上传至社区的资源,因此不保证资源的合法性、安全性、完整性、真实性或品质等。您下载时,同意自行判断并承担所有风险。社区内的资源,仅限用于学习和研究目的,不得将用于商业或者非法用途,否则,一切后果请用户自负。社区信息来自网络,版权争议与社区无关,您下载后须在24个小时之内进行删除。如果您喜欢该内容,请支持正版。如有侵权请邮件与我们联系处理。