变量

变量声明

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

基本类型如下:

  • 字符型,短整型,整型,长整型,无符号字符型,无符号短整型,无字符整型,无符号长整型-整数;
  • 颜色-代表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()函数从后到前接入数组,不能应用于此。如果想要在时间序列中接入数组,使用动态数组对象

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

用于处理数组的内置方法 #

来自数组函数部分的函数,以及内置方法可以用来处理数组:

方法

Analog

描述

void array.Fill(const scalar value, const int start_pos=0, const int count=-1);

ArrayFill, ArrayInitialize

用指定的值填写数组

void array.Free();

ArrayFree

释放动态数组缓存区并将零维度大小设置为0(零)

int array.Resize(const int range0_size, const int reserve);

int array.Resize(const int range_sizes[], const int reserve);

ArrayResize

在数组第一维度中设置新大小

int array.Print();

ArrayPrint

在日志中显示简单的类型数组值

int array.Size(const int range=-1);

ArraySize, ArrayRange

返回整个数组(范围=1)或指定数组维度中的元素个数

bool array.IsDynamic();

ArrayIsDynamic

检查数组是否为动态

bool array.IsIndicatorBuffer();

 

检查数组是否为指标缓存区

bool array.IsSeries();

ArrayIsSeries

检查数组是否为时间序列

bool array.AsSeries();

ArrayGetAsSeries

检查数组索引方向

bool array.AsSeries(const bool as_series);

ArraySetAsSeries

设置数组中的索引方向

int array.Copy(const src_array[], const int dst_start, const int src_start, const int cnt);

ArrayCopy

将数组值复制到另一个数组

int array.Compare(const src_array[], const int dst_start, const int src_start, const int cnt);

ArrayCompare

返回比较两个简单类型数组或自定义结构的结果

int array.Insert(const src_array[], const int dst_start, const int src_start, const int cnt);

ArrayInsert

从指定索引开始,将来自源数组的指定元素数量插入到接收数组

int array.Remove(const int start_pos, const int count);

ArrayRemove

从指定索引开始移除数组中指定的元素数量

int array.Reverse(const int start_pos, const int count);

ArrayReverse

从指定索引开始反转数组中指定的元素数量

bool array.Swap(array& arr[]);

ArraySwap

与另一个相同类型的动态数组交换内容

void array.Sort(sort_function);

ArraySort

按第一个维度对数值数组进行排序

int array.Search(scalar value, search_function);

ArrayBsearch

返回在数组第一维度中检测到的第一个元素的索引

int array.Find((scalar value, search_function);

 

使用传递的函数在数组中执行搜索并返回第一个检测到的元素的索引

array array.Select(scalar value, search_function);

 

使用传递的函数在数组中执行搜索并返回包含所有检测到的元素的数组

 

接入说明符

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

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

样本

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

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

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

存储类

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

另见

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