数据类型

来自tradeStar帮助系统
(版本间的差异)
跳转到: 导航, 搜索
(以“=公式简述= 公式系统的作用是什么呢?公式系统其实就是对一系列随时间变化的原始数据序列进行代数和逻辑计算。为什么...”为内容创建页面)
 
 
(未显示2个用户的4个中间版本)
第1行: 第1行:
=公式简述=
+
从数据性质上看,公式只使用两种类型,一种是数值型,另一种是字符串类型。
  
公式系统的作用是什么呢?公式系统其实就是对一系列随时间变化的原始数据序列进行代数和逻辑计算。为什么是数据序列呢?因为每一个时间周期都包含了一个或一组原始数据,如开高低收量额,公式系统能对其中的任何原始数据进行操作。使用者定义出如何对原始数据进行处理得到一个新的数据,公式系统读出原始数据并按要求计算出使用者定制的数据,并以曲线、图形、指示等形式显示出来。
+
数值类型包括整数,浮点数(小数),逻辑真和假;字符串类型使用单引号表示。
  
例如下面的例子:
+
从数据组织上看,上述两种类型分别可以是单值,序列,数组或引用。
指标1:(High+Low)/2;
+
  
上面的例子,逻辑是把每个周期的最高值和最低值的平均值输出成指标1:
+
*单值
  
[[Image:Fml_basic_helloworld.png]]
+
单值是相对序列而言的,如果变量var1是单值,在本K线对var1修改,则前一根K线运算所赋给var1的值将会被覆盖,
  
=数据类型=
+
若var1是序列,那么,前一根K线运算所赋给var1的值可以通过var1[1]来获得,也可以修改。
*数值单值类型
+
 
*数值序列类型
+
*序列
*数值数组类型
+
 
*字符串单值类型
+
序列是对应K线图上的K线根数而言的,100根K线时,序列变量var1就有100个值,每个值对应1根K线,
*字符串序列类型
+
 
*字符串数组类型
+
分别是 var1[0], var1[1] ... var1[99]。序列会随着K线的增加而自动增长,开销要比单值大,
 +
 
 +
所以如果不需要引用非当前根K线的值时,使用单值变量就足够了。
 +
 
 +
其中[0]代表最近的一根K线。
 +
 
 +
但要注意一点,在智能策略,Run_By_Bar 并且 Run_Every_Bar模式下,最新的一根K线总是不计算的,每次都计算的是倒数第二根K线,所以,此时
 +
[0]是代表倒数第二根K线而不是最后一根。而最早的一根K线也不是[datacount-1],而是[datacount-2]
 +
 
 +
 
 +
 
 +
*数组
 +
 
 +
数组可以看作是固定长度的序列,有固定的大小,由用户在声明时设定。
 +
 
 +
数组不会随着K线增长而增长,跟K线没有一一对应的关系。下面的例子定义了两个数组
 +
 
 +
  variable:
 +
    NumericArray aa[100](0),
 +
    NumericArray bb[20, 20](0);
 +
 
 +
aa大小为100, bb大小为400。数组的读写使用下标来进行:
 +
 
 +
一维数组aa的有效下标:aa[1], aa[2], aa[3] .... aa[100]
 +
 
 +
二维数组bb的有效下标:bb[x,y]; x=1,2...20; y=1,2....20;
 +
 
 +
 
 +
*引用
 +
 
 +
引用类型使用于函数的参数传递,一般参数传递是数据拷贝的传递。
 +
 
 +
例如把变量cc传给当函数时,只是传递cc的值,函数内部对它的修改并不会影响cc;
 +
 
 +
但当函数参数类型是引用时,是把变量cc的地址传递给函数,函数内部对它修改就是对cc的修改
 +
 
 +
要了解更多参数调用,请查看[[参数和变量]],[[公共函数]]。
 +
 
 +
综上所述,数据类型主要有以下8种:
 +
 
 +
