API版本9.73 - 发行要点

10.19 - 债券发行人优化

  • SymbolSamples回复和ReqContractDetails请求增加了新字段。

10.18 - 支持金融产品时区、按股数显示HMDS市场数据

  • 现在支持用不同格式发送日期/时间:协调世界时、金融产品交易所所在时区和交易操作者所在时区
  • 现在支持按股数发送历史数据跳动点。

10.15 - MOC和MOCT字段、新的IBKRATS委托单属性、WSH事件筛选工具、IPO价格一般跳动点

  • placeOrder/cancelOrder请求支持MOT(手动委托单时间)和MOCT(手动委托单取消时间)字段
  • IBKRATS挂钩最佳价和挂钩中点价(PEGBEST、PEGMID)委托单支持新的偏移属性。
  • 支持Wall Street Horizon(WSH)事件数据筛选工具
  • 新的IPO价格一般跳动点

10.14 - 高级委托单拒绝、使用者信息

  • 支持高级委托单拒绝
  • 支持使用者信息

10.12 - 历史Schedule

  • 支持historicalSchedule

10.11 - 数量规则

  • contractDetails和bondContractDetails增加数量规则

10.10 - 支持加密货币、支持WSH日历、以股数为单位的市场数据、更多属性

  • 支持交易加密货币
  • 在API Clients中支持WSH meta和日历事件。
  • 新增对买量、卖量和最后数量应用以股数为单位的市场数据。
  • 新增PostToAts定单属性,以支持将IBKR ATS定单重新传递至SMART(Reroute to SMART)。见:https://www.interactivebrokers.com/cn/index.php?f=4552
  • placeOrder/openOrder新增AutoCancelParent属性。
  • 到期前有效定单新增持续时间定单属性。
  • 不再支持ETradeOnly、FirmQuoteOnly和NbboPriceCap定单属性。

981 - 统一分配组和分配配置文件

API客户如对接版本983以上的TWS,且启用了旗标/勾选框“在分配方法中使用账户分组”,则其将看到以下变化:

  • 如果参数为“分组”,则replaceFA和requestFA都将收发统一的分组/分配配置文件列表。
    • 如果参数为分配配置文件,则replaceFA和requestFA都将收到错误。
  • placeOrder将支持指定的分配配置文件名称作为faGroup名称;faMethod可省略。
    • 如果指定的实际分组名称和faMethod为空或被省略,则使用该分组的默认方法。否则,请求的方法将被应用于定单。
  • 如果定单是针对分配配置文件的,则openOrder回叫会报告“分配配置文件”来代替“分组”。
  • 以下接受分组名称的API呼叫也会接受替代分组名称的分配配置文件名称:
      • reqAccountSummary / cancelAccountSummary
      • reqPositionsMulti / cancelPositionsMulti
      • reqAccountUpdatesMulti / cancelAccountUpdatesMulti

980 - 针对完整功能的细微修复

除非另有说明,否则本次发行要求TWS 980或以上的版本。

  • 细微修复使980成为具备完整功能的推荐版本。

979 - .Net标准2.0、家庭代码、基于价格的波动率和其它较小修复

除非另有说明,否则以下项目均要求使用TWS 979或以上版本。

  • .Net标准2.0: .Net客户库目标 .Net标准2.0
  • 更为完整的家庭代码信息(服务器端更改)
  • python API添加了setConnectionOptions()。现在,您可像在其它API技术中一样,在Python中添加"+PACEAPI"连接选项。
  • 基于价格的波动率报价:参见新增跳动点类型92-99:http://interactivebrokers.github.io/tws-api/tick_types.html
    • 该等跳动点要求TWS 980+版本
  • 修复:python和C++客户库小修复

976 - 价格管理算法、已完成的定单

除非另有说明,否则以下项目均要求使用TWS 976或以上版本。

  • 价格管理算法:我们为价格管理算法属性添加了对默认值的支持。有关IBKR全新的价格管理算法的更多信息请见https://www.interactivebrokers.com/cn/index.php?f=15654
  • 已完成的定单:reqCompletedOrders()函数允许返回所有已完成的定单,不论是已成交的还是已取消的。

