最近因为世界局势动荡导致大宗商品交易市场的波动剧烈,交易所采取了很多防止混乱的措施,其中包括提高了很多品种的最小开仓手数。
注意,这个最小开仓手数并不是期货合约里的最小交易手数,这是两个概念。交易所并没有修改合约属性里的最小交易手数,只是临时修改了开仓最小手数,所以量化接口里没有这些变动数据提供,导致模型无法自动处理这些情况。
为了快速解决这个问题,开拓者临时提供了新的最小开仓手数基础数据

在数据中心可以查询到,截止到2026年3月25日,已经有18个品种相继提高了最小开仓手数。
根据TB维护的该数据我们可以从模型里自动获取每个品种对应的相关数据,达到自行判断调整交易量的目的。
方法如下。
首先,到数据中心,搜索相关键名
TB_VolumeRate_Futures

找到以后记得同步下载一下数据。如果你不知道点哪个,那就把上面的同步刷新都点一遍。
如果正确,右边会显示目前有最小开仓手数限制的合约列表。如果只查看品种,应该有18个
然后,在模型里用以下代码提取基础数据
Vars
array<string> lots;
Events
OnBar(ArrayRef<Integer> indexs)
{
//从当天date+time往前查最近的手数更改数据
//GetDicValue("TB_VolumeRate_Futures",RelativeSymbol,date+time,lots);//如果是用888,那用这条语句提取数据
GetDicValue("TB_VolumeRate_Futures",Symbol,date+time,lots);//如果是用具体合约,那用这条提取数据
If(lots[0]=="") print("没查到");//异常处理,如果没查到,控制台输出提醒,注意修复
else print(lots[0]);//lots[0]就是查到的最小开仓手数
}注意,如果有新的品种修改了最小开仓手数,需要用户手动同步以下,才能获取最新数据。所以如果收到自己正在交易的品种修改了最小开仓手数的通知,一定记得到数据中心里同步刷新以下,保证右边列表里看到了该品种,然后模型里的代码才能正常提取。
先写这么多,如果有问题请在帖子里反馈。