void
 +
{| class="wikitable"
 +
|-
 +
!  !! 单值 !! 序列 !! 数组 !! 引用
 +
|-
 +
| 数值 || NumericSimple || NumericSeries || NumericArray || NumericRef
 +
|-
 +
| 字符串 || StringSimple || StringSeries || StringArray || StringRef
 +
|}
 +
 
 +
下面是一些特殊的常量值:
 +
* Invalid
 +
数值无效值,所有于它的比较都返回假 Invalid != Invalid 返回真。
 +
指标输出左右两端的Invalid数值都不会输出到图上,直到遇上第一个有效值为止。
 +
* Null
 +
字符串空串
 +
* True
 +
真,值为1
 +
* False
 +
假,值为0
 +
* Default
 +
用于函数调用,若函数的参数设定了默认值,函数调用时填default表示使用函数设定的默认值
 +
 
 +
公式的数据类型属于弱类型。
 +
 
 +
字符串转义字符 \, @

2013年8月20日 (二) 14:56的最后版本

从数据性质上看,公式只使用两种类型,一种是数值型,另一种是字符串类型。

数值类型包括整数,浮点数(小数),逻辑真和假;字符串类型使用单引号表示。

从数据组织上看,上述两种类型分别可以是单值,序列,数组或引用。

  • 单值

单值是相对序列而言的,如果变量var1是单值,在本K线对var1修改,则前一根K线运算所赋给var1的值将会被覆盖,

若var1是序列,那么,前一根K线运算所赋给var1的值可以通过var1[1]来获得,也可以修改。

  • 序列

序列是对应K线图上的K线根数而言的,100根K线时,序列变量var1就有100个值,每个值对应1根K线,

分别是 var1[0], var1[1] ... var1[99]。序列会随着K线的增加而自动增长,开销要比单值大,

所以如果不需要引用非当前根K线的值时,使用单值变量就足够了。

其中[0]代表最近的一根K线。

但要注意一点,在智能策略,Run_By_Bar 并且 Run_Every_Bar模式下,最新的一根K线总是不计算的,每次都计算的是倒数第二根K线,所以,此时 [0]是代表倒数第二根K线而不是最后一根。而最早的一根K线也不是[datacount-1],而是[datacount-2]


  • 数组

数组可以看作是固定长度的序列,有固定的大小,由用户在声明时设定。

数组不会随着K线增长而增长,跟K线没有一一对应的关系。下面的例子定义了两个数组

 variable:
   NumericArray aa[100](0),
   NumericArray bb[20, 20](0);

aa大小为100, bb大小为400。数组的读写使用下标来进行:

一维数组aa的有效下标:aa[1], aa[2], aa[3] .... aa[100]

二维数组bb的有效下标:bb[x,y]; x=1,2...20; y=1,2....20;


  • 引用

引用类型使用于函数的参数传递,一般参数传递是数据拷贝的传递。

例如把变量cc传给当函数时,只是传递cc的值,函数内部对它的修改并不会影响cc;

但当函数参数类型是引用时,是把变量cc的地址传递给函数,函数内部对它修改就是对cc的修改

要了解更多参数调用,请查看参数和变量公共函数

综上所述,数据类型主要有以下8种:

void

单值 序列 数组 引用
数值 NumericSimple NumericSeries NumericArray NumericRef
字符串 StringSimple StringSeries StringArray StringRef

下面是一些特殊的常量值:

  • Invalid

数值无效值,所有于它的比较都返回假 Invalid != Invalid 返回真。 指标输出左右两端的Invalid数值都不会输出到图上,直到遇上第一个有效值为止。

  • Null

字符串空串

  • True

真,值为1

  • False

假,值为0

  • Default

用于函数调用,若函数的参数设定了默认值,函数调用时填default表示使用函数设定的默认值

公式的数据类型属于弱类型。

字符串转义字符 \, @

个人工具
名字空间

变换
操作
导航
工具箱