创始人Lv14
MT4MT5一些错误返回代码的含义以及解决方法
描述
错误代码在MetaTrader中对于识别和解决平台操作中的问题至关重要。函数GetLastError()用于检索这些代码,这些错误的常量定义在stderror.mqh文件中。错误代码表明系统中出现了错误,了解这些错误可以帮助解决问题。了解这些错误的方法至关重要。
要输出描述性文本消息,可以使用位于stdlib.mqh中的ErrorDescription()函数。
错误可能来源于交易服务器或客户端终端。
作为MT4和MT5顾问编程的专家,我经常收到关于这些错误的问题。
对此,我将解释交易者和专家顾问最常见的错误、其原因以及如何解决它们。
每个专家顾问的操作方式不同,但许多问题源自一组共同的问题。
让我们按照“电子工程错误指南”的风格,探讨典型错误及其解决方案。
这些错误的简明列表可以在错误代码参考中找到,以及在MetaTrader 4/MetaTrader 5终端中。我们将使用这些资源来有效地诊断和解决问题。
如果您的错误未列出或建议的解决方案无效,建议联系您的专家顾问的作者。
然而,在此之前,请务必查看日志文件以获取有关问题的更多详细信息。
常见错误及其解决方法
错误编号 | 简要描述 | 可能原因 | 解决方法 |
---|---|---|---|
图表不匹配错误 | 在DC服务器上的错误:传入的tick在所有时间框架中未被准确处理。 | 1. DC服务器在不同的时间框架中不准确地处理传入的tick。 | 1. 从存档加载后立即测试不会显示错误,因为只加载了分钟数据。当实时报价开始到达时,不匹配会积累。 |
TestGenerator:数据不匹配错误 | 报价存档数据中的错误 | 1. 来自您的经纪商的不完整数据 2. 损坏的报价数据库 3. 使用过时的数据测试EA 4. 来自较旧时间框架的异步数据 | 当数据不匹配未定义或不存在时,会发生错误。 |
错误 Error 0 or 1 | 无错误或错误未知 | 1. 之前未解决的来自持久请求的错误 | 不要在专家顾问中处理错误0和1。 |
错误Error 4, 146 (10022 在MT5中) | 经纪商禁止使用订单过期日期 | 1. 交易服务器忙碌 2. 您设置了错误的挂单过期类型(订单取消时间) | 1. 重新启动终端 优化EA代码,使用更好的错误处理函数 2. StopOrderDayToExpiration: – 0 – ORDER_TIME_GTC 订单将排队直到被移除; – 1 – ORDER_TIME_DAY 订单仅在当前交易日内有效; – X – ORDER_TIME_SPECIFIED 订单将保持有效直到到期日期。 或 StopOrderBarToExpiration |
错误Error 8, 141 (10024 在MT5中) | 请求过于频繁 | 1. EA同时发送过多订单 2. EA在发送新订单前未等待服务器响应,导致服务器过载 | 1. 确保EA在发送额外订单前等待响应。 2. 专家顾问发送了过多请求。请稍等片刻,然后继续使用专家顾问。 |
错误Error 130, 145 (10016 在MT5中) | 指定的止损级别不正确 | 止损级别(止损,止盈)距离当前价格过近 | 1. 与您的经纪商核实最低止损级别的开仓规则 2. 确保止损级别符合您的账户和经纪商的规定 3. 您可以使用我们的函数: SetMinStops – 自动将所有参数的专家顾问规范化为最低可接受的止损级别。 4. 请设置更高的止损参数水平StopLoss,TakeProfit,TrailingStop,订单距离…. |
错误Error 132 (10018 在MT5中) | 市场已关闭 | 市场已关闭,通常在周末 | 尝试在市场重新开放后下单交易。 要在周末交易,您可以尝试我们的TesterPad |
错误Error 133 (10017 在MT5中) | 禁止交易 | 1. 当前交易受到限制 2. 禁止所选货币对的交易 | 1. 等待交易恢复 2. 尝试交易不同的货币对或检查是否需要为您的货币对添加后缀 |
Error 134 (10019 在MT5中) | 资金不足以完成交易 | 1. 您尝试开的手数过大,导致保证金不足 | 1. 检查您的自由保证金 2. 在开仓前计算所需资金以满足所需手数 3. 检查您的交易手数设置(Lot,Autolot,DynamicLot,Martin) |
Error 135–138 (10004, 10006, 10020 在MT5中) | 价格已变动 | 1. 发生了重新报价 2. 市场波动 3. 经纪商不允许在指定价格进行交易 | 1. 避免在市场波动期间交易 2. 增加滑点,但要注意,这可能导致交易在不同价格执行 3. 这是快速市场的标准错误。 |
Error 147 | ERR TRADE EXPIRATION DENIED | EA或用户尝试设置挂单过期日期 | 在EA的OrderSend函数中将过期日期设置为0。 经纪商禁止使用订单过期日期 |
Error 148 (10033 在MT5中) | 已达到最大开仓或挂单数量 | 已达到最大限制的开仓订单或挂单位置 | 检查您的经纪商的开仓订单限制并相应调整您的交易策略。 |
Error 4012, 4013 | 除零错误 零除 | 1. EA在计算中尝试除以零 2. MarketInfo(Symbol(), MODE_SPREAD)可能返回零,适用于具有浮动点差的经纪商 | 检查EA代码以防止除零错误,并确保正确处理MarketInfo的响应。 |
Error 4017 | 不允许调用DLL | 终端或杀毒软件禁止调用DLL | 1. 通过终端设置允许DLL调用 2. 在启用之前,使用杀毒软件确保DLL是安全的 |
Error 4106 | 未知符号 | 该符号未在市场观察中列出 | 在市场观察中启用符号或向您的经纪商请求。 |
Error 4108 (10036 在MT5中) | 无效的票号 | 订单的票号已不存在 订单可能已被手动关闭或由另一个EA关闭 | 避免在EA管理的订单中进行手动干预并禁用冲突的EA。 也许专家顾问正在尝试关闭或修改已被另一个专家顾问关闭的订单。 |
Error 4110, 4111 (10042,10043,10044 在MT5中) | 不允许多头/空头头寸 | EA设置限制了某些交易类型 服务器限制了头寸类型 | 在常规选项卡中调整设置以允许所需的交易类型(多头和空头,仅多头,仅空头仅适用于MT4)。 咨询您的经纪商 |
Error 10030 | TRADE RETCODE INVALID FILL | 订单填充不正确。 | 在专家顾问设置中设置参数 TypeFilling 订单和头寸的填充类型。 它用于MT5终端。 在AUTO模式下,专家顾问尝试自动确定填充类型。 但在某些情况下,您需要自己设置填充类型。 |
交易错误代码
来自交易服务器的错误代码
代码 | 标识符 | 描述 | 解决方法 |
---|---|---|---|
10004 | TRADE_RETCODE_REQUOTE | 重新报价 | 增加滑点水平或避免在高波动期间交易。 滑点 开仓和平仓时价格可能的最大偏差水平(以点计)。 |
10006 | TRADE_RETCODE_REJECT | 请求被拒绝 | 检查交易条件和账户状态,稍后重试请求。 |
10007 | TRADE_RETCODE_CANCEL | 交易者取消请求 | 确保没有手动取消发生或调整EA设置。 |
10008 | TRADE_RETCODE_PLACED | 订单已下达 | 无需采取行动。这是确认消息。 |
10009 | TRADE_RETCODE_DONE | 申请已完成 | 无需采取行动。请求已成功完成。 |
10010 | TRADE_RETCODE_DONE_PARTIAL | 申请部分完成 | 检查剩余订单并在必要时手动完成。 |
10011 | TRADE_RETCODE_ERROR | 请求处理错误 | 查看日志以识别错误,并在纠正后重试请求。 |
10012 | TRADE_RETCODE_TIMEOUT | 请求因超时被取消 | 增加超时时间或在服务器负载较低期间重试。 |
10013 | TRADE_RETCODE_INVALID | 错误请求 | 检查请求参数并使用正确的值重试。 |
10014 | TRADE_RETCODE_INVALID_VOLUME | 请求中的交易量不正确 | 确保交易量在账户允许的范围内。 |
10015 | TRADE_RETCODE_INVALID_PRICE | 请求中的价格错误 | 检查市场价格并使用正确的价格重试。 |
10016 | TRADE_RETCODE_INVALID_STOPS | 请求中的止损错误 | 确保StopLoss和TakeProfit值符合经纪商规则。 SetMinStops 自动将专家顾问的所有参数规范化为最低可接受的止损级别。 |
10017 | TRADE_RETCODE_TRADE_DISABLED | 禁止交易 | 检查账户上的交易条件和经纪商的限制。 |
10018 | TRADE_RETCODE_MARKET_CLOSED | 市场已关闭 | 等待市场重新开放后再下单交易。 要在周末交易,您可以尝试我们的TesterPad |
10019 | TRADE_RETCODE_NO_MONEY | 资金不足以完成请求 | 确保账户中有足够的资金或减少交易规模。 |
10020 | TRADE_RETCODE_PRICE_CHANGED | 价格已变动 | 使用更新后的价格重试请求或增加滑点允许。 |
10021 | TRADE_RETCODE_PRICE_OFF | 没有报价处理请求 | 等待市场提供报价并重试请求。 |
10022 | TRADE_RETCODE_INVALID_EXPIRATION | 请求中的订单过期日期无效 | 设置正确的过期日期或留空以进行即时订单。 StopOrderDay ToExpiration = 订单过期的天数。 |
10023 | TRADE_RETCODE_ORDER_CHANGED | 订单状态已更改 | 更新订单状态并使用正确信息重试请求。 |
10024 | TRADE_RETCODE_TOO_MANY_REQUESTS | 请求过于频繁 | 限制每秒的请求数量以避免服务器过载。 |
10025 | TRADE_RETCODE_NO_CHANGES | 请求中没有更改 | 确保在重新提交请求前有实际更改。 |
10026 | TRADE_RETCODE_SERVER_DISABLES_AT | 咨询您的经纪商 | |
10027 | TRADE_RETCODE_CLIENT_DISABLES_AT | 客户端终端禁止自动交易 | 在终端设置中启用自动交易以继续交易。 |
10028 | TRADE_RETCODE_LOCKED | 指定头寸已存在关闭订单。当在对冲系统中工作时,可能会发生这种情况 请求被阻止以进行处理 | 等待当前关闭订单处理完毕后再提交另一个。 检查是否存在锁定订单或系统限制并解决问题。 |
10029 | TRADE_RETCODE_FROZEN | 订单或头寸被冻结 | 联系您的经纪商以了解头寸被冻结的原因。 |
10030 | TRADE_RETCODE_INVALID_FILL | 不支持的订单执行类型由余额指定 | 确保为您的余额选择了正确的订单执行类型。 TypeFilling 订单和头寸的填充类型。 它用于MT5终端。 在AUTO模式下,专家顾问尝试自动确定填充类型。 但在某些情况下,您需要自己设置填充类型。 |
10031 | TRADE_RETCODE_CONNECTION | 激活挂单的请求被拒绝,订单本身被取消 | 检查与服务器的连接并重试请求。 |
10032 | TRADE_RETCODE_ONLY_REAL | 该操作仅允许在真实账户上进行 | 确保操作在真实账户上进行,而不是在模拟账户上。 |
10033 | TRADE_RETCODE_LIMIT_ORDERS | 已达到挂单数量限制 | 减少挂单数量或联系经纪商进行调整。 |
10034 | TRADE_RETCODE_LIMIT_VOLUME | 该符号的订单和头寸量已达到限制 | 减少交易量或联系经纪商进行调整。 |
10035 | TRADE_RETCODE_INVALID_ORDER | 无效或禁止的订单类型 | 检查经纪商允许的订单类型,并使用有效类型重试。 |
10036 | TRADE_RETCODE_POSITION_CLOSED | 指定的POSITION_IDENTIFIER头寸已关闭 | 无需采取行动。头寸已关闭。 |
10038 | TRADE_RETCODE_INVALID_CLOSE_VOLUME | 关闭量超过当前头寸量 | 确保关闭量不超过当前头寸大小。 |
10039 | TRADE_RETCODE_CLOSE_ORDER_EXIST | 与交易服务器没有连接 | 检查连接并在服务器可访问后重新尝试。 |
10040 | TRADE_RETCODE_LIMIT_POSITIONS | 请求被拒绝,因为符号设置了“您只能关闭现有头寸”的规则。 | 在尝试新头寸前关闭现有头寸。 |
10041 | TRADE_RETCODE_REJECT_CANCEL | 请求被拒绝,因为符号设置了“您只能关闭现有头寸”的规则。 | 调整交易以符合“仅关闭”规则。 |
10042 | TRADE_RETCODE_LONG_ONLY | 请求被拒绝,因为符号设置了“仅允许多头头寸”的规则。 | 此符号仅允许多头头寸;避免提交空头交易。 |
10043 | TRADE_RETCODE_SHORT_ONLY | 请求被拒绝,因为符号设置了“仅允许空头头寸”的规则。 | 此符号仅允许空头头寸;避免提交多头交易。 |
10044 | TRADE_RETCODE_CLOSE_ONLY | 请求被拒绝,因为符号设置了“您只能关闭现有头寸”的规则。 | 遵守“仅关闭”规则,通过关闭头寸而不是开设新头寸。 |
其他错误
错误代码 | 错误编号 | 描述 | 解决方法 |
---|---|---|---|
ERR_SUCCESS | 0 | 操作成功完成 | 无需采取行动。 |
ERR_INTERNAL_ERROR | 4001 | 意外的内部错误 | 检查系统或程序冲突并重新启动终端。 |
ERR_WRONG_INTERNAL_PARAMETER | 4002 | 结构包含无效对象,如字符串、动态数组或不支持的结构 | 检查对象的结构并确保其正确定义。 |
ERR_INVALID_PARAMETER | 4003 | 调用系统函数时参数错误 | 验证函数的参数并确保它们符合所需格式。 |
ERR_NOT_ENOUGH_MEMORY | 4004 | 执行系统函数时内存不足 | 释放系统内存或优化程序以使用更少的内存。 |
ERR_STRUCT_WITHOBJECTS_ORCLASS | 4005 | 重新分配字符串时内存不足 | 检查内存泄漏并优化程序的内存使用。 |
ERR_INVALID_ARRAY | 4006 | 错误类型、大小的数组或损坏的动态数组对象 | 确保数组在使用前正确定义和初始化。 |
ERR_ARRAY_RESIZE_ERROR | 4007 | 请求的数组大小超过2吉字节 | 减少数组大小或更有效地管理内存分配。 |
ERR_STRING_RESIZE_ERROR | 4008 | 请求的历史记录未找到 | 确保所请求的历史记录可用或调整请求参数。 |
ERR_NOTINITIALIZED_STRING | 4009 | 未初始化的字符串 | 在尝试使用字符串进行操作前初始化字符串。 |
ERR_INVALID_DATETIME | 4010 | 日期和/或时间值错误 | 验证请求中的日期和时间格式并重试。 |
ERR_ARRAY_BAD_SIZE | 4011 | 动态和静态资源不匹配 | 确保数组大小兼容且正确定义。 |
ERR_INVALID_POINTER | 4012 | 错误的指针 | 检查指针值并确保其在使用前有效。 |
ERR_INVALID_POINTER_TYPE | 4013 | 错误的指针类型 | 确保指针类型正确并正确转换。 |
ERR_FUNCTION_NOT_ALLOWED | 4014 | 不允许调用系统函数 | 检查系统限制并确认函数可以执行。 |
ERR_RESOURCE_NAME_DUPLICATED | 4015 | 资源名称重复 | 使用唯一的资源名称以避免冲突。 |
ERR_RESOURCE_NOT_FOUND | 4016 | 未找到指定名称的资源 | 确保资源存在于正确的目录或文件中。 |
ERR_RESOURCE_UNSUPPOTED_TYPE | 4017 | 不支持的资源类型或大小超过16MB | 使用支持的资源类型并确保大小在限制内。 |
ERR_RESOURCE_NAME_IS_TOO_LONG | 4018 | 资源名称超过63个字符 | 缩短资源名称以符合字符限制。 |
ERR_MATH_OVERFLOW | 4019 | 数学函数评估时发生溢出 | 检查函数输入并使用较小的值以防止溢出。 |
ERR_CHART_WRONG_ID | 4101 | 错误的图表ID | 验证图表ID并确保其在使用前正确。 |
ERR_CHART_NO_REPLY | 4102 | 图表未响应 | 检查系统或连接问题,并在必要时重新启动终端。 |
ERR_CHART_NOT_FOUND | 4103 | 未找到图表 | 确保图表已打开且可访问后再尝试操作。 |
ERR_CHART_NO_EXPERT | 4104 | 图表上没有可用的专家处理事件 | 将必要的专家顾问(EA)附加到图表以处理事件。 |
ERR_CHART_CANNOT_OPEN | 4105 | 图表打开错误 | 检查系统错误并重试打开图表。 |
ERR_CHART_CANNOT_CHANGE | 4106 | 更改图表上的符号或周期错误 | 确保图表可访问且请求的符号或周期有效。 |
ERR_CHART_WRONG_PARAMETER | 4107 | 图表函数的参数值错误 | 验证传递给图表函数的参数并重试。 |
ERR_CHART_CANNOT_CREATE_TIMER | 4108 | 创建图表计时器错误 | 检查系统设置并确保终端允许创建计时器。 |
ERR_CHART_WRONG_PROPERTY | 4109 | 错误的图表属性ID | 使用正确的属性ID进行图表操作。 |
ERR_CHART_SCREENSHOT_FAILED | 4110 | 截图错误 | 确保终端有足够的权限和存储空间来保存截图。 |
ERR_CHART_NAVIGATE_FAILED | 4111 | 图表导航错误 | 确保图表正确加载并且导航命令有效。 |
ERR_CHART_TEMPLATE_FAILED | 4112 | 应用模板错误 | 确保模板存在并且与图表兼容。 |
ERR_CHART_WINDOW_NOT_FOUND | 4113 | 未找到包含指定指标的子窗口 | 检查指标是否应用于正确的窗口。 |
ERR_CHART_INDICATOR_CANNOT_ADD | 4114 | 向图表添加指标错误 | 确保指标有效并且图表支持。 |
ERR_CHART_INDICATOR_CANNOT_DEL | 4115 | 从图表删除指标错误 | 确保指标已存在于图表中,然后再尝试删除。 |
ERR_CHART_INDICATOR_NOT_FOUND | 4116 | 在指定图表上未找到指标 | 验证图表和指标参数并重试。 |
ERR_OBJECT_ERROR | 4201 | 终端设置限制请求的柱数量 | 在终端设置中增加允许的柱数量。 |
ERR_OBJECT_NOT_FOUND | 4202 | 未找到图形对象 | 确保图形对象存在并正确定义。 |
ERR_OBJECT_WRONG_PROPERTY | 4203 | 错误的图形对象属性标识符 | 使用正确的属性标识符进行图形对象操作。 |
ERR_OBJECT_GETDATE_FAILED | 4204 | 访问历史记录失败 | 检查历史记录访问权限并重试请求。 |
ERR_OBJECT_GETVALUE_FAILED | 4205 | 无法获取对应日期的值 | 验证日期范围并确保历史数据可用。 |
ERR_MARKET_UNKNOWN_SYMBOL | 4301 | 未知符号 | 确保符号存在于市场观察中并拼写正确。 |
ERR_MARKET_NOT_SELECTED | 4302 | 未在市场观察中选择符号 | 在市场观察中选择符号并重试操作。 |
ERR_MARKET_WRONG_PROPERTY | 4303 | 错误的符号属性标识符 | 验证属性标识符并重试操作。 |
ERR_MARKET_LASTTIME_UNKNOWN | 4304 | 最后一个tick的时间未知(没有tick) | 等待tick到达并重试请求。 |
ERR_MARKET_SELECT_ERROR | 4305 | 添加或移除市场观察中的符号错误 | 检查系统错误并重试添加或移除符号。 |
ERR_HISTORY_NOT_FOUND | 4401 | 加载历史记录时发生许多错误 | 检查历史记录数据是否损坏,并在必要时重新加载历史记录。 |
ERR_HISTORY_WRONG_PROPERTY | 4402 | 历史记录属性标识符错误 | 使用正确的属性标识符进行历史记录操作。 |
ERR_HISTORY_TIMEOUT | 4403 | 请求历史记录时超时 | 增加超时限制或在系统负载较低时重试。 |
ERR_GLOBALVARIABLE_NOT_FOUND | 4501 | 客户端终端全局变量未找到 | 确保全局变量存在后再尝试使用。 |
ERR_GLOBALVARIABLE_EXISTS | 4502 | 全局变量已存在 | 使用唯一的全局变量名称以避免冲突。 |
ERR_GLOBALVARIABLE_NOT_MODIFIED | 4503 | 全局变量未进行修改 | 确保在尝试更新前已修改全局变量。 |
ERR_GLOBALVARIABLE_CANNOTREAD | 4504 | 无法读取全局变量值 | 检查文件权限并确保全局变量可访问。 |
ERR_GLOBALVARIABLE_CANNOTWRITE | 4505 | 无法写入全局变量值 | 确保有足够的权限和存储空间来写入文件。 |
ERR_MAIL_SEND_FAILED | 4510 | 发送电子邮件失败 | 检查电子邮件服务器设置并确保电子邮件地址正确。 |
ERR_PLAY_SOUND_FAILED | 4511 | 播放声音失败 | 确保声音文件存在且系统可以访问它。 |
ERR_FTP_SEND_FAILED | 4514 | 未指定FTP服务器 | 确保正确输入FTP服务器详细信息并重试。 |
ERR_NOTIFICATION_SEND_FAILED | 4515 | 发送通知失败 | 验证通知设置并确保其配置正确。 |
ERR_BUFFERS_NO_MEMORY | 4601 | 分配指标缓冲区时内存不足 | 释放内存或优化程序中的缓冲区使用。 |
ERR_ACCOUNT_WRONG_PROPERTY | 4701 | 错误的账户属性ID | 确保使用正确的账户属性ID。 |
ERR_TRADE_DISABLED | 4752 | 禁止专家进行交易 | 在终端中为专家顾问启用交易权限。 |
ERR_TRADE_POSITION_NOT_FOUND | 4753 | 未找到头寸 | 验证头寸详情并确保其存在后再尝试操作。 |
ERR_TRADE_ORDER_NOT_FOUND | 4754 | 未找到订单 | 验证订单ID并确保其存在后再尝试操作。 |
办理VIP会员联系QQ/微信:29996044 另代写MT4/MT5/通达信/同花顺/文华财经/大智慧等各种EA指标脚本
0 已被阅读了129次 楼主 2024-12-14 13:48:04