设为首页收藏本站

 找回密码
 注册
查看: 747|回复: 5

TBQ中A_SendOrder变量传递失败 [复制链接]

Rank: 2

精华
0
UID
247121
积分
59
帖子
27
主题
14
阅读权限
30
注册时间
2017-2-13
最后登录
2023-4-7
发表于 2020-12-4 11:42:22 |显示全部楼层
策略从旗舰版移植到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); 发单后,委托数量为和价格对了,但报错找不到指数合约

请帮忙解答,谢谢

Rank: 1

精华
0
UID
207706
积分
48
帖子
44
主题
2
阅读权限
10
注册时间
2015-4-23
最后登录
2021-11-18
发表于 2020-12-4 19:31:20 |显示全部楼层
Lots和Price这两个变量是和图层相关的,要写成:  data1.lots=1;   data1.Price=400

使用道具 举报

Rank: 4

精华
0
UID
103679
积分
301
帖子
183
主题
67
阅读权限
50
注册时间
2012-3-9
最后登录
2021-12-2
发表于 2020-12-5 16:13:23 |显示全部楼层
TBQ的多数据源(叠加多个K线)与旗舰版的公式运行机制完全不同,这是一个大坑。
TBQ的导入源码泛型转换完全不考虑这个。

使用道具 举报

Rank: 4

精华
0
UID
103679
积分
301
帖子
183
主题
67
阅读权限
50
注册时间
2012-3-9
最后登录
2021-12-2
发表于 2020-12-5 17:08:37 |显示全部楼层
因为TBQ每个数据源都是独立的局部变量,变量没有指定数据源就默认是data0.的,函数入参不显示数据源则仍默认其数据源为父域,这就导致参数跟旗舰版不一样。
把每个局部变量前面都加上data0.应该就可以了。
TBQ泛型转换时就应该这么做。

使用道具 举报

Rank: 4

精华
0
UID
103679
积分
301
帖子
183
主题
67
阅读权限
50
注册时间
2012-3-9
最后登录
2021-12-2
发表于 2020-12-5 17:57:42 |显示全部楼层
或者onBar里面所有code都用Range[0 : DataCount-1]包起来,这样所有函数入参就跟函数外面的变量一样了。

使用道具 举报

Rank: 4

精华
0
UID
103679
积分
301
帖子
183
主题
67
阅读权限
50
注册时间
2012-3-9
最后登录
2021-12-2
发表于 2020-12-5 19:22:00 |显示全部楼层
或者参数定义前都加Global

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-3-29 22:18

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部