_G
持久化保存数据。该函数实现了一个可持久化保存的全局字典功能,数据以键值对(KV)表的结构永久保存在托管者的本地数据库文件中。
_G()
_G(k)
_G(k, v)示例
设置、修改、删除持久化变量,并读取实盘ID。
javascript
function main(){
// 设置一个全局变量num,值为1
_G("num", 1)
// 更改一个全局变量num,值为字符串ok
_G("num", "ok")
// 删除全局变量num
_G("num", null)
// 返回全局变量num的值
Log(_G("num"))
// 输出:null(num 已被删除)
// 删除所有全局变量
_G(null)
// 返回实盘ID
var robotId = _G()
}
python
def main():
_G("num", 1)
_G("num", "ok")
_G("num", None)
Log(_G("num"))
# 输出:null(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数据库文件中,数据记录在kvdb表内。