故障排除和支持
API 文档包含所有 API 函数的完整描述。此外,API本身的源代码是免费分发的,是更深入地了解API工作原理的重要资源。如果在查看这些资源后仍有关于可用 API 功能的问题,API 支持组可以提供帮助。
重要的是要记住,IB无法提供编程帮助或提供有关如何编写自定义应用程序代码的建议。API 组可以查看包含 API 应用程序与 TWS 之间通信记录的日志文件,并提供有关 API 可以提供哪些内容的详细信息。
关于从IB系统开始的一般建议:
在使用API之前,请熟悉TWS中的类似功能:TWS API只不过是客户端应用程序和TWS之间的通信通道。每个 API 函数在 TWS 中都有一个对应的工具。例如,API 中的市场数据tick类型对应于 TWS 中的观察列表列。任何可以在API中创建的订单都可以首先在TWS中创建,建议这样做。此外,如果信息在TWS中不可用,则API中将不可用。在将IB网关与API配合使用之前,建议先熟悉TWS。
利用示例API应用程序:与API下载一起分发的示例应用程序基本上具有每种可用编程语言中每个API函数的示例。如果相应的示例应用程序中未出现问题,则表示自定义实现存在问题。
定期升级TWS或IB网关:TWS和IB网关通常具有具有增强功能的新软件版本,有时可以修复错误。因此,我们强烈建议我们的用户尽可能保持其软件的最新状态。保留 API 版本和升级 TWS 没有问题,因为 TWS/IB 网关设计为向后兼容较旧的 API 版本。如果您遇到在TWS或IB网关中而不是在API程序中发生的特定问题,则很可能在最近的软件版本中不会发生该问题。
日志文件
日志文件对于提供有关自定义应用程序如何发生故障的详细信息至关重要。它们是 API 应用程序程序员直接审阅的有用工具,此外,还可以上传以供 API 支持组审阅。
接口日志
TWS和IB网关可以配置为创建一个单独的日志文件,该文件仅包含与API应用程序的通信记录。默认情况下不启用此日志。但需要通过全局配置设置创建 API 消息日志文件启用(下图)。
API 日志包含 API 应用程序与 TWS/IB 网关之间交换的消息记录。由于仅记录 API 消息,因此 API 日志更紧凑,更易于处理。但是,它们不包含有关TWS/ IBG的一般诊断信息作为TWS / IBG日志。默认情况下,TWS/IBG 设置文件夹是C:\Jts(或 Mac/Linux 上的 IBJts)。API 日志名为api.客户端 Id].[day].log,其中 [clientId] 对应于客户端应用程序用于连接到 TWS 的 Id,[day] 对应于工作日(即 api.123.Thu.log)。
还有一个设置"在 API 日志中包含市场数据",该设置将在 API 日志文件中包含流式市场数据值。历史蜡烛图数据始终记录在 API 日志中。
注意:在TWS Build 977中,API和TWS日志都在本地加密。API 日志可以解密以供从关联的 TWS 或 IB 网关会话进行查看,就像 TWS 日志一样,如描述日志的本地位置部分所示。
启用 API 日志的创建
TWS:
导航到"文件/编辑→ API →设置→全局配置"
选中创建API 消息日志文件复选框
单击应用和确定
IB网关:
导航到"→设置"→ API →设置"。
选中创建API 消息日志文件复选框
单击应用和确定
TWS 日志文件
TWS 日志记录级别必须设置为"详细信息"级别,以记录与 API 相关的信息。默认情况下,它处于"错误"级别,记录最少的诊断信息。要捕获 API 消息,必须将日志记录级别更改为"详细信息"。请注意,与所有TWS/IBG设置一样,"日志记录级别"是针对不同用户以及TWS和IBG单独保存的。
重要:在问题发生之前,必须将TWS/IB网关日志文件设置设置为"详细信息"级别,以便在问题发生时正确记录信息。但是,由于在此级别下将生成大量信息,因此生成的日志的大小可能会大大增加。因此,建议仅在对非常具体的问题进行故障排除和/或跟踪时才使用"详细信息"级别。这也可以从 API 客户端本身使用IBApi.EClient.setServerLogLevel函数完成。某些第三方应用程序(如 NinjaTrader)配置为在每次连接时调用此功能以设置 TWS 日志记录级别,因此要将 TWS 日志设置为"详细信息",则必须在 API 客户端程序中完成此操作。
将 TWS 日志记录级别设置为详细信息的步骤
TWS:
导航到"文件/编辑→ API →设置→全局配置"
将*“日志记录级别"设置为"详细信息”*
IB网关:
导航到"→设置"→ API →设置"。
将*“日志记录级别"设置为"详细信息”*
日志的本地位置
日志存储在 Windows 计算机上的 TWS 设置目录 C:\Jts\ 中(默认设置可以在登录屏幕上进行不同的配置)。
日志文件目录的路径可以通过使用组合键盘命令 Ctrl-Alt-U从 TWS 或 IB 网关会话中找到。这将显示诸如 C:\Jts\detcfsvirl\ (在 Windows 上)之类的路径。
根据隐私法规,日志在保存到磁盘之前会进行加密。它们可以从关联的TWS或IB网关会话中解密。在 TWS 中:经典 TWS -> 帐户 ->诊断 -> TWS 日志。在 IB 网关中,文件 ->网关日志。
上传日志
如果在出现问题期间已使用"创建 API 消息日志"设置启用了 API 日志记录,则可以使用组合 Ctrl-Alt-Q将其上传到 API 组,然后单击提交。如果日志已上传,请在"帐户管理"(在"支持"下)的消息中心创建一个网页,指示关联TWS会话的用户名,让 API 支持组知道。在某些情况下,还可以在详细日志记录级别请求 TWS 日志。TWS日志可能会变得非常大,并且可能无法通过自动方法上传;在这种情况下,可以找到另一种上传方式。
自动化系统的注意事项
自动化系统的注意事项
下订单注意事项
在通过API下订单并构建强大的交易系统时,监控回调通知非常重要,特别是对于IBApi.EWrapper.error,IBApi.EWrapper.orderStatus更改,IBApi.EWrapper.openOrder警告和IBApi.EWrapper.execDetails以确保正常运行。 如果您在通过 API 下达的订单时遇到问题,例如订单未填写,首先要检查的是这些回调返回的内容。您的订单可能已被拒绝或取消。如果需要,请参阅API 日志部分,了解有关获取 API 日志或提交日志以供审核的信息。
有关订单被拒绝、取消和警告的常见情况以及返回的相应消息,请参阅下文:
如果订单受到大批量 (LGSZ) 拒绝,API 客户端将通过IBApi.EWrapper.error收到错误 (201)。错误文本将指示订单大小过大,并建议另一个较小的大小。
斜体部分以文书为条件
根据我们作为经纪商的监管义务,我们不接受您提交的 ### 股的大额限价订单。请提交较小的订单(不超过 ###)或将您的订单转换为算法订单 (IBALGO)
如果订单需要经过价格检查,客户可能会通过IBApi.EWrapper.orderStatus和IBApi.EWrapper.error收到状态(已取消)+错误(202)。错误文本表示价格与当前价格相差太远。
根据我们作为经纪商的监管义务,我们不能以您选择的限价#.###接受您的订单,因为它在市场上走得太远了。请使用更接近当前市场价格的限价#.##提交您的订单。
客户可以通过IBApi.EWrapper.openOrder收到waringText,表明订单可能会受到价格上限的限制。
如果您的订单没有立即执行,根据我们作为经纪商的监管义务,如果您的订单限价超过当前参考价格的允许距离,我们可能会根据市场情况拒绝您的订单。这旨在确保您的订单价格符合有序的市场,并减少您的订单对市场的影响。请注意,此类拒绝将导致您无法收到成交。
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的简单的程序化策略