【TWS API 翻译系列】3、第三方软件中使用TWS API的相关问题
作者:yunjinqi   类别:    日期:2022-01-03 22:05:14    阅读:1160 次   消耗积分:0 分    

为了使用IB,第三方软件生产商会把TWS API整合到他们自己的平台中。正是由于TWS API的存在,一些知名的平台,比如Ninja Trader 或者 Multicharts可以和TWS进行交互,用于获取市场数据、下单和管理账户、组合的信息。

需要额外注意的是,很多的第三方API平台并不是对于所有的IBKR账户结构都兼容的。在开一个特殊的账户类型或者转化一个账户类型之前,先和软件生产商确认下。比如,很多的第三方的平台,如 NinjaTrader and TradeNavigator,不兼容IB连接的账户结构,所以,在使用第三方软件连接你的IB账户之前,先和软件生产商进行确认。

一个实现了TWS API接口的第三方软件的列表可以在 投资者的市场上找到。就像在上面表明的一样,在列表中的平台,并不代表是IB推荐的。如果你对其他的平台感兴趣,但是没有在这个列表中,你可以直接联系平台的生厂商获取更多的信息。

经常被问到的一些问题

下面是一些经常被问到的问题。所有的问题都涉及到TWS的典型的应用。注意,有些软件生厂商可能提供了额外的设置以便简化,如果下面没有涉及到你使用过程中面临的问题,可以和你的软件生厂商直接联系。

如何连接第三方交易平台到IB的TWS上

连接其他的第三方平台到TWS需要你先允许API连接,和原先的TWS设置一样。第三方的平台,应该至少提供配置host和port的地方,在很多情况下,第三方平台应该会和TWS是用同一台电脑,因此host ip 应该是127.0.0.1,port应该是7496或者7497,和TWS设定的一样。client id 可以填写任意大于等于0的整数。如下图所示:

sample_app_connect.png

当使用第三方软件连接TWS的时候,从哪里可以得到帮助

对于非IBKR开发的软件,IB不提供任何支持或者建议。大多数情况下,通过逆向工程去了解第三方软件如何使用我们的API的是不太现实的,所以,针对你的咨询,我们的支持同事提供的建议是很有限的。所以,建议你第一时间咨询第三方软件的支持团队。

我的软件开发商在他们那没有发现任何问题,并让我直接联系IB

当一个操作并没有如期实现的时候,有可能第三方平台和IB都没有问题,这可能是商业逻辑的问题。TWS的典型行为是或者执行一个要求的操作,或者返回一个能给你指出正确方向的解释性的信息。第三方软件公司需要在他们自己的用户界面上清楚的显示这些TWS的信息。没有一个相关的错误的信息提醒,我们的支持团队并不能给你任何建议。

如果认为错误是IB方面的,需要提供清楚明确的技术信息,包括错误的证据或者提供API信息输出文件。收集所有需要的信息不是一个容易的过程,也许需要非常熟悉我们的API。为了避免陷入两方的支持团队之间,请要求你的第三方软件的生产商直接联系我们,并提供尽可能多的信息。

TWS产生warning信息阻塞了我的订单的自动提交

TWS存在预防性的设置,用于检验订单的安全性。当存在任何的违反预防性设置的时候,TWS通常弹出警告信息或者通过API返回去错误信息。对于使用第三方软件下单的用户,如果没有是用IB的该品种的数据的话,TWS就是产生一个默认的警告:“你正在尝试提交一个订单,但是并没有用该品种的市场数据".这个待检验的订单并不会自动提交,除非用户在TWS的软件中点击这个订单的提交按钮。

TWS的预防性设置可以通过TWS中的设置进行忽略。在File/Edit → Global Configuration → API → Precautions, and check the box中选择"Bypass Order Precautions for API Orders"。当进行过这个设置之后,第三方软件的API订单将不会被检查。

在第三方软件中我不能看到任何的数据

正如在我们的 Streaming Market Data 的页面中解释的那样,为了能够从TWS拉取市场信息,你需要获取你感兴趣的产品的实时的市场数据。

我已经订阅了实时的数据,但是在模拟交易中,我的用户名仍然不能够获取数据

确保你已经设置了 订阅数据共享

我获得一个信息说:“历史数据请求导致违反”

请参考我们历史数据限制 的页面。总体上提出了不要在太短的时间内请求太多的数据就不会报这个错误了。如果需要的市场信息太多,IB不够使用的话,可以找专门的数据提供商。

当尝试加载一个图表的时候,在第三方软件上显示”最后一天交易的图表是没有数据的“

当请求最后一天交易的市场数据的时候会返回这个信息。这个是我们软件的问题,不是第三方软件的问题,在我们TWS上请求同样的图表,也会返回一样的结果。可以联系我们的支持团队的市场信息部门寻求更多的信息。

