持久化保存数据,该函数实现了一个可保存的全局字典功能。数据结构为KV表,永久保存在托管者本地数据库文件。
持久化保存的k-v
键值对中的键值数据。
string、number、bool、object、array、空值
_G() _G(k) _G(k, v)
参数k
为保存的键值对中的键名,不区分大小写。
k
false
string、空值
参数v
为保存的键值对中的键值,可以是任何可以JSON
序列化的数据。
v
false
string、number、bool、object、array、空值
// 不使用接口获取数据的测试,就无需使用exchange.IO("status")函数判断连接状态,也不用设置合约代码,因为这里仅仅是测试
function main(){
// 设置一个全局变量num,值为1
_G("num", 1)
// 更改一个全局变量num,值为字符串ok
_G("num", "ok")
// 删除全局变量num
_G("num", null)
// 返回全局变量num的值
Log(_G("num"))
// 删除所有全局变量
_G(null)
// 返回实盘ID
var robotId = _G()
}
def main():
_G("num", 1)
_G("num", "ok")
_G("num", None)
Log(_G("num"))
_G(None)
robotId = _G()
void main() {
_G("num", 1);
_G("num", "ok");
_G("num", NULL);
Log(_G("num"));
_G(NULL);
// 不支持 auto robotId = _G();
}
每个实盘单独一个数据库,策略重启或者托管者停止运行,_G()
函数保存的数据会一直存在。 如果是回测结束后,_G()
函数在回测系统中保存的数据会被清除。 使用_G()
函数持久化保存数据时,应当根据硬件设备的内存、硬盘空间合理使用,不可滥用。
在实盘运行中当调用_G()
函数并且不传任何参数时,_G()
函数返回当前实盘的Id
。 调用_G()
函数时,参数v
传入空值表示删除该k-v
键值对。 调用_G()
函数时,仅参数k
传入字符串,_G()
函数返回保存的参数k
对应的键值。 调用_G()
函数时,仅参数k
传入空值,表示删除所有记录的k-v
键值对。 当k-v
键值对已经持久化保存,再次调用_G()
函数,传入已经持久化保存的键名作为参数k
, 传入新的键值作为参数v
,会更新该k-v
键值对。
{@fun/Global/DBExec DBExec}
__Serve _D