# EXTGBDATA 取得单值全局变量
取得单值全局变量。主要用在公式中变量的保存,用户可以在【数据管理】里管理它们。
EXTGBDATA(S)
- 无历史值,图表中不建议使用。
- 作用范围为整个金字塔,任意策略均可操作。
- 全局单值数据可以理解为与品种和市场无关的单值数据.
- 如果S为字符串时,会尝试将其转换为数值,但如果字符串包含0-9以外的字符时,返回零。
参数
参数 | 说明 |
---|---|
S | 必需,数据的字符串名称 |
示例
//读取MY_SUM变量的数值。
EXTGBDATA('MY_SUM');
1
2
2
# EXTGBDATASET 设置单值全局变量
设置单值全局变量。
EXTGBDATASET(S,X)
- 仅在最后一根K线起作用,无法做迭代运算。
- 作用范围为整个金字塔,任意策略均可操作。
- 全局单值数据可以理解为与品种和市场无关的单值数据.
参数
参数 | 说明 |
---|---|
S | 必需,数据的字符串名称 |
X | 必需,数值 |
示例
//将10086保存到单值全局变量MY_SUM中。
EXTGBDATASET('MY_SUM',10086);
1
2
2
# EXTGBSTRING 取得全局字符串变量
取得单值全局字符串变量。
EXTGBSTRING(S)
- 字符串数据。
- 作用范围为整个金字塔,任意策略均可操作。
- 全局单值数据可以理解为与品种和市场无关的单值数据.
- 如果S为自定义数字数据名称,会将该数字转换为字符串输出。
参数
参数 | 说明 |
---|---|
S | 必需,字符串数据的名称 |
示例
//将'600000'代码保存到全局变量MY_STR中。
EXTGBSTRING('MY_STR');
1
2
2
# EXTGBSTRINGSET 设置全局字符串变量
设置单值全局字符串变量数据
EXTGBSTRINGSET(S,X)
- 字符串数据。
- 作用范围为整个金字塔,任意策略均可操作。
- 全局单值数据可以理解为与品种和市场无关的单值数据.
- 如果S为自定义数字数据名称,会将该数字转换为字符串输出。
参数
参数 | 说明 |
---|---|
S | 必需,字符串数据的名称 |
X | 必需,字符串数据 |
示例
//将'600000'代码保存到全局变量MY_STR中。
EXTGBSTRINGSET('MY_STR','600000');
1
2
2
# GETINIFILE 读取INI文件数值
读取INI文件数值。
GETINIFILE(PATH,APP,KEYNAME)
参数
参数 | 说明 |
---|---|
PATH | 必需,INI文件的路径名 |
APP | 必需,节点名 |
KEYNAME | 必需,数据项名称 |
示例
GETINIFILE('C:\TESTNINFILE.INI','SETTING','MYDATA');
1
# GETINIFILEEX 读取含有默认值的INI文件数据
读取INI文件中的指定键值结果,若键值不存在则返回预设的初始值
GETINIFILE(PATH,APP,KEYNAME,BASE)
参数
参数 | 说明 |
---|---|
PATH | 必需,INI文件的路径名 |
APP | 必需,节点名 |
KEYNAME | 必需,数据项名称 |
BASE | 必需,为读取指定键值的默认值 |
示例
//表示在C:\TESTNINFILE.INI文件中读取SETTING节点的,项名称为MYDATA的数据,若键值不存在则返回无效值
GETINIFILE('C:\TESTNINFILE.INI','SETTING','MYDATA',DRAWNULL);
1
2
2
# GETINIFILESTRING 读取INI文件字符串
读取INI文件字符串。
GETINIFILESTRING(PATH,APP,KEYNAME)
参数
参数 | 说明 |
---|---|
PATH | 必需,INI文件的路径名 |
APP | 必需,节点名 |
KEYNAME | 必需,数据项名称 |
示例
//表示在C:\TESTNINFILE.INI文件中读取SETTING节点的,项名称为MYDATA的字符串数据.
GETINIFILESTRING('C:\TESTNINFILE.INI','SETTING','MYDATA');
1
2
2
# GETREGVAL 读注册表里的指定值
读注册表指定键值。
GETREGVAL(KEY,NAME,DEFVAL)
参数
参数 | 说明 |
---|---|
KEY | 必需,注册表KEY键,若找不到该键值,返回默认的DEFVAL |
NAME | 必需,名称 |
DEFVAL | 必需,默认值 |
示例
variable:sss:=0;
//只在一个周期开始调用该函数赋值全局变量
if barpos = 1 then
sss:=GETREGVAL('Setting','temp',0);
fff:sss;
1
2
3
4
5
2
3
4
5
# GLOBALVARIABLE 申明超全局变量
申明并初始化超全局变量。
GLOBALVARIABLE
- 仅刷新最新一根K线的数据,无法进行迭代运算,不支持数组。
- 使用方法与VARIABLE普通全局变量相同,
- 超全局变量一般会在客户停止后台程式化交易或者关闭框架图表后销毁重置。
- 周期类型和品种代码为超全局变量特殊数值,使用该数值做条件时结果可能不可控。
- 在IF..THEN控制语句中使用字符串类型超全局变量可能会导致结果不可控。
- 仅作用于当前的单个策略.
# SETREGVAL 设置注册表里指定值
设置注册表指定键值。
- 该函数与EXTGBDATASET一样均为设置保存全局变量功能.
- 主要区别是SETREGVAL是保存在注册表中,不会因软件的突然关闭而丢失保存的数据.
- 此外SETREGVAL只能保存整型变量值,而EXTGBDATASET是可以保存浮点的。
- 保存全局变量值一般用在后台程序化或者一起其他自定义场合,由于保存在注册里的数据均为单值,故在逐K线模式调用时实际上会不断重复调用,没有效率。
SETREGVAL(KEY,NAME,DATA)
参数
参数 | 说明 |
---|---|
KEY | 必需,KEY键。 |
NAME | 必需,键名 |
DATA | 必需,键值 |
示例
在逐K线模式下提高效率的示例如下:
//控制只在最后一个周期保存数据
if islastbar then
SETREGVAL('Setting','temp',333);
1
2
3
2
3
# VARIABLE 申明全局变量
申明并初始化变量;variable 为全局变量申明语句,一般用在逐K线计算模式下声明一个全局变量或者在序列模式和逐K线模式下声明一个内部数组。 序列模式下variable申明的序列变量会被强制转换为常数,故与普通的常数变量是没有区别的,因此序列模式下的序列变量不要使用variable进行申明。
VARIABLE:VARNAME1:=INITVALUE1,VARNAME2:=INITVALUE2...
示例
//表示定义常数变量X并初始化为1,
//申明序列变量Y并初始化为收盘价,
//申明含10个浮点数的数组并全部初始化为0
//申明含5个字符串的数组并都初始化为'STR'
VARIABLE:X:=1,Y:=CLOSE,ARR[10]:=0,SARR[5]:='STR';
//申明一个数组,初始值分别为1,2,3。
VARIABLE:X[3]:=(1,2,3);
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# WRITEINIFILE 写INI文件数值
写INI文件数值
WRITEINIFILE(PATH,APP,KEYNAME,DATA)
- 该函数在逐K线模式下仅对最后一个周期有效,若要在此模式下对所有K线下有效,请在公式属性中设置超全局变量作用于整个周期选项.
参数
参数 | 说明 |
---|---|
PATH | 必需,INI文件的路径名 |
APP | 必需,为节点名 |
KEYNAME | 必需,KEYNAME为数据项名称 |
DATA | 必需,写文件的数值 |
示例
//表示在C:\TESTNINFILE.INI文件中写SETTING节点的,项名称为MYDATA的收盘价数据.
WRITEINIFILE('C:\TESTNINFILE.INI','SETTING','MYDATA',CLOSE);
1
2
2
# WRITEINIFILESTRING 写INI文件字符串
写INI文件字符串.
WRITEINIFILESTRING(PATH,APP,KEYNAME,DATA)
- 该函数在逐K线模式下仅对最后一个周期有效,若要在此模式下对所有K线下有效,请在公式属性中设置超全局变量作用于整个周期选项.
参数
参数 | 说明 |
---|---|
PATH | 必需,INI文件的路径名 |
APP | 必需,为节点名 |
KEYNAME | 必需,KEYNAME为数据项名称 |
DATA | 必需,写文件的字符串 |
示例
//表示在C:\TESTNINFILE.INI文件中写SETTING节点的,项名称为MYDATA的ABCDEFG字符串数据.
WRITEINIFILESTRING('C:\TESTNINFILE.INI','SETTING','MYDATA','ABCDEFG');
1
2
2
# 全局变量作用范围
变量标识 | 名称类型 | 作用范围 | 解析 |
---|---|---|---|
无 | 普通变量 | 单根K线 | 只在当根K线生效,当指标换到下一根K线进行计算时就会被再次初始化。 |
VARIABLE | 全局变量 | 首根K至最后一根k线 | 指标加载后,定义语句在第一根K线处初始化为设定值,后面的K线调用此全局变量计算时,调用到的值是上一根K线计算的返回值。当行情更新,指标重新刷新时,那么此变量又会在第一根K线处被定义语句初始化。 |
GLOBALVARIABLE | 超全局变量 | 指标加载至停止运行期间 | 指标加载时对全局变量定义的语句进行一次初始化,之后定义语句都不会再对其初行初始化直至停止运行指标。 |
EXTGBDATA | 单值全局变量 | 整个金字塔软件范围内 | 设置了初始值之后,只要是在金字塔软件范围内,任意的指标、手工或者其他方式都可软修改它的值,并且在整个软件范围内共享这个值。因此,它不存在绝对意义的初始化。 |
SETREGVAL | 注册表全局变量 | 整个计算机范围内 | 将变量存储机注册表中,因此在整都计算机内都可以调用这个值。 |
WRITEINIFILE | 写配置文件 | 整个计算机范围内 | 将变量存储在本地配置文件内,因此在整都计算机内都可以该配置文件调用这个值。 |