输入/搜索内容
内置函数
Global
Log
Market
Trade
Account
Futures
Exchange
IO
Network
Storage
_G
DBExec
SetChannelData
GetChannelData
Threads
TA
Talib
OS
结构体
内置变量与常量
通用约定
交易所

持久化保存数据。该函数实现了一个可持久化保存的全局字典功能,数据以键值对(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-v键值对中的键值数据。

参数

名称类型必填描述

k

string / 空值

否

所保存键值对中的键名,区分大小写。

v

string / number / bool / object / array / 空值

否

所保存键值对中的键值,可以是任何能够进行JSON序列化的数据。

参考

备注

每个实盘单独对应一个数据库。策略重启或托管者停止运行后,_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表内。