TBQ中A_SendOrder变量传递失败
策略从旗舰版移植到TBQ,在旗舰版运行没有问题!策略交易单元叠加 指数和主力 两个数据源。
使用 Data1.A_SendOrder(Enum_Buy, Enum_Entry, 1, 400); 能成功发单
但是写成
lots = 1; Price = 400;
Data1.A_SendOrder(Enum_Buy, Enum_Entry, Lots, Price); 一定发单失败,委托数量为0和价格也不对
感觉是两个参数没有被传递进去。但用FileAppend("c:\\marketpostion3.log",Text(lots)+Text(Price));可以取到这两个数。
如果写成
A_SendOrder(Enum_Buy, Enum_Entry, Lots, Price); 发单后,委托数量为和价格对了,但报错找不到指数合约
请帮忙解答,谢谢 Lots和Price这两个变量是和图层相关的,要写成: data1.lots=1; data1.Price=400 TBQ的多数据源(叠加多个K线)与旗舰版的公式运行机制完全不同,这是一个大坑。
TBQ的导入源码泛型转换完全不考虑这个。 因为TBQ每个数据源都是独立的局部变量,变量没有指定数据源就默认是data0.的,函数入参不显示数据源则仍默认其数据源为父域,这就导致参数跟旗舰版不一样。
把每个局部变量前面都加上data0.应该就可以了。
TBQ泛型转换时就应该这么做。 或者onBar里面所有code都用Range包起来,这样所有函数入参就跟函数外面的变量一样了。 或者参数定义前都加Global
页:
[1]