975 - DDESocketBridge、市场深度请求新增数据域、修复了Python和ActiveX的问题

除非另有说明,否则以下项目均要求使用TWS 975或以上版本。

  • 基于Socket的DDE API:我们发布了全新的开源DDE API,该API现可独立于TWS启用,且包含与socket API相同的功能。
  • 市场深度请求:市场深度请求新增了主要交易所数据域,以消除智能传递深度请求方面可能存在的歧义。
  • Python修复:修复了导致使用Python时每20秒自动断连的问题。
  • ActiveX修复:修复了样本ActiveX电子表单中的下单和扫描仪订阅功能。

974 - 可卖空股票、智能深度、更快的速度及更多

除非另有说明,否则以下项目要求TWS 974及以上的版本。

  • 新增的ShortableShares Tick会返回可做空的股票的准确数量:当您在reqMktData中使用通用一般tick类型236请求数据,除之前返回的“Shortable” tick类型,表明是否有大于或小于1000股可卖空的股票(在beta 974.1以下的TWS版本中对一般tick类型236即会返回该数据),现还会返回准确的可卖空股票数量。
  • 智能深度: 现在API能向用户提供其已订阅的1级和2级数据的整合市场深度(DOM)报价,而不再要求API客户针对每家交易所单独发出reqMktDepth请求。只需将reqMktDepth中新增的参数isSmartDepth设为“真”即可使用该请求。
  • 面向顾问的新参数:reqPositionsMulti和reqAccountUpdatesMulti函数不再接受财务顾问账户将“账户”参数设置为空串,以避免混淆。如要从“所有”子账户中请求数据,账户参数必须被设置为“全部”。
  • 更快的速度:以高于50/秒的速度发送API消息现可被TWS以50/秒的速度处理而不会导致中断。现在,该功能可通过RTD服务器API自动实现,也可在eConnect前调用SetConnectOptions("+PACEAPI")在其它API技术中实现。
  • ActiveX reqHistoricalTicks:ActiveX API现支持reqHistoricalTicks函数。
  • 通过OMS API下达委托单:客户现可将TWS用作定单管理系统(OMS)来通过API下达委托单。
  • 扫描仪一般筛选条件:API扫描仪现支持一般筛选条件(即ScannerSubscription类别以外的数据域)。新的筛选条件可在API reqScannerParameters函数中找到,通过reqScannerSubscription中的新增参数添加。要求TWS 973及以上版本。
  • 样本数据表以类文件提供:ActiveX Excel样本数据表将很快以类文件的形式(.cls)提供,以优化版本控制及与Github的整合。如需对ActiveX样本数据表做更新,应使用提供的decompile.vbs脚本来更新数据表反编译的vbproject文件,然后与TwsActiveX.xls一同提交这些文件。

973.07 - 实时数据服务器API安装程序;修复ActiveX问题;ContractDetails统一命名

  • 实时数据服务器API安装程序: API现兼容64位Excel。
  • 修复了ActiveX API传递历史数据及读取执行对象中lastLiquidity域的问题。
  • ContractDetails类:“summary”域在Python、C#/.NET、C++和ActiveX API中被重命名为“contract”使其在所有API语言中保持一致(在Java API中已是“contract”)。
  • 使API能够传递-1到1以外的希腊字母值。
  • 将“DeltaNeutralContract”对象重命名为“UnderComp”。
  • 升级C++以使用C++标准库的shared_ptr。
  • 更正了DDE样本工作表内定单ID的溢出问题。

以下功能要求TWS版本971或以上版本:

  • 为API添加交易前初始和维持保证金要求的“假设情境”域。
  • 定单类添加"DontUseAutoPriceForHedge"。这使用户可明确为附加的成对/外汇/Beta对冲定单设置限价。
  • 为股票平均期权交易量添加通用标记105。
  • 添加延迟的最后timestamp。

973.06 - MiFIR交易报告域

