输入/搜索内容
内置函数
Global
Version
Sleep
IsVirtual
Mail
Mail_Go
SetErrorFilter
GetPid
GetLastError
GetCommand
GetMeta
Dial
HttpQuery
HttpQuery_Go
Encode
UnixNano
Unix
GetOS
MD5
DBExec
UUID
EventLoop
_G
_D
_N
_C
_Cross
JSON.parse
JSON.stringify
SetChannelData
GetChannelData
Log
Market
Trade
Account
Futures
Threads
TA
Talib
OS
结构体
内置变量

该函数用于持久化保存数据,实现了一个可保存的全局字典功能。数据以键值对(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-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数据库文件中(123456.db3),数据记录在kvdb表中。