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编程学习
本文地址:http://www.waihuibang.com/fxschool/autotrading/mql4/49059.html

相关文章

  • 外汇EA的使用介绍
    外汇EA的使用介绍

    一、文件放置说明&curren; 指标的mq4、ex4文件复制至experts目录的indicators子目录下&curren; EA自动交易的mq4、ex4文件复制至experts目录下&curren; tpl文件为模板文件,复制至templates目录下&curren; DLL文件...

    MQL4编程学习
  • MT4指标详解之:Stochastic Oscillator(随机振荡指标)

    Stochastic Oscillator指标又名KDJ 指标 ,是由 George Lane 首创的,最早用于期货市场。Stochastic Oscillator指标在图表上采用%K和%D两条线,在设计中综合了动量观念、强弱指标与移动平均线的优点,在计算过程中主要研究高低价位与收市价的关系,反映价格走势的强弱和超买超卖现象。...

    MQL4编程学习
  • 外汇EA编程教程――变量

      1 本地变量: 定义在函数内部的变量称为本地变量,它的作用范围只有在定义它的函数内可以访问,在函数外面的代码,不能访问函数里面的变量。例如: int funcname(int a) { int abc; //函数内部的变量,只能由函数里面...

    MQL4编程学习
  • MQL4简介

    MetaQuotes Language 4 (MQL4) 是一种新型的内置型程序用来编写交易策略。 这种语言允许用户创建自己的智能交易,使自己的交易策略能够完全自动地执行,尤其适合用户实现自己的交易策略。除此之外,用户还可以...

    MQL4编程学习
  • 为什么说大部分外汇交易者对趋势型EA都只是“叶公好龙”
    为什么说大部分外汇交易者对趋势型EA都只是“叶公好龙”

    趋势交易是绝大部分投资者都认可的交易方式,并认为是能够有极高盈利比潜力的交易方式。但市面上的趋势交易EA却十分至少,这是为什么呢?一、违反人性交易之中,人性是什么?就是高抛低吸,高空低多。这类型的震荡型交易就是符合...

    MQL4编程学习
你可能感兴趣