no_eod_data.png

我获得一个”HMDS请求没有返回数据“的信息

有的时候在特定的请求日期之前的数据是不可得到的,原因如下:如果一个产品从2016年1月1日才开始有数据,但是你的第三方程序请求的日期在这之前开始,就会报这个错误。如果想要避免这个错误信息,就需要调整你的第三方软件的请求日期的参数。

我不能在第三方软件上画出CFD品种的图表,但是在TWS上显示是正常的。

除了指数类的CFD产品之外,CFD产品本身是没有市场数据的。TWS显示的是CFD的标的合约的数据,当你从TWS获取非指数的CFD的数据的时候,你将得到一个错误信息,让你获取它的标的合约的数据来替代。一些第三方的软件用户界面只允许你通过他们的图表下单,因为这些CFD的产品没有数据,并且也不能要求这些第三方的软件使用TWS类似的转换方法,也许你会发现,在这些第三方软件上在这些品种中是不能够下单的

我怎么使用第三方软件连接我的模拟交易账户

通过TWS API 连接到TWS是不能意识到你登录到TWS的是哪个用户名的。从这个角度看API的话,在实盘交易和模拟交易之间是不存在差别的。既然第三方的软件仅仅通过特定的地址和端口连接运行着的TWS,连接到模拟账户,仅仅需要你打开TWS,登录模拟账户中去,确保TWS的API设置是允许API连接的,然后从第三方软件连接到TWS就可以了。

我可以同时连接到我的实盘账户和模拟账户吗

对于我们来说,这是可以的。你可以同时打开两个TWS,登录不同的用户名和密码。确保每个TWS同时监听的是不同的端口。注意,也许你需要登录几个你的第三方软件,或者有一种方法告诉区别正在使用模拟账户和实盘账户。

第三方软件上显示的图表和TWS上显示的图表不一致

理论上来说是不可能的,如果第三方软件也是从TWS获取的历史数据的话。有些第三方软件绕开我们的历史数据限制,通过合并历史数据和实时数据,由于我们的实时市场数据并不是tick级别的,通过实时数据合成的bar很难和直接从我们历史数据获取的bar一样。

另外,你也可能是不小心的在比较不同的图表。比如,一个股票在NYSE交易所的图表绝不会和在ARCA交易所的图表一样。也许不经意间你在使用一边的数据查看交易,而实际上是中间价或者bid ask的另一边的数据;另一个通常的错误涉及到的是在TWS和第三方软件上,用不同的交易周期去对比。

可不可以从API上免费获取数据

获取实时数据或者历史数据需要订阅level 1的市场数据。订阅另外的外汇、指数CFD、债券需要一个每月的费用。具体可以参考:http://interactivebrokers.github.io/tws-api/market_data.html

可以把TWS API 用在实验账户上吗

可以。把TWS API 连接到实验账户中是可能的,但是在实验账户中,不能够通过TWS API 获取实时市场数据和大部分品种的历史数据。

什么类型的API是可以使用的

TWS API ,拥有全部的功能,并且可以被所有的客户在交易中使用。

WT Web API,针对白名单的咨询师和引进的交易商使用,它提供实时数据和历史数据。

REST WebAPI,给第三方的公司和机构使用,它可以交易股票和外汇,可以获取市场数据快照,获取账户和机构的信息。

更多说明,可以参考: https://www.interactivebrokers.com/en/index.php?f=1325

注:感觉散户真可怜。

连接到TWS API 和 FIX/CTCI连接有什么区别

TWS API是连接TWS 或者 IB Gateway的接口。它提供非常多的功能,比如能够获取市场数据、下单、接收账户信息。TWS API 要求用户首先登录TWS 或者 IB Gateway,这两个都是独立的桌面应用程序。TWS API有一个每秒钟50次指令的限制。

FIX/CTCI连接可以配置连接IB Gateway或者直接连接到IB。不像TWS API, FIX/CTCI只能用于下单,不能用于获取市场信息。另外,FIX/CTCI具有每月最低佣金的限制。

在API已经连接了之后,我还可以使用另外的交易程序吗?比如IBKR移动版,WebTrader,TWS

为了一个账户能够同时连接到不同的交易平台上,需要在账户里面设置额外的用户名,使用不同的用户名登录不同的平台。额外的用户名可以在账户管理中免费创建。市场数据的订阅仅仅应用于单个用户名,每个用户名是单独收费的。

TWS API 可以用于其他的IBKR账户吗

大多数的第三方的API应用不支持所有的IBKR的账户结构,所以强烈建议在开立或者转换一个特定的IB账户类型之前,先咨询第三方软件生产商。

为什么API提交的订单没有在TWS中自动提交,而是有一个“T”字按钮紧邻着它?

