手机版

MQL4预定义标准常量(四)

阅读 :
外_汇_邦 WaiHuiBang.com

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

为了简化程序编写,使程序文本编辑使用起来更加简便,在MQL4中预定义了标准常量。

标准常量类似于宏代换,并且是int(整数类型)。

这些常量按用途进行分组。

未初始化原因代码

使用UninitializeReason() 函数返回未初始化原因代码。可以是以下任意值:

常数描述
0脚本独立执行完成
REASON_REMOVE1从图表中删除智能交易。
REASON_RECOMPILE2重新编译智能交易。
REASON_CHARTCHANGE3改变了图表货币对和时间周期。
REASON_CHARTCLOSE4关闭图表
REASON_PARAMETERS5用户改变了输入参数
REASON_ACCOUNT6其他账户已激活

特殊常量

特殊常量用于描述参数和变量状态。可以是以下任意值:

常数描述
NULL0表明字符串为空值。
EMPTY-1表明参数为空值。
EMPTY_值0x7FFFFFFF默认自定义指标为空值。
CLR_NONE0xFFFFFFFF表明颜色为空值。
WHOLE_ARRAY0配合数组函数应用,表示数组所有元素将被处理。

错误代码

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_ERROR0没有错误返回。
ERR_NO_RESULT1没有错误返回,但结果不明。
ERR_COMMON_ERROR2一般错误。
ERR_INVALID_TRADE_PARAMETERS3无效交易参数。
ERR_SERVER_BUSY4交易服务器繁忙。
ERR_OLD_VERSION5客户终端版本太旧。
ERR_NO_CONNECTION6没有连接服务器。
ERR_NOT_ENOUGH_RIGHTS7没有权限。
ERR_TOO_FREQUENT_REQUESTS8请求过于频繁。
ERR_MALFUNCTIONAL_TRADE9无效交易。
ERR_ACCOUNT_DISABLED64账户禁用。
ERR_INVALID_ACCOUNT65无效账户
ERR_TRADE_TIMEOUT128交易超时。
ERR_INVALID_PRICE129无效价格。
ERR_INVALID_STOPS130无效平仓。
ERR_INVALID_TRADE_VOLUME131无效交易量。
ERR_MARKET_CLOSED132市场关闭。
ERR_TRADE_DISABLED133交易被禁止。
ERR_NOT_ENOUGH_MONEY134资金不足。
ERR_PRICE_CHANGED135价格已变动。
ERR_OFF_QUOTES136无报价。
ERR_BROKER_BUSY137经纪繁忙。
ERR_REQUOTE138重新报价。
ERR_ORDER_LOCKED139定单被锁定。
ERR_LONG_POSITIONS_ONLY_ALLOWED140只允许多头头寸。
ERR_TOO_MANY_REQUESTS141请求过多。
ERR_TRADE_MODIFY_DENIED145因为订单过于接近市价,修改被拒绝。
ERR_TRADE_CONTEXT_BUSY146交易系统忙。
ERR_TRADE_EXPIRATION_DENIED147交易过期,被经纪商拒绝。
ERR_TRADE_TOO_MANY_ORDERS148开仓和挂单总数已经达到经纪商的限定。
ERR_TRADE_HEDGE_PROHIBITED149当对冲功能被关闭时,尝试开仓一个和现有仓位相反的订单。
ERR_TRADE_PROHIBITED_BY_FIFO150尝试关闭一个违反FIFO规则的订单。

MQL4 运行时错误代码