从API 973.06开始、TWS 969及以上版本可用。对于须遵守MiFIR报告规则且选择了增强版及委托交易报告功能的的欧洲经济区(EEA)投资公司,我们在定单下添加了四种新的定单属性,而在TWS和IB网关的全局配置下添加了几种新的定单预设。

新的定单属性包括:

  • mifid2DecisionMaker – 用于发送“公司内投资决策”值(如果未使用mifid2DecisionAlgo)。
  • mifid2DecisionAlgo – 用于发送“公司内投资决策”值(如果未使用mifid2DecisionMaker)。

  • mifid2ExecutionTrader – 用于发送“公司内执行”值(如果未使用mifid2ExecutionAlgo)。
  • midid2ExecutionAlgo - 用于发送“公司内执行”值(如果未使用mifid2ExecutionTrader)。

新增的TWS和IB网关定单预设可在“全局配置”下的定单 > MiFIR页面找到,包括TWS决策者默认值、API决策者默认值、以及执行交易者/算法预设。

“公司内投资决策”mifid2DecisionMakermifid2DecisionAlgo属性有以下选项:

  1. 如果您符合以下条件,则无需报告该项目:
    • 使用TWS API传递定单,且
    • 总是由客户做出投资决策,且
    • 这些客户中没有一个是选择了委托报告的EEA投资公司(“委托报告公司”)。

    您可通过TWS全局配置下的定单 > MiFIR页面配置预设来表明以上情况。在此情境下,自营账户的定单将需通过TWS下达。

  2. 如您使用TWS API传送定单,且投资决策是由委托报告公司内部的个人或小组做出的,且有一个人是主要决策者:

    • 您的TWS API可通过mifid2DecisionMaker域为单个定单传递IB分配给决策者的短代码。您可通过IB账户管理指定哪些人可作为决策者。要了解IB为这些人士分配的短代码,请联系IB客户服务。

    • 如您的TWS API无法传送以上域,且投资决策是由单一个人做出或批准的(该个人被视为主要投资决策者),您可预设一个默认的投资决策者,当没有以上域时即为定单使用该默认的决策者。您必须在IB账户管理中设置投资决策者,然后在TWS全局配置下的定单>MiFIR页面配置默认的投资决策者。

  3. 如您使用TWS API传送定单且投资决策是由算法做出的:

    • 您的TWS API可通过mifid2DecisionAlgo域为单个定单传递IB分配给决策者的短代码。您可通过IB账户管理指定哪些算法可作为决策者算法。要了解IB为算法分配的短代码,请联系IB客户服务。

    • 如您的TWS API无法传送以上域,且投资决策是由单一或主要的决策算法做出的,您可预设一个默认的投资决策者算法,当未发送以上域时即为定单使用该默认的决策者算法。您必须在IB账户管理中设置投资决策者,然后在TWS全局配置下的定单>MiFIR页面配置默认的投资决策者。

    • 注:一个定单只能有一个投资决策者或默认决策者,即主要的投资决策人或算法。

“公司内执行”mifid2ExecutionTradermifid2ExecutionAlgo属性有以下选项:

  1. 如您使用TWS API传递在第三方交易界面中输入的定单,且您是公司内负责执行的交易员,则无需提供额外的信息。

  2. 如您的TWS API会在无人干预的情况下自动将定单传递至IB,请联系IB客户服务将此类项目注册为算法。只有主要的项目或算法需注册及标注。注册后,您便可在TWS全局配置下的定单> MiFIR页面配置默认值。

  3. 您的TWS API可通过mifid2ExecutionAlgo(用于算法)或mifid2ExecutionTrader(用于个人)为单个定单传递IB分配给在公司内负责执行的算法或个人的短代码。

要了解更多信息,或获取IB账户管理中为个人或算法定义的短代码,请联系IB客服服务。

要了解有关MiFIR交易报告义务的更多信息,请见知识库文章MiFIR下EEA投资公司委托交易报告及其增强版

可通过API获取美国股票的实时逐笔数据

从API 973.06、TWS 969及以上版本开始可用。reqTickByTickData功能能提供多达5个美国证券的实时逐笔数据。

版本973.06发布还包括

