ab200233 发表于 2020-12-4 11:42:22

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); 发单后,委托数量为和价格对了,但报错找不到指数合约

请帮忙解答,谢谢

tblaocai 发表于 2020-12-4 19:31:20

Lots和Price这两个变量是和图层相关的,要写成:  data1.lots=1;   data1.Price=400

lmxy202 发表于 2020-12-5 16:13:23

TBQ的多数据源(叠加多个K线)与旗舰版的公式运行机制完全不同,这是一个大坑。
TBQ的导入源码泛型转换完全不考虑这个。

lmxy202 发表于 2020-12-5 17:08:37

因为TBQ每个数据源都是独立的局部变量,变量没有指定数据源就默认是data0.的,函数入参不显示数据源则仍默认其数据源为父域,这就导致参数跟旗舰版不一样。
把每个局部变量前面都加上data0.应该就可以了。
TBQ泛型转换时就应该这么做。

lmxy202 发表于 2020-12-5 17:57:42

或者onBar里面所有code都用Range包起来,这样所有函数入参就跟函数外面的变量一样了。

lmxy202 发表于 2020-12-5 19:22:00

或者参数定义前都加Global
页: [1]
查看完整版本: TBQ中A_SendOrder变量传递失败