设为首页收藏本站

 找回密码
 注册
查看: 4477|回复: 6
打印 上一主题 下一主题

盘中两商品Data0和Data1的时间不同,TB将如何运行? [复制链接]

Rank: 4

精华
0
UID
208790
积分
269
帖子
187
主题
35
阅读权限
50
注册时间
2015-5-12
最后登录
2015-9-9
跳转到指定楼层
1#
发表于 2015-6-24 11:03:51 |只看该作者 |倒序浏览
本帖最后由 edwardkm 于 2015-6-24 11:05 编辑

如题,同一超级图表中的两个商品Data0(沪深300现货,如000300)和Data1(沪深300期货,如IF1507)。两个商品在同一图表中叠加,在A函数发单的策略中能正常按条件开仓。但是,由于两商品分属不同的行情服务器,而这两商品的行情服务器的时间又不同步(现货延时期货5~15秒),那么TB在运行策略时,Bar的叠加是按照什么原则进行的,下面的代码是我的平仓语句,在盘中测试时99%是在开仓的Bar里就被平仓了。同一思路的多空两策略都是这样的。
请版主帮忙看看,这个问题已经困扰我两周了。
  1.         ...
  2.         HoldPosition = GetGlobalVar(3);//持仓标识
  3.         SendOrderFlag = GetGlobalVar(4);//发单标识
  4.         OrderTime = GetGlobalVar(5);//开仓时间
  5.         If(BarStatus == 2 && HoldPosition != 0 && OrderTime != Time)
  6.         {
  7.                 If(SendOrderFlag==0 && ExitConditionBoolBar)
  8.                 {
  9.                         Data1.A_SendOrder(Enum_Sell,Enum_Exit,1,Data1.Q_BidPrice - offSet*MinPoint);
  10.                         ...
  11.                 }
  12.                 ...
  13.         }
  14.         ...
复制代码

Rank: 4

精华
0
UID
208790
积分
269
帖子
187
主题
35
阅读权限
50
注册时间
2015-5-12
最后登录
2015-9-9
2#
发表于 2015-6-24 11:19:07 |只看该作者
截图发上,可能看得更直观些。
谢谢!
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 4

精华
0
UID
208790
积分
269
帖子
187
主题
35
阅读权限
50
注册时间
2015-5-12
最后登录
2015-9-9
3#
发表于 2015-6-24 11:21:40 |只看该作者
从下往上数,一二笔才应该是我所希望的,三四及五六就是我在一楼描述的情况。

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
4#
发表于 2015-6-24 12:33:23 |只看该作者
使用A函数发单,一般是不考虑BAR的情况了,只要条件满足,无论是否同一个bar都可以直接发单 。
如果策略里有特别要求,限制开仓bar上不可以平仓。那一样需要使用全局变量来控制了。。。
比如说,在开仓时记录setglobalvar(10,currentbar)  在平仓条件中一定要限制currentbar>getglobalvar(10)方可。
你贴出的代码里并没有将全局变量的控制写清楚,所以没法帮你判断是在哪里出问题的,但你可以按上述说明自己排查一下。

使用道具 举报

Rank: 4

精华
0
UID
208790
积分
269
帖子
187
主题
35
阅读权限
50
注册时间
2015-5-12
最后登录
2015-9-9
5#
发表于 2015-6-24 16:14:40 |只看该作者
谢谢米大师的回复!
1.我用Plot在两个图表中输出,在下午1点时索引值是一样的,现在收盘来看两个值是有差异的。感觉Currentbar返回的Bar的索引值好像是在变化的,是否是不点击刷新,索引值就一直累加下去,直到重新打开图表?
2.系统是300根Bar线设置限制,举例来说,现在开仓在索引为299的Bar上,那平仓Bar的索引必须大于299才能平仓了,应该是这样理解的吧?
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
6#
发表于 2015-6-24 18:01:22 |只看该作者
edwardkm 发表于 2015-6-24 16:14
谢谢米大师的回复!
1.我用Plot在两个图表中输出,在下午1点时索引值是一样的,现在收盘来看两个值是有差异 ...

1.你截图所示的二个合约是不同交易所的,排除其它因素,就单讲他们的收盘时间也是不同的。。所以,结束时的索引也不可能一样。
2. 使用a_sendorder开平仓由你的代码控制,并没有说必须是平仓大于开仓bar的这个说法。。如果你想要平仓的K线索引大于开仓的K线索引,需要自己在代码里控制好。

使用道具 举报

Rank: 4

精华
0
UID
208790
积分
269
帖子
187
主题
35
阅读权限
50
注册时间
2015-5-12
最后登录
2015-9-9
7#
发表于 2015-6-25 10:07:20 |只看该作者
小米 发表于 2015-6-24 12:33
使用A函数发单,一般是不考虑BAR的情况了,只要条件满足,无论是否同一个bar都可以直接发单 。
如果策略里 ...

呵呵,我用了Time函数和全局变量没有如期达到要求。
用上了您介绍的CurrentBar函数和全局变量,终于移开了开仓Bar了。
谢谢!越来越了解TB的运行机制了。

使用道具 举报

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

bottom

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

GMT+8, 2024-5-22 19:48

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部