API版本973.06还包括以下功能和修复:

  • 逐笔中点;
  • 允许wrapper handler为实例方法;
  • Python:添加逐笔数据支持;新功能文件及其他更新与小改动;处理Latin-1错误信息;
  • 公开DefaultEWrapper;
  • 使Order.permid域类型一致;
  • Source /cppclient/client/EClient.h; std::auto_ptr<>已被否决;
  • 修复:修复了代表BarData的格式化字符串; EDecoder.cpp : 初始化mktCapPrice(修复第573号发布);修复了网络数据包的下一条信息只有1-3个字节的故障。

973.05合约详情更新;已实现盈亏;实时数据(RTD)期权希腊字母;64-bit ActiveX应用程序支持;最近流动性指标

  • 合约详情(ContractDetails)增加实际到期日区域
  • 最后交易日区域增加时区
  • 盈亏功能增加已实现盈亏区域
  • 现在,您可在实时数据(RTD)服务器API中接收期权希腊字母
  • 我们现已支持64-bit ActiveX应用程序与所提供API安装程序的兼容
  • 执行报告中增加最近流动性指标

请注意,Python API可能尚未囊括上述所有功能。更多详细信息,请参见API用户指南http://interactivebrokers.github.io/tws-api/

通过API获取逐笔历史市场数据

从API版本973.04开始,您可使用IBApi::EClient::reqHistoricalTicks从IB的数据库请求逐笔历史市场数据。视请求的数据类型不同,结果会通过IBApi.EWrapper.historicalTicksIBApi.EWrapper.historicalTicksBidAskIBApi.EWrapper.historicalTicksLast返回。

样本及更多信息,请见http://interactivebrokers.github.io/tws-api/historical_time_and_sales.html

TWS Excel实时数据服务器更新

从API版本973.04开始,实时数据服务器API可支持包含空格的代码请求,如“BRK B”。此外,实时数据的错误信息处理也进行了改进。

更多信息,请参见http://interactivebrokers.github.io/tws-api/tws_rtd_server.html

Excel ActiveX样本改进

从API版本973.04开始,ActiveX样本电子表格的代码进行了重构,使样本的读取和扩展更为简便。

要使用ActiveX样本电子表格,请参见http://interactivebrokers.github.io/tws-api/activex.html#activex_sample

在定单状态响应中暴露上限市场价格

从API版本973.04开始,定单状态消息会包含上限市价单的限制价格。

API样本中的已调整最后价

从API版本973.04开始,API样本会包含已调整最后价(ADJUSTED_LAST)类型的历史数据,表示接收经股息调整的历史数据。

开盘前买价&卖价属性

从API版本973.04开始,tickPrice功能可返回表示报价为盘前阶段数据的preOpenBid和preOpenAsk属性。

请求历史数据新增keepUpToDate域

从TWS 965以上版本、API版本973.03开始,请求历史数据的函数reqHistoricalData现会请求keepUpToDate域返回“是”或“否”来判断:

是:订阅要求当之前未完成的实时数据可得时立即返回更新数据,或

否:只返回一次所有数据。

注:如结果为“是”,则无法确定endDateTime。

样本及更多信息,请见http://interactivebrokers.github.io/tws-api/historical_bars.html#hd_request

API新闻标题和文章

从API版本973.02开始,有四家新闻供应商现通过API提供新闻文章。通过API获取的新闻要求单独订阅数据,且每项数据的费用与TWS中同一项数据的费用不同。API的新闻函数能够搜索可用的新闻供应商,订阅实时新闻以便在新闻发布时立即接收标题、请求特定的新闻文章,以及返回系统中已缓存的历史新闻列表。

当前可用的API新闻订阅包括Briefing Trader、Benzinga Pro、Fly on the Wall以及Midnight Trader。

您可通过账户管理订阅API新闻或查看当前的订阅项目。您也可使用IBApi::EClient::reqNewsProviders:通过API查看当前的订阅项目。

请求历史新闻标题:此外,如您订阅了合适的API新闻项目,您可使用IBApi::EClient::reqHistoricalNews函数从API请求历史新闻标题。获得的标题将返回至IBApi::EWrapper::historicalNews

