跳至主要內容

XTP QuoteAPI使用UDP常见问题

xtp_master大约 3 分钟

XTP QuoteAPI使用UDP常见问题

1.问:采用UDP需要注意哪些问题?

答:1.1.16.9以上版本的quote api推荐采用UDP方式获取行情。采用UDP连接时,需要注意以下几点:

  1. 使用订阅/退订函数,请注意配对使用,不支持全订阅后,再退订部分,或者订阅部分再全退订。
  2. 连接时涉及到UDP接收缓存,缓存区的大小可以由用户设定,最小不能低于64MB。如果用户处理慢了,在缓存满的情况下,UDP下会出现丢包情况,因此在允许的情况下,请适当的设置大点,注意请按2的次方设置。建议1024M。
  3. 在UDP连接情况下,也是有TCP连接的,如果发生断线回调,说明TCP已经断线,不表明UDP断线,行情可能还在正常接收。

2.问:设置UDP缓存,多少合适?

答:推荐采用512MB以上,最低不能低于256MB。当然,如果尽可能多的话更好。

3.问:采用UDP连接后无法收到行情数据?

答:按照以下方法处理:

  1. 请检查是否关闭了防火墙。
  2. 请检查路由是否支持UDP组播。
  3. 请检查与服务器之间UDP组播是否通畅。

如果以上均没有问题,有可能你所订阅的合约,交易所没有下发行情数据(测试环境下会发生,因为交易量小,不是所有股票都有行情,此时可以尝试报单驱动一下行情)

4.问:行情回调函数中,采用何种方式处理数据,才不容易因缓存满而导致的丢包?

答:收到行情数据后,请将行情数据用memcpy到另外的内存中,然后在另一个线程中处理。

5.问:可以使用TCP连接获取行情么?

答:虽然支持TCP连接获取行情,可是由于行情数据量巨大,会导致数据阻塞在服务器,用户收到的行情数据严重延迟。所以如非必要,请选择UDP方式连接。

6.问:如果我要订阅大部分的市场行情,可否采用先调用全市场订阅函数,然后再调用退订部分行情的方法做到?

答:不支持这种方式,请选择配对的订阅/退订函数。

7.问:UDP有断线提示么?

答:UDP目前没有断线提示,在UDP方式下,会有TCP的断线提示。TCP断线不代表UDP断线。可能行情数据能继续收到。

8.问:订阅行情返回成功后,为何行情数据推送间隔很长?

答:行情的推送跟交易所有关,如果你订阅的合约行情不怎么变化,确实会很长时间行情不动,进而没有行情数据。或者在盘后,可能1分钟才推送一次数据。

9.问:采用TCP连接和UDP连接在接口调用上有什么不同?

答:接口调用方式上相同。如果在行情回调函数中处理速度慢了,会有不同的表现:

  1. TCP上表现为行情延迟或者因为缓存满了,引发掉线。
  2. UDP上表现为缓存满了,引发丢包。建议将UDP的缓存开大点,可以通过SetUDPBufferSize()接口设置。

10.问:OrderBook全市场支持么?

答:目前仅南方中心机房的Level2服务器支持,且只有深圳市场。

11.问:可以收到全市场的level2行情么?

答:可以。

12.问:OrderBook是交易所的数据么?

答:OrderBook是我们根据level2的行情快照+逐笔数据重建出来的快照数据,频率比level2的行情快照要高,因此又被称为level2plus。目前仅在南方中心机房Level2服务器上提供,且只有深圳市场有。