常数描述
ERR_NO_MQLERROR4000没有错误。
ERR_WRONG_FUNCTION_POINTER4001错误函数指针。
ERR_ARRAY_INDEX_OUT_OF_RANGE4002数组索引(下标)超出范围。
ERR_NO_MEMORY_FOR_CALL_STACK4003没有足够内存开设函数调用堆栈。
ERR_RECURSIVE_STACK_OVERFLOW4004递归堆栈溢出。
ERR_NOT_ENOUGH_STACK_FOR_PARAM4005没有足够堆栈储存参数。
ERR_NO_MEMORY_FOR_PARAM_STRING4006没有足够内存储存字符串参数。
ERR_NO_MEMORY_FOR_TEMP_STRING4007没有足够内存保存临时字符串。
ERR_NOT_INITIALIZED_STRING4008没有初始化字符串。
ERR_NOT_INITIALIZED_ARRAYSTRING4009在数组中没有初始化字符串。
ERR_NO_MEMORY_FOR_ARRAYSTRING4010没有足够内存保存字符串数组。
ERR_TOO_LONG_STRING4011字符串过长。
ERR_REMAINDER_FROM_ZERO_DIVIDE4012余额除零。
ERR_ZERO_DIVIDE4013除零。
ERR_UNKNOWN_COMMAND4014不明命令。
ERR_WRONG_JUMP4015错误跳转(不产生错误)。
ERR_NOT_INITIALIZED_ARRAY4016没有初始化数组。
ERR_DLL_CALLS_NOT_ALLOWED4017禁止调用DLL 。
ERR_CANNOT_LOAD_LIBRARY4018不能加载库。
ERR_CANNOT_CALL_FUNCTION4019不能调用函数。
ERR_EXTERNAL_CALLS_NOT_ALLOWED4020禁止调用智能交易函数。
ERR_NO_MEMORY_FOR_RETURNED_STR4021没有足够内存保存函数返回的字符串。
ERR_SYSTEM_BUSY4022系统繁忙 (不产生错误)。
ERR_INVALID_FUNCTION_PARAMSCNT4050非法函数参数个数。
ERR_INVALID_FUNCTION_PARAM值4051非法函数参数值。
ERR_STRING_FUNCTION_INTERNAL4052字符串函数内部出错。
ERR_SOME_ARRAY_ERROR4053数组错误。
ERR_INCORRECT_SERIESARRAY_USING4054使用了错误的序列数组。
ERR_CUSTOM_INDICATOR_ERROR4055自定义指标错误。
ERR_INCOMPATIBLE_ARRAYS4056数组不兼容。
ERR_GLOBAL_VARIABLES_PROCESSING4057全局变量处理错误。
ERR_GLOBAL_VARIABLE_NOT_FOUND4058全局变量未找到。
ERR_FUNC_NOT_ALLOWED_IN_TESTING4059不许在测试模式使用函数。
ERR_FUNCTION_NOT_CONFIRMED4060函数不被允许
ERR_SEND_MAIL_ERROR4061发送邮件错误。
ERR_STRING_PARAMETER_EXPECTED4062要求字符串参数。
ERR_INTEGER_PARAMETER_EXPECTED4063要求整数参数。
ERR_DOUBLE_PARAMETER_EXPECTED4064要求双精度参数。
ERR_ARRAY_AS_PARAMETER_EXPECTED4065要求用数组作参数。
ERR_HISTORY_WILL_UPDATED4066正在更新历史数据。
ERR_TRADE_ERROR4067交易执行出错。
ERR_END_OF_FILE4099到了文件尾。
ERR_SOME_FILE_ERROR4100文件错误。
ERR_WRONG_FILE_NAME4101错误文件名称。
ERR_TOO_MANY_OPENED_FILES4102打开文件过多。
ERR_CANNOT_OPEN_FILE4103不能打开文件。
ERR_INCOMPATIBLE_FILEACCESS4104不兼容文件访问。
ERR_NO_ORDER_SELECTED4105没有选择定单。
ERR_UNKNOWN_SYMBOL4106未知货币对。
ERR_INVALID_PRICE_PARAM4107交易函数的价格参数无效。
ERR_INVALID_TICKET4108无效定单编号。
ERR_TRADE_NOT_ALLOWED4109不允许交易。在智能交易中勾选”Allow live trading(允许实时交易)”。
ERR_LONGS_NOT_ALLOWED4110不允许多头。检查智能交易属性。
ERR_SHORTS_NOT_ALLOWED4111不允许空头。检查智能交易属性。
ERR_OBJECT_ALREADY_EXISTS4200对象己经存在。
ERR_UNKNOWN_OBJECT_PROPERTY4201未知对象属性。
ERR_OBJECT_DOES_NOT_EXIST4202对象不存在。
ERR_UNKNOWN_OBJECT_TYPE4203未知对象类型。
ERR_NO_OBJECT_NAME4204缺少对象名称。
ERR_OBJECT_COORDINATES_ERROR4205对象坐标错误。
ERR_NO_SPECIFIED_SUBWINDOW4206没有找到子窗口。
ERR_SOME_OBJECT_ERROR4207对象函数错误。
外_汇_邦 WaiHuiBang.com
本文标题:MQL4预定义标准常量(四) - MT4平台MQL4编程学习
本文地址:https://www.waihuibang.com/fxschool/autotrading/mql4/49059.html

相关文章

  • 外汇EA怎么安装到MT4上?外汇EA安装使用教程
    外汇EA怎么安装到MT4上?外汇EA安装使用教程

    可能老交易员会觉得安装MT4是非常简单的事情了,但是对于刚进入外汇市场的新手可能就比较迷茫了点,希望这篇外汇EA怎么安装到MT4上的教程,可以帮到新进入外汇EA市场的外汇人。...

    MQL4编程学习
  • MQL4价格数据相关函数

    用于获取货币对/时段内价格数据的一组函数。如果请求数据(货币对名称/时段不同于当前图表)来自其他图表,这种情况可能是相应的图表没有在客户端内打开,并且需要从服务器端下载数据。这种情况下,错误信息ERR_H...

    MQL4编程学习
  • 手机MT4能添加自编指标吗?
    手机MT4能添加自编指标吗?

      随着手机的普及,手机mt4也越来越进入投资人的生活。甚至到现在手机mt4的使用,相比于mt4更加的偶记。我们知道mt4可以添加自编指标,那么,手机mt4能添加自编指标吗?   手机mt4是不能添加自编指标的,目前手机端MT...

    MQL4编程学习
  • 影响自动交易系统运行速度因素?

      是什么影响了自动交易系统的运行速度?除了系统交易模型本身的效率之外,我们能够在哪些客观环境进行提高?   程序语言以及代码的效率  自动交易系统的实现语言和编译器是影响到系统的速度至关重要的因素,因为不...

    MQL4编程学习
  • 外汇EA的种类

    这几年国内外的外汇EA技术有了极大的发展,各种新型外汇EA不断涌现,我仅对其进行大概的分类,不够完善和严谨之处,敬请原谅。 1、趋势类 最常见也是最成熟的类型,趋势类。最为主流的EA类型,一般根据各种指标和策略来进行出...

    MQL4编程学习
你可能感兴趣