请求新闻文章: 使用以上函数请求新闻标题后,您可使用IBApi::EClient::reqNewsArticle函数返回的文章ID请求新闻正文。新闻正文将返回至IBApi::EWrapper::newsArticle

样本及更多信息,请见http://interactivebrokers.github.io/tws-api/news.html

搜索匹配请求的产品代码

从版本9.73.02开始,可基于产品代码的开头字母使用IBApi::EClient::reqMatchingSymbols函数搜索合约。比如,如字符串“I”或“IB”被定义用于搜索IB的代码“IBKR”,该代码对应的产品就将在匹配的合约列表中显示。

结果将返回至IBApi::EWrapper::symbolSamples

样本及更多信息,请见http://interactivebrokers.github.io/tws-api/ matching_symbols.html

股票监管快照

从版本9.73.02开始,对于股票,客户需订阅单个交易所特定的市场数据方可接收实时更新的报价。比如,纽交所股票需订阅“Network A”、ARCA/AMEX股票需订阅“Network B”,纳斯达克股票则需订阅“Network C”。每项订阅均分开添加且单独收取市场数据费用。

另外,也可选择“美国证券快照数据组”,该服务不提供实时更新数据,但提供实时经计算的美国市场全国最佳买卖价(NBBO)。将函数IBApi::EClient::reqMktData内的五个参数设置为真,可通过API请求监管快照。返回的值为基于所有可用的交易所数据计算得出的当前市场状态。

有关美国监管市场数据服务的更多信息,请见IB 知识库文章

重要提示:每条监管快照请求将产生0.01美元费用。真实账户和模拟账户均须支付该费用。如监管快照数据的累计月费用达到特定“Network”的费用,用户将自动订阅该项目并获得持续自动更新的报价,该月支付相关订阅项目的费用。月末该订阅将被终止。每家交易所将单独应用费用上限,不合计。

样本及更多信息,请见http://interactivebrokers.github.io/tws-api/md_request.html#regulatory_snapshot

使用TWS 966或更高版本。

通过API获取期货未平仓量

从API版本9.73.01、TWS 965.1b和更高版本开始,您可通过发送reqMktData()并在genericTickList参数中加入“588”经由API获得期货未平仓合约数据。通过tickSize()回调,期货未平仓量将在跳动点类型86(tick type 86)中返回。

更多详情请参见API文档:

https://interactivebrokers.github.io/tws-api/tick_types.html

求合约详情传达底层合约信息

从版本9.73.01开始,IBApi::EClient::reqContractDetails函数现可用于识别(衍生品)底层合约的以下详细信息。

  • underConid = 底层合约的合约ID。

从版本9.73.03开始,IBApi::EClient::reqContractDetails函数可用于识别底层合约的额外详情:

  • underSymbol = 底层合约的代码。
  • UnderlyingSecType = 底层合约的证券类型。

其会返回至IBAPI::EWrapper::contractDetails

实时数据(RTD)服务器

从版本9.73.03开始,使用实时数据服务器动态链接图书馆用Excel电子表格经由API从TWS请求市场数据。在Excel表格单元格中输入以下公式:

=RTD (ProgID, Server, String1, String2, ...)

其中

  • ProgID为Tws.TwsRtdServerCtrl
  • Server为空。
  • String1, String2...为代表代码、主机/端口和主题的一列字符串。

例如,第一个字符串(String1)在简单语法中代表一个代码,String2为买价尺寸:

=RTD ("Tws.TwsRtdServerCtrl", , "IBM@ISLAND", "BidSize")

新的Python API

注:要求Python 3.1或更高版本。

版本9.73.03现包括一个新的Python API客户。您在电脑上安装该beta版本后,可在以下地址找到Python API组件:

  • Python API样本代码 – 位于您API安装路径下的samples/Python文件夹。(通常为IB_973
  • Python源代码 – 位于您API安装路径下的source/pythonclient文件夹。

修复

Linux/Mac C++样本已修复。