输入/搜索内容
内置函数
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
结构体
内置变量

获取生成策略注册码时写入的 Meta 值。

GetMeta()

示例

应用场景示例:使用 Meta 限制策略可操作的资产数量。

javascript
function main() { // 策略允许的计价币最大资产数量 var maxBaseCurrency = null // 获取创建注册码时的元数据 var level = GetMeta() // 检测 Meta 对应的条件 if (level == "level1") { // -1 表示不限制 maxBaseCurrency = -1 } else if (level == "level2") { maxBaseCurrency = 10 } else if (level == "level3") { maxBaseCurrency = 1 } else { maxBaseCurrency = 0.5 } // 鉴于此为测试代码,未采用商品期货策略的通用架构,这里仅通过 exchange.IO("status") 函数判断连接期货公司前置机成功后,立即执行测试代码。股票证券无需使用 exchange.IO("status") 判断连接状态 while(!exchange.IO("status")) { Sleep(1000) } exchange.SetContractType("rb888") while(true) { Sleep(1000) var ticker = exchange.GetTicker() // 检测资产数值 var acc = exchange.GetAccount() if (maxBaseCurrency != -1 && maxBaseCurrency < acc.Balance + acc.FrozenBalance) { // 停止执行策略交易逻辑 LogStatus(_D(), "level:", level, "持仓超过注册码的使用限制,不再执行策略交易逻辑!") continue } // 其他交易逻辑 // 正常输出状态栏信息 LogStatus(_D(), "level:", level, "策略正常运行!ticker 数据:\n", ticker) } }
python
def main(): maxBaseCurrency = null level = GetMeta() if level == "level1": maxBaseCurrency = -1 elif level == "level2": maxBaseCurrency = 10 elif level == "level3": maxBaseCurrency = 1 else: maxBaseCurrency = 0.5 while not exchange.IO("status"): Sleep(1000) exchange.SetContractType("rb888") while True: Sleep(1000) ticker = exchange.GetTicker() acc = exchange.GetAccount() if maxBaseCurrency != -1 and maxBaseCurrency < acc["Balance"] + acc["FrozenBalance"]: LogStatus(_D(), "level:", level, "持仓超过注册码的使用限制,不再执行策略交易逻辑!") continue # 其他交易逻辑 # 正常输出状态栏信息 LogStatus(_D(), "level:", level, "策略正常运行!ticker 数据:\n", ticker)
rust
fn main() { // 策略允许的计价币最大资产数量 let maxBaseCurrency; // 获取创建注册码时的元数据 let meta = GetMeta(); let level = meta.as_str().unwrap_or(""); // 检测 Meta 对应的条件 if level == "level1" { // -1 表示不限制 maxBaseCurrency = -1.0; } else if level == "level2" { maxBaseCurrency = 10.0; } else if level == "level3" { maxBaseCurrency = 1.0; } else { maxBaseCurrency = 0.5; } // 鉴于此为测试代码,未采用商品期货策略的通用架构,这里仅通过 exchange.IO("status") 函数判断连接期货公司前置机成功后,立即执行测试代码。股票证券无需使用 exchange.IO("status") 判断连接状态 while !exchange.IO("status").is_ok_and(|v| v.as_i64() == Some(1)) { Sleep(1000); } exchange.SetContractType("rb888").unwrap(); loop { Sleep(1000); let ticker = exchange.GetTicker(None).unwrap(); // 检测资产数值 let acc = exchange.GetAccount().unwrap(); if maxBaseCurrency != -1.0 && maxBaseCurrency < acc.Balance + acc.FrozenBalance { // 停止执行策略交易逻辑 LogStatus!(_D(None), "level:", level, "持仓超过注册码的使用限制,不再执行策略交易逻辑!"); continue; } // 其他交易逻辑 // 正常输出状态栏信息 LogStatus!(_D(None), "level:", level, "策略正常运行!ticker 数据:\n", ticker); } }

返回值

类型描述

string

Meta数据。

备注

应用场景:需要对不同的策略租用者进行资金限制。生成注册码时设置的Meta值长度不能超过 190 个字符,GetMeta()函数仅支持实盘环境。

如果生成策略注册码时未设置元数据(Meta),则GetMeta()函数返回空值。

该函数在回测系统中不起作用。