跳至内容

其他常量

其他常量

CLR_NONE 常量用来概述缺乏的颜色的,它表示指标不会划分 图解对象 或者 图解系列 。这个常量不包括 Web-color 常量列表,当颜色参数必需时,可以应用到任何位置。

INVALID_HANDLE 常数能用来检测处理文件 (参见 FileOpen()FileFindFirst() )。

常量描述
CHARTS_MAX在终端与开仓图表类似的最大可能值100
clrNONE颜色缺乏-1
EMPTY_VALUE指标缓冲区的空值DBL_MAX
INVALID_HANDLE错误处理-1
IS_DEBUG_MODEMQL5程序操作的调试方式标志调试方式true,否则是false
IS_PROFILE_MODEmq5-program 运作分析模式的标识分析模式下非零,否则为零
NULL任意类型零值0
WHOLE_ARRAY代表很多条目剩下,直到数组末尾
如下,处理全部数组
-1
WRONG_VALUE常量可以隐藏 计算 传递到任何 枚举 类型数组-1

EMPTY_VALUE常量通常符合指标的值,但并不显示在图表中,例如,内置指标标准偏差是一个周期20,在历史中的前19个字节线并没有显示在图表中,如果使用 iStdDev() 函数增添指标处理器并通过CopyBuffer()复制到指标数组里,然后这些值就与EMPTY_VALUE相等。

可以为 自定义指标 选择指定说明自己指标的空值,当指标在图表中不显示时,使用 PlotIndexSetDouble() 函数 PLOT_EMPTY_VALUE 修饰语。

NULL常数可以分派到任意简单类型的变量中,或者分派到对象结构或者分类指针中。NULL为字符串变量分派表示该变量的全部初始化。

当有必要返回 枚举 值时,WRONG_VALUE常量为事件预定,而且还是一个错误值。例如,当我们需要报告返回值是项目中的值。列举一些函数CheckLineStyle(),通过名称为对象返回线类型、指派。如果通过ObjectGetInteger()类型检测结果是true,返回 ENUM_LINE_STYLE 中的值,否则返回WRONG_VALUE。

void OnStart()
  {
   if(CheckLineStyle("MyChartObject")==WRONG_VALUE)
      printf("Error line style getting.");
  }
//+------------------------------------------------------------------+
//| 为名称指定物件返回线型                                              |
//+------------------------------------------------------------------+
ENUM_LINE_STYLE CheckLineStyle(string name)
  {
   long style;
//---
   if(ObjectGetInteger(0,name,OBJPROP_STYLE,0,style))
      return((ENUM_LINE_STYLE)style);
   else
      return(WRONG_VALUE);
  }

WHOLE_ARRAY常量为函数准备,在过程数组中需要制定元素数量:

如果想要列举,指定位置中的所有数组值从头到尾都是需要处理的,你应该指定WHOLE_ARRAY值。

IS_PROFILE_MODE 常量为了在分析模式下收集正确数据允许改变程序操作。分析允许测量单个程序片段的执行时间(通常由函数组成),以及计算这种调用的数量。在分析模式下,可能会禁止Sleep() 函数调用来确定执行时间,如下例:

//--- Sleep 可以大大影响(改变)分析结果
if(!IS_PROFILE_MODE) Sleep(100); // 在分析模式禁用 Sleep() 调用

IS_PROFILE_MODE 常量值是在编译期通过编译器设置,而在传统模式下设置为零。当在分析模式下启动程序时,会执行一个特殊的编译,并且IS_PROFILE_MODE 以非零的值替代。

当需要以调试方式对MQL5程序操作稍作改动,使用IS_DEBUG_MODE常量。例如,在终端记录或者增加额外图表对象中,调试方式需要额外的调试信息。

下面的例子创建了一个标签对象并在脚本运行方式中建立了自己的描述和颜色。为了运行MetaEditor中的脚本调试方式,按F5。如果能从浏览窗口中运行脚本,颜色和文本对象标签就会不同。

示例:

//+------------------------------------------------------------------+
//|                                             Check_DEBUG_MODE.mq5 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        https://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "https://www.metaquotes.net"
//+------------------------------------------------------------------+
//| 脚本程序启动函数                                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   string label_name="invisible_label";
   if(ObjectFind(0,label_name)<0)
     {
      Print("Object",label_name,"not found. Error code = ",GetLastError());
      //--- 创建标签
      ObjectCreate(0,label_name,OBJ_LABEL,0,0,0);
      //--- 设置 X 坐标
      ObjectSetInteger(0,label_name,OBJPROP_XDISTANCE,200);
      //--- 设置 Y 坐标
      ObjectSetInteger(0,label_name,OBJPROP_YDISTANCE,300);
      ResetLastError();
      if(IS_DEBUG_MODE) // 调试方式
        {
         //--- 显示脚本执行模式信息
         ObjectSetString(0,label_name,OBJPROP_TEXT,"DEBUG MODE");
         //--- 设置文本颜色成红色
         if(!ObjectSetInteger(0,label_name,OBJPROP_COLOR,clrRed))
            Print("Unable to set the color. Error",GetLastError());
        }
      else              // 操作模式
        {
         ObjectSetString(0,label_name,OBJPROP_TEXT,"RELEASE MODE");
         //--- 设置文本颜色为不可见
         if(!ObjectSetInteger(0,label_name,OBJPROP_COLOR,CLR_NONE))
            Print("Unable to set the color. Error ",GetLastError());
        }
      ChartRedraw();
      DebugBreak();    // 如果处于调试模式,则会终止
     }
  }

Crypt 方法

ENUM_CRYPT_METHOD 枚举用于指定数据变换方法,用在CryptEncode()CryptDecode() 函数。

ENUM_CRYPT_METHOD

常量描述
CRYPT_BASE64BASE64
CRYPT_AES128AES 128位密钥加密(16字节)
CRYPT_AES256AES 256位密钥加密(32 字节)
CRYPT_DESDES 56位密钥加密(7字节)
CRYPT_HASH_SHA1SHA1 HASH caculation
CRYPT_HASH_SHA256SHA256 HASH caculation
CRYPT_HASH_MD5MD5 HASH 计算
CRYPT_ARCH_ZIPZIP 归档

另见

DebugBreak, 执行MQL程序属性, CryptEncode(), CryptDecode()