vn.py量化社区
By Traders, For Traders.
Member
avatar
加入于:
帖子: 31
声望: 0

请问一下,大家在接收实盘行情的时候,有没有遇到同一个tick多次推送的情况呢? 我在接币安实盘和模拟盘的行情时候都遇到了同样的问题,有时是同一时刻,推送过来多个相同的tick,有时是不同的时刻,多个相同的tick被连续推送。 这种情况正常吗? 请问CTP的接口会有这种情况吗?

Member
avatar
加入于:
帖子: 2015
声望: 133

如果基于bar交易的话,那么合成bar的时候应该会被过滤掉。如果基于tick交易的话,可以参考Tick级的委托精细化管理试试

Member
avatar
加入于:
帖子: 31
声望: 0

xiaohe wrote:

如果基于bar交易的话,那么合成bar的时候应该会被过滤掉。如果基于tick交易的话,可以参考Tick级的委托精细化管理试试
那实盘行情推过来多个相同的tick正常吗? 需不需要在on_tick里面就把重复的tick过滤掉呢?

Member
avatar
加入于:
帖子: 2015
声望: 133

请问你交易的什么品种呢?发生的频率有多么频繁呢?可以在策略里过滤掉的

Member
avatar
加入于:
帖子: 31
声望: 0

xiaohe wrote:

请问你交易的什么品种呢?发生的频率有多么频繁呢?可以在策略里过滤掉的

我接的是币安的永续USDT合约,发现“同一时刻,推送过来多个相同的tick,有时是不同的时刻,多个相同的tick被连续推送” 的这种情况很多。
如果我在on_tick里面写:

if tick == self.bg.last_tick:
return

这样写会出问题吗? 我是把仓位同步和定时追单的逻辑都写在了on_tick里面,但如果是完全相同的tick推送过来的话,感觉没有必要做后续重复的判断了。 不知道国内CTP的期权期货行情会不会有这种重复tick推送的问题

Administrator
avatar
加入于:
帖子: 4595
声望: 262

不能这么写,因为tick对象本身大概率不是同一个(底层接口里有用copy进行复制),而==并不会直接比较tick中所有字段。

可以去比较tick.volume(基于成交量有没有新增筛选),或者tick.last_price(基于成交价有没有变化来筛选)

Member
avatar
加入于:
帖子: 31
声望: 0

用Python的交易员 wrote:

不能这么写,因为tick对象本身大概率不是同一个(底层接口里有用copy进行复制),而==并不会直接比较tick中所有字段。

可以去比较tick.volume(基于成交量有没有新增筛选),或者tick.last_price(基于成交价有没有变化来筛选)

我看底层接口里是这么写的:
if tick.last_price:
self.gateway.on_tick(copy(tick))

这里copy 浅拷贝是只拷贝了tick object 指向的地址是吧? 也就是说不同时刻过来的所有tick object都指向的是同一个地址,只不过是tick数据更新的的时候,更新一下tick object
里面的属性,是这个逻辑吗?那么是因为 tick object指向的地址相同,所以if tick == self.bg.last_tick 肯定是为True的是吧?
现在我还是不明白这里为什么要copy一下?

Administrator
avatar
加入于:
帖子: 4595
声望: 262

不是copy了地址,而是直接copy了tick对象,但是tick对象下每个字段还是指向原本的数值

Member
avatar
加入于:
帖子: 31
声望: 0

用Python的交易员 wrote:

不是copy了地址,而是直接copy了tick对象,但是tick对象下每个字段还是指向原本的数值

copy了tick对象,但是tick对象下每个字段还是指向原来的地址是吗?
另外请问这里为什么要copy一下呢?

Administrator
avatar
加入于:
帖子: 4595
声望: 262

为了防止上层策略或者应用中,修改tick数据后影响底层数据

© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3

沪公网安备 31011502017034号