沪铝的minmove为什么显示1呢?
我新建了一个公式,把帮助文档中的代码直接复制粘贴,在沪铝2505中运行了一下,结果控制台显示为1,不应该显示为5吗?
制台显示为1,最小变动量应该是5才对呀?
Events
OnReady(){
String tmpCategory = IIFString(Category == Enum_CategoryFutures, "期货", IIFString(Category == Enum_CategoryOptions, "期权", "其他"));
Print("大类:" + tmpCategory);
Print("品种:" + SymbolType);
Print("商品代码:" + Symbol);
String tmpOption = IIFString(OptionStyle == Enum_EuropeanOption, "欧式", IIFString(OptionStyle == Enum_AmericanOption, "美式", "无行权"));
Print("行权:" + tmpOption);
Print("MinMove:" + Text(MinMove()));
}
用这个诊断代码,跑一下试试,看一下输出结果是啥?
跑出来是螺纹的😨
我明白了。
我是从策略单元里面添加的商品,data0是螺纹,data1是沪铝。
为了方便我把图表调成了只显示沪铝,但实际上data0依然是螺纹,所以公式是在data0的螺纹上跑的,所以minmove是1。
这代码好用,我偷走了😀
不过实话说,TB的数据中心里面有个小Bug,但是这个Bug就像【隐性基因】一样,一般情况下不会显性出来发病。这个Bug就是【沪铝】这个品种的合约属性的模板有2份,分别出现在了【期货合约属性】和【期权合约属性】里面,本来有2个地方出现,也算大问题,问题就出在了2份【合约属性】属性值不一样,其中很巧的是【MinMove】在【期权模板】中的值恰好是1,而不是5。
TB的数据团队在创建【合约模板】【T_al.SHFE】时,一是重复在【期权合约模板】里面创建了【期货合约模板】,二是【沪铝合约模板】的【MinMove】盘口报价比较特殊,创建的时候可能是因为从普通品种的【模板数据】复制来的为1。
牛,太细节了。
最小变动是minmove*pricescale
//------------------------------------------------------------------------
// 简称: demo_minmove
// 名称:
// 类别: 公式应用
// 类型: 用户应用
// 输出: Void
//------------------------------------------------------------------------
Params
//此处添加参数
Vars
//此处添加变量
Defs
//此处添加公式函数
Events
//此处实现事件函数
//初始化事件函数,策略运行期间,首先运行且只有一次
OnInit()
{
}
OnReady()
{
print("--------分隔1--------");
Print("MinMove:" + Text(MinMove()));
print("--------分隔2--------");
Print("PriceScale:" + Text(PriceScale()));
print("--------分隔3--------");
Print("相乘:" + Text(PriceScale*MinMove));
}
//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
OnBar(ArrayRef<Integer> indexs)
{
}
还是不对呀
已经搞明白了,谢谢。
???为什么我print一下是5?
我也很迷惑,应该是5才对。