MQL4预定义标准常量(四)

阅读 :
欢迎访问 外 汇 邦 WWW.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对象函数错误。
欢迎访问 外 汇 邦 WWW.WaiHuiBang.com
本文标题:MQL4预定义标准常量(四) - MT4平台MQL4编程学习
本文地址:http://www.ea666.cn/fxschool/autotrading/mql4/49059.html

相关文章

  • mq4文件和ex4文件的区别

    一、MT4自定义指标保存在C:/Program Files/MetaTrader 4/experts/indicators这个目录中,该目录中主要有二种类型的文件,mq4文件和ex4文件。mq4文件是MT4自定义指标的源码文件,是一种高级语言文件,可以人工编写修改,机器...

    MQL4编程学习
  • MT4指标编程入门(二):MT4指标编写常用符号
    MT4指标编程入门(二):MT4指标编写常用符号

      MT4指标的编程和其他编程一样,需要使用大量的符号,下面我们就来看一下MT4自编指标编程常用符号。   1、注释符:单行注释“//”、多行注释“/**/”   程序不执行注释,注释内容仅供阅读或保留不用的语句...

    MQL4编程学习
  • 外汇EA简介

    EA 即 Expert Advisors 的英文缩写 中文意思专家顾问,俗称智能交易系统,就是由电脑模拟交易员的下单操作进行机器自动交易的过程。 一>、人工操盘过程 下面我们...

    MQL4编程学习
  • 外汇EA自动化交易为何越来越受到外汇投资者的青睐

    现在上网经常可以看到外汇EA交易广告。其中,很多广告都在兜售自动外汇交易系统,即我们常说的EA智能交易软件。相信从事外汇交易的一些人使用过EA交易,当然,也有一部分人正跃跃欲试,有试过一部分的朋友可能知道,其实用EA做交...

    MQL4编程学习
  • 限制EA使用期限的方法和具体的实现代码

    将EA提供给第三方使用时,如果需要加上时间限制,实现起来也非常简单。详见下面的范例,在条件语句的日期里修改到期日即可。return(0)表示返回到开始,不执行后面的代码。这段代码通常放置在iMain()最前面,如果你放置在start()模块中,一旦被解密,其他人就知道修改期限了,修改2012为3012会怎么样?...

    MQL4编程学习
你可能感兴趣