通常有三种原因可能出现这种情况,第一种就是这个订单有错误,导致提交失败;第二种就是TWS有预防性的设置,如果触发了,就可能导致订单不会自动提交。如果想要关闭这种功能,可以在API的 Precautions中设置Bypass Order Precautions for API Orders ;第三种原因就是可能在发送订单的时候,参数transmit设置成了False,默认情况下是True.

IB是否允许自动登录TWS或者IB Gateway

很不幸的是,出于安全的考虑,这两个软件都不允许自动登录,都需要在界面中输入账户密码来登录。(最近的版本中,好像在每天重新重启的时候可以自动登录)

是否可以避免TWS的每日的自动退出

现在的TWS和IB Gateway可以实现自动的每日重启功能,不需要用户的额外验证。在周六晚上,服务器有一个重启,这个需要用户重新进行验证登录。如果在用户设置中选择了自动重启选项,那么周六晚上的服务器的重启将不会影响周日的继续使用了,只要在这个期间,这个用户名没有登录到Client Portal, TWS, 或者 IBKR mobile

是否推荐其他的第三方产品或者编程咨询

IBKR不推荐任何第三方的结构,但是维护了一个第三方的列表在投资者市场中。可以参考下面的链接:https://gdcdyn.interactivebrokers.com/Universal/servlet/MarketPlace.MarketPlaceServlet

使用API的时候连接TWS和IB Gateway是否存在区别

从API使用的角度来看,这两个是完全一样的。TWS额外提供给用户直接查看持仓,交易和市场数据,并提供一系列的工具用于交易、研究和分析。IB Gateway有一个简单的用户界面,仅仅用于修改设置。使用IB Gateway的优势在于它减少了40%的资源消耗,并且可以运行更长的时间,不需要自动关闭。可以参考初始化设置的文章。

可以运行 TWS 或者 IB Gateway在无头的服务器上吗

TWS 和 IB Gateway设置的都需要一个用户界面来输入账号密码,因为这个原因,无头或者不支持用户界面操作的服务器是不支持的。

我需要升级TWS API的吗

TWS提供很好的向后兼容,当更新TWS的新版本的时候,没有必要更新API。当新的API提供了新的功能的时候,才是更新API的时机。

在IB Gateway中数据指标是红色的,是哪里出错了吗

当和市场数据形成连接的时候,市场数据的指标会变成红色,直到数据请求完成了,这是正常的。如果长期不活跃,这些数据也有可能变成红色。(感觉翻译不太准,英文原文:It is normal for the market data farm connection indicator to stay red until a market data request is made from the API application. The farms can also turn red after extended inactivity.)

如何给API支持团队报告一个错误

当问题出现的时候,诊断特定的问题通常需要API的输出日志功能在TWS或者IB Gateway是允许的。在TWS中,需要在Global Configuration -> API -> Settings and checking the box 中,选择"Create API Message Log", 然后 设置日志输出级别到 “Detail”。在IB Gateway,需要在Configure -> Settings -> API -> Settings中进行设置。如果日志输出是被允许的之后,如果问题出现了,他们可以通过 Ctrl-Alt-Q被上传,然后点击提交。请让API支持团队知道,日志已经上传了。

账户的历史持仓或者账户的历史价值是否可以通过API获取

因为API不能提供TWS中不能提供的信息,所以历史账户信息是不能获取的。它们可以在账户管理里面获取。

IBKR是否提供为自定义算法提供主机/托管服务

很不幸的是没有。托管是不提供的。

在MacOS中是否有Excel API

Excel API需要一个windows系统的excel。所以,在MacOS中,是没有的。

TWS API相关的教程

【TWS API使用教程1】—如何在自己创建的client和TWS之间创建一个连接,并请求当前的时间
【TWS API使用教程2】—如何使用 TWS API在ubuntu和windows上分别设置contract、获取contract详细信息、设置order、下单、获取持仓信息、获取账户信息
【TWS API使用教程3】—如何使用TWS API从盈透证券中设置contract及获取contract的信息?
【TWS API使用教程4】—如何使用TWS API在盈透证券中设置order?
【TWS API使用教程5】—如何使用TWS API在盈透证券中下单(place order)、获取订单信息、获取持仓、获取账户汇总信息?
【TWS API使用教程6】—如何使用TWS API在盈透证券中获取数据?
【TWS API 使用教程7】如何使用TWS API 从盈透证券中筛选满足一定条件的contract?
【TWS API 使用教程8】一个基于TWS API的简单的程序化策略


版权所有,转载本站文章请注明出处:云子量化, http://www.woniunote.com/article/69
上一篇:【TWS API 翻译系列】2、TWS API接口的使用说明
下一篇:【TWS API 翻译系列】4、TWS API在Excel中的使用