_G
该函数用于持久化保存数据,实现了一个可保存的全局字典功能。数据以键值对(KV)表的结构存储,并永久保存在托管者的本地数据库文件中。
_G()
_G(k)
_G(k, v)示例
保存、修改、删除持久化数据。
javascript
// 不使用接口获取数据的测试,就无需使用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()
}
python
def main():
_G("num", 1)
_G("num", "ok")
_G("num", None)
Log(_G("num"))
_G(None)
robotId = _G()
rust
fn main() {
// 设置一个全局变量num,值为1
_G!("num", 1);
// 更改一个全局变量num,值为字符串ok
_G!("num", "ok");
// 删除全局变量num
_G!("num", null);
// 返回全局变量num的值
Log!(_G!("num"));
// Rust 不支持 _G!(null) 删除所有全局变量的形式
// 返回实盘ID
let robotId = _G!();
}返回值
| 类型 | 描述 |
string / number / bool / object / array / 空值 | 持久化保存的 |
参数
| 名称 | 类型 | 必填 | 描述 |
k | string / 空值 | 否 | 键值对中的键名,不区分大小写。 |
v | string / number / bool / object / array / 空值 | 否 | 键值对中的键值,可以是任何能够进行 |
参考
备注
每个实盘单独使用一个数据库。策略重启或托管者停止运行后,_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键值对。
以实盘Id为123456为例,使用_G()函数持久化保存的K-V键值数据存储在实盘(即策略实例程序)所属托管者目录下的/logs/storage/123456/123456.db3数据库文件中(123456.db3),数据记录在kvdb表中。