下载MetaTrader 5

变量

变量声明

可变量必须在声明之前使用。 可变量必须拥有特殊的辨认名。相关可变量的定义描述会显示。

基本类型如下:

  • 字符型,短整型,整型,长整型,无符号字符型,无符号短整型,无字符整型,无符号长整型-整数;
  • 颜色-代表RGB-颜色的整数;
  • 日期时间-日期和时间,自1970年1月1日起无符号整数包括秒数;
  • 布尔数据-布尔值的truefalse
  • 双精度数字-带有浮点的双精度数字;
  • 浮点型-带有浮点的单精度数字;
  • 字串符数据-特殊字符串。

示例:

string szInfoBox;
int    nOrders;
double dSymbolPrice;
bool   bLog;
datetime tBegin_Data   = D'2004.01.01 00:00';
color    cModify_Color = C'0x44,0xB9,0xE6';

复合类型:

用其他类型构成的数据类型结构。

struct MyTime
  {
   int hour;    // 0-23
   int minute;  // 0-59
   int second;  // 0-59
  };
...
MyTime strTime; // 预先声明的结构MyTime MyTime的变量

结构类型声明前不可结构类型变量声明。

数组

相同数列数据被标注序列:

int    a[50];       // 50个整数的一维数组
double m[7][50];    // 7个数组的二维数组,
                    // 每个都由50个数字组成。
MyTime t[100];      // 数组包含元素例如 MyTime

唯一整数可以是数组指数。 不允许四唯数列。数组元素开始编号为0 。 一个一维列阵的最后元素是1的数字比列阵大小。这就意味着, 请求数列的最后元素包括50 个整数将出现作为a[49 ] 。 维度被标注从0 到维度大小-1. 一个二维数组的最后元素从示例将出现作为m[6][49 ] 。

静态数组不能代表时间序列,例如ArraySetAsSeries()函数从后到前接入数组,不能应用于此。如果想要在时间序列中接入数组,使用动态数组对象

如果访问超出数列范围,执行的子系统将生成严重错误,程序就会停止。

接入说明符

接入说明符表示编译器如何接入变量,结构会员或者类。

常量 说明符声明常数变量,运行期不允许改变这个变量。变量声明时允许独自初始化。

样本

int OnCalculate (const int rates_total,      // 价格[] 数组的大小
                 const int prev_calculated,  // 前一次调用处理的柱
                 const int begin,            // 有效数据起始位置
                 const double& price[]       // 数组计算
   );

若要接入结构会员和类使用以下限定符:

  • 公用限定符 -允许自由接入变量或者类函数
  • 受保护限定符 -允许从这个类函数或者公共继承类函数中接入。不允许其他接入;
  • 私人限定符-允许仅从同类函数中接入变量和类函数。
  • 虚拟限定符 -仅应用于类函数(不是结构函数)并且告诉编译器这个函数置于类虚拟函数表格中。

存储类

有三种存储类:静态输入外部。存储类的这些调节器明确表明内存预分配区分配的相关变量的编译器,称为全局池。此外,这些调节器表示特别处理变量数据。如果局部声明的变量不是静态,这个变量内存自动分配程序堆。非静态数组分配的自由内存也是在超出声明数组可见区时自动完成。

另见

数据类型类型密封和扩展变量初始化可见范围和变量使用期创建和删除对象, Static Members of a Class


更新: 2016.03.25