GetMeta
获取生成策略注册码时写入的 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值长度不能超过 190 个字符,GetMeta()函数仅支持实盘环境。
如果生成策略注册码时未设置元数据(Meta),则GetMeta()函数返回空值。
该函数在回测系统中不起作用。