函数的作用是:返回存储在_LastError预定义变量中的最后一个错误代码。可以使用ResetLastError()函数重置此值。在stderror定义的错误代码常量。文件。公式(由mccaffrey要打印文本消息,请使用stdlib中定义的ErrorDescription()函数。文件。公式(由mccaffrey
为了方便起见,在“交易服务器返回码”部分中额外列出了交易错误。
(找到MT4所在存放盘, MQL4文件, Libraries文件, 找到stdlib.mq4文件,将其中string ErrorDescription(int error_code)原内容替换为以下内容即可)
property library
//+------------------------------------------------------------------+
//| return error description |
//+------------------------------------------------------------------+
string ErrorDescription(int error_code)
{
string error_string;
//---
switch(error_code)
{
//--从服务器返回的错误
case 0: error_string="交易成功 "; break;
case 1: error_string="OrderModify() 未改变原值"; break;
case 2: error_string="常规错误(如需重起客户端等)"; break;
case 3: error_string="无效的交易参数,如货币对,或未知业务,无些单号等"; break;
case 4: error_string="交易服务器繁忙,需稍后重试或休息"; break;
case 5: error_string="MT4版本太旧"; break;
case 6: error_string="没有连接服务器 应该用IsConnected函数)过5秒后重试"; break;
case 7: error_string="没有足够权限进行相应操作"; break;
case 8: error_string="请求过于频繁,查看是否需修改程序"; break;
case 9: error_string="交易运行故障"; break;
case 64: error_string="账户被禁止"; break;
case 65: error_string="本账户无效"; break;
case 128: error_string="交易超时,请查看是否存在未修改或未删除的定单"; break;
case 129: error_string="无效开仓价格,应用RefreshRates函数重试,或修改程序逻辑。"; break;
case 130: error_string="OrderSend()的参数出错:止损或止赢离现价太近而无效"; break;
case 131: error_string="无效的下单手数"; break;
case 132: error_string="市场关闭,等开市后再试"; break;
case 133: error_string="交易被禁止"; break;
case 134: error_string="资金不足"; break;
case 135: error_string="价格已 改变,应用RefreshRates()函数重试 "; break;
case 136: error_string="脱离报价,可能因市价变化太快使交易商暂停报价或市场尚未启动"; break;
case 137: error_string="经纪繁忙"; break;
case 138: error_string="重新开价,可能是请求的报价已过时,或者买价和卖价混淆,请用RefreshRates()函数刷新数据再试 或修改程序"; break;
case 139: error_string="订单被锁定,请修改程序逻辑。"; break;
case 140: error_string="只允许开多仓,禁止开空仓"; break;
case 141: error_string="过多请求,须减少请求次数,程序逻辑需要修改"; break;
case 142: error_string="定单按次序排列。在交易执行期间,碰巧连接断开或重新连接时,此代码和错误代码128一样处理。"; break;
case 143: error_string="定单已经被执行交易商接受。是客户端和交易服务器之间一个代码。处理方法参照错误128。"; break;
case 144: error_string="在手动确认期间,定单已经被客户放弃。是客户端和交易服务器之间一个代码。"; break;
case 145: error_string="因价格过于接近市价,故操作被拒绝 延时15秒后,用RefreshRates更新数据再试"; break;
case 146: error_string="交易线程忙,只有在IsTradeContextBusy()函数返回FALSE后重试。"; break;
case 147: error_string="交易商拒绝使用挂单有效期,"; break;
case 148: error_string="开即时单和挂单总数超限,须平消一些后重试"; break;
case 149: error_string="禁止对冲"; break;
case 150: error_string="先入先出规则被禁止"; break;
//--以下为从mql4中获得的错误
case 4000: error_string="没有错误(未有过代码)"; break;
case 4001: error_string="错误的函数指针"; break;
case 4002: error_string="数组索引超出范围"; break;
case 4003: error_string="对于调用堆栈储存器函数没有足够内存";break;
case 4004: error_string="循环堆栈储存器溢出"; break;
case 4005: error_string="对于堆栈储存器参量没有内存"; break;
case 4006: error_string="对于字符串参量没有足够内存 "; break;
case 4007: error_string="对于字符串没有足够内存 "; break;
case 4008: error_string="没有初始字符串 "; break;
case 4009: error_string="在数组中没有初始字串符 "; break;
case 4010: error_string="对于数组没有内存 "; break;
case 4011: error_string="字符串过长 "; break;
case 4012: error_string="余数划分为零 "; break;
case 4013: error_string="零划分 "; break;
case 4014: error_string="不明命令"; break;
case 4015: error_string="错误转换(没有常规错误) "; break;
case 4016: error_string="没有初始数组 "; break;
case 4017: error_string="禁止调用DLL "; break;
case 4018: error_string="库文件不能被加载"; break;
case 4019: error_string="不能调用函数 "; break;
case 4020: error_string="禁止调用智能交易函数 "; break;
case 4021: error_string="对于来自函数的字符串没有足够内存 "; break;
case 4022: error_string="系统繁忙 (没有常规错误) "; break;
case 4050: error_string="函数的参数数量错误"; break;
case 4051: error_string="函数的参数无效 "; break;
case 4052: error_string="字符串函数内部错误 "; break;
case 4053: error_string="一些数组错误 "; break;
case 4054: error_string="应用不正确数组 "; break;
case 4055: error_string="c自定义指标错误 "; break;
case 4056: error_string="不匹配的数组"; break;
case 4057: error_string="全局变量处理出错 "; break;
case 4058: error_string="找不到全局变量"; break;
case 4059: error_string="函数在测试模式中被禁止使用"; break;
case 4060: error_string="函数没有被确认"; break;
case 4061: error_string="发送邮件错误 "; break;
case 4062: error_string="参数应为字符串变量"; break;
case 4063: error_string="参数应为整型变量"; break;
case 4064: error_string="参数应为浮点类型变量"; break;
case 4065: error_string="参数应为数组"; break;
case 4066: error_string="所查询的历史数据在更新状态当中"; break;
//case 4067: error_string="internal trade error ◆交易函数有错误 ";break;
case 4099: error_string="文件结束 "; break;
case 4100: error_string="一些文件错误 "; break;
case 4101: error_string="错误文件名称 "; break;
case 4102: error_string="打开文件过多 "; break;
case 4103: error_string="不能打开文件 "; break;
case 4104: error_string="不匹配的文件访问 "; break;
case 4105: error_string="未选中定单 "; break;
case 4106: error_string="不明货币对 "; break;
case 4107: error_string="无效价格"; break;
case 4108: error_string="无效定单编码 "; break;
case 4109: error_string="不允许交易"; break;
case 4110: error_string="不允许做多"; break;
case 4111: error_string="不允许做空 "; break;
case 4200: error_string="物件已经存在 "; break;
case 4201: error_string="未知的物件属性 "; break;
case 4202: error_string="物件不存在"; break;
case 4203: error_string="未知的物件类型"; break;
case 4204: error_string="没有物件名称"; break;
case 4205: error_string="物件坐标错误 "; break;
case 4206: error_string="没有指定子窗口"; break;
case 4207: error_string="图形物件错误"; break;
case 4210: error_string="未知的图表属性"; break;
case 4211: error_string="没有发现图表"; break;
case 4212: error_string="没有找到图表子窗口"; break;
case 4213: error_string="没找到主图指标"; break;
case 4220: error_string="符号选择错误"; break;
case 4250: error_string="通知有误"; break;
case 4251: error_string="通知参数有错误"; break;
case 4252: error_string="通知无效"; break;
case 4253: error_string="通知发送太频繁"; break;
case 4260: error_string="没有指定FTP服务器"; break;
case 4261: error_string="没有指定FTP登录"; break;
case 4262: error_string="FTP连接失败"; break;
case 4263: error_string="FTP已关闭连接"; break;
case 4264: error_string="服务器上没有找到FTP路径"; break;
case 4265: error_string="在MQL4文件目录中没有找到要在FTP服务器上发送的文件"; break;
case 4266: error_string="数据传输过程中的常见错误"; break;
case 5001: error_string="打开的文件太多"; break;
case 5002: error_string="文件名是错误的"; break;
case 5003: error_string="文件名太长"; break;
case 5004: error_string="不能打开文件"; break;
case 5005: error_string="文本文件缓冲区分配错误"; break;
case 5006: error_string="无法删除文件"; break;
case 5007: error_string="文件句柄无效(文件关闭或未打开)"; break;
case 5008: error_string="文件句柄错误(句柄索引超出句柄表)"; break;
case 5009: error_string="文件必须使用FILE_WRITE标志打开"; break;
case 5010: error_string="文件必须使用FILE_READ标志打开"; break;
case 5011: error_string="文件必须使用FILE_BIN标记打开"; break;
case 5012: error_string="文件必须使用FILE_TXT标志打开"; break;
case 5013: error_string="文件必须使用FILE_TXT或FILE_CSV标志打开"; break;
case 5014: error_string="文件必须使用FILE_CSV标志打开"; break;
case 5015: error_string="文件读取错误"; break;
case 5016: error_string="文件写入错误"; break;
case 5017: error_string="必须为二进制文件指定字符串大小"; break;
case 5018: error_string="不兼容文件(用于字符串数组- txt,用于其他文件- bin)"; break;
case 5019: error_string="文件是目录而不是文件"; break;
case 5020: error_string="文件不存在"; break;
case 5021: error_string="文件无法重写"; break;
case 5022: error_string="错误的目录名称"; break;
case 5023: error_string="目录不存在"; break;
case 5024: error_string="指定的文件不是目录"; break;
case 5025: error_string="不能删除目录"; break;
case 5026: error_string="不干净的目录"; break;
case 5027: error_string="数组大小错误"; break;
case 5028: error_string="字符串大小错误"; break;
case 5029: error_string="结构包含字符串或动态数组"; break;
case 5200: error_string="无效的URL"; break;
case 5201: error_string="连接到指定URL失败"; break;
case 5202: error_string="超时了"; break;
case 5203: error_string="HTTP请求失败用户错误"; break;
case 65536: error_string="用户自定义的错误从这儿开始"; break;
default: error_string="未知错误";
}
//---
return(error_string);
}
网友评论