合约(Contract)

承袭上一篇文章《提交你的第一个订单》我们通过合约,可以查到很多交易产品的信息,可查询的内容包含但不限于大盘指数,股价,期权,期货,贵金属,债券,外汇等。

由于金融产品的相关标识有很多重复的情况,所以要查找一个具体的标的,往往需要添加许多字段信息的描述。

在上一篇文章中,我们通过EClient类的reqMatchingSymbols方法,从市场中或者说从TWS中查找了名为“IB”的合约信息,但如果我们需要查找更深一点,我们就需要准备更多的工作了。

标识一个合约对象的类,在IB中,是Contract类。那我们先来看一下填写一个Contract类需要哪些东西。

    Contract contract = new Contract();contract.Symbol = "EUR";contract.SecType = "CASH";contract.Currency = "GBP";contract.Exchange = "IDEALPRO";

这是一个FX合约,也就是外汇合约信息。Symbol字段,表示的是合约代码,如果在大A股,就是如果查找浦发银行的合约信息,那么这个字段就是“600000”。

SecType表示的是资产类型,“CASH”表示现金或者说货币,那么股票,期货,期权,贵金属,债券等,这个字段都是不同的。

Currency表示的是货币单位,对于我们大A股的货币单位就是RMB了,而对于在美国交易的合约,其货币单位就是USD,而GBP就是英国磅的意思。

Exchange是交易所代码,IB里面还有根据具体情况而定义的PrimaryExch,也就是交易品的主要交易所代码。

那么关于这个类的具体定义,以及哪些字段可以用,我们可以直接参考官方的文档:http://interactivebrokers.github.io/tws-api/classIBApi_1_1Contract.html

需要注意的是,如果合约信息填写错误或者调用的请求函数错误,可能会无法取得想要的合约数据,会通过error函数返回错误的数据,所以如果发现了合约获取失败,就要注意是字段填写错误,还是请求函数错误了。

可用合约列表

虽然说这个列表在IB的文档里有详细说明,但为了方便大家以后查找,当然也方便我自己将来检索使用,所以我在这里把这些都罗列出来。

FX Pairs 外汇

    Contract contract = new Contract();contract.Symbol = "EUR";contract.SecType = "CASH";contract.Currency = "GBP";contract.Exchange = "IDEALPRO";

Stocks 股票

    Contract contract = new Contract();contract.Symbol = "IBKR";contract.SecType = "STK";contract.Currency = "USD";//In the API side, NASDAQ is always defined as ISLAND in the exchange fieldcontract.Exchange = "ISLAND";

由于可能存在相同交易代码,为了更快的获取到对应股票合约信息,除了股票代码,货币符号,交易所,你还需要指定主要的交易所标记,以便唯一地确定对应的合约,具体实现如下:

    Contract contract = new Contract();contract.Symbol = "MSFT";contract.SecType = "STK";contract.Currency = "USD";contract.Exchange = "SMART";//Specify the Primary Exchange attribute to avoid contract ambiguity// (there is an ambiguity because there is also a MSFT contract with primary exchange = "AEB")contract.PrimaryExch = "ISLAND";

需要注意下,primaryExch 字段指定主要交易所,避免由于交易所符号不清晰,导致歧义。其次,对于美国来说,IB使用ISLAND来代指纳斯达克,所以如果是要查询纳斯达克的某个合约,PrimaryExch就要写成ISLAND。

需要注意,这个只是IB自己的定义,而不是代表着所有的其他类似系统也是这样定义的。

另外,作为主要交易所和交易所字段的替代方法,可以通过指定字段“Exchange:Primary Exchange”,例如:“SMART:NASDAQ”,使用“:”或“/”符号区分字段。

Indexes 指数

    Contract contract = new Contract();contract.Symbol = "DAX";contract.SecType = "IND";contract.Currency = "EUR";contract.Exchange = "DTB";

CFDs 差价合约

    Contract contract = new Contract();contract.Symbol = "IBDE30";contract.SecType = "CFD";contract.Currency = "EUR";contract.Exchange = "SMART";

Futures 期货

标准期货合约通常使用到期日和symbol字段作为基础标记进行定义。

    Contract contract = new Contract();contract.Symbol = "ES";contract.SecType = "FUT";contract.Exchange = "GLOBEX";contract.Currency = "USD";contract.LastTradeDateOrContractMonth = "201803";

此外,IB使用“LocalSymbol” 标记为期货专用。当使用“local symbol”标记期货合约时,“合约到期日”字段不再需要。

例如:

    Contract contract = new Contract();contract.SecType = "FUT";contract.Exchange = "GLOBEX";contract.Currency = "USD";contract.LocalSymbol = "ESU6";

某些时候,你可能期望获得多于单一期货合约的多个拥有共同基础标记及合约到期日(注:例如某一天到期的多个棉花期货合约)。为了处理歧义性,可以设置合约乘数“Multiplier”,例如:

    Contract contract = new Contract();contract.Symbol = "DAX";contract.SecType = "FUT";contract.Exchange = "DTB";contract.Currency = "EUR";contract.LastTradeDateOrContractMonth = "201609";contract.Multiplier = "5";

也可以通过设置连续合约获取某合约的历史数据,时间轴,或者合约详细信息。连续期货合约不能用于实时数据,或着提交订单。

    Contract contract = new Contract();contract.Symbol = "ES";contract.SecType = "CONTFUT";contract.Exchange = "GLOBEX";

资产类型“FUT+CONTFUT”可以被用于查询合约详细信息及合约历史信息,除此之外不能被其他合约类型使用。

    Contract contract = new Contract();contract.Symbol = "ES";contract.SecType = "FUT+CONTFUT";contract.Exchange = "GLOBEX";

Options 期权合约

如同期货,期权合约也需要到期日,以及一个期权合约乘数。

    Contract contract = new Contract();contract.Symbol = "GOOG";contract.SecType = "OPT";contract.Exchange = "BOX";contract.Currency = "USD";contract.LastTradeDateOrContractMonth = "20170120";contract.Strike = 615;contract.Right = "C";contract.Multiplier = "100";

查找几乎拥有相同属性的期权合约(如基础标识,竞价,最近交易时间,乘数等),通过增加更多的信息,可以帮助用户更容易的找到对应的期权合约。

    Contract contract = new Contract();contract.Symbol = "SANT";contract.SecType = "OPT";contract.Exchange = "MEFFRV";contract.Currency = "EUR";contract.LastTradeDateOrContractMonth = "20190621";contract.Strike = 7.5;contract.Right = "C";contract.Multiplier = "100";contract.TradingClass = "SANEU";

使用OCC属性标记,可以在API中用来定义一个期权合约。

    Contract contract = new Contract();//Watch out for the spaces within the local symbol!contract.LocalSymbol = "C DBK  DEC 20  1600";contract.SecType = "OPT";contract.Exchange = "DTB";contract.Currency = "EUR";

Futures Options 期货期权

    Contract contract = new Contract();contract.Symbol = "ES";contract.SecType = "FOP";contract.Exchange = "GLOBEX";contract.Currency = "USD";contract.LastTradeDateOrContractMonth = "20180316";contract.Strike = 2800;contract.Right = "C";contract.Multiplier = "50";

Bonds 债券

债券可以在“symbol”为“CUSIP”或“ISIN”,具体的标识,可以通过reqMatchingSymbols或者在TWS中查看。

    Contract contract = new Contract();// enter CUSIP as symbolcontract.Symbol = "912828C57";contract.SecType = "BOND";contract.Exchange = "SMART";contract.Currency = "USD";

债券也可以像其他资产类型一样,通过conId和exchange进行定义。

    Contract contract = new Contract();contract.ConId = 285191782;contract.Exchange = "SMART";

Mutual Funds 共同基金

API也提供了对共同基金的支持。

注意!模拟交易账户不能交易共同基金。

    Contract contract = new Contract();contract.Symbol = "VINIX";contract.SecType = "FUND";contract.Exchange = "FUNDSERV";contract.Currency = "USD";

Commodities 商品期货

    Contract contract = new Contract();contract.Symbol = "XAUUSD";contract.SecType = "CMDTY";contract.Exchange = "SMART";contract.Currency = "USD";

Dutch Warrants and Structured Products 荷兰认股权证

这种类型的资产,在IB种有很多,所以容易导致歧义,因此IB要求用户必须填写conId和localSymbol。

    Contract contract = new Contract();contract.LocalSymbol = "B881G";contract.SecType = "IOPT";contract.Exchange = "SBF";contract.Currency = "EUR";

今天就先到这里,在下一篇文章种,我们来研究下怎么提交这些不同的合约数据。

话说看到这里,你不来点个赞,写个好评么?我要没动力又把这技术介绍的文章鸽了怎么办?哎,真是头疼呢

#IB TWS编程手记——03-关于IB合约的一二三相关推荐

  1. #IB TWS编程手记——02.提交你的第一个Hello World!

    关于IB的错误码 在我们进一步深入IB的工作机理前,需要回到Wrapper中error函数,如果善用error函数提供的错误信息,将能帮助我们快速定位到错误,并且修正我们的代码. 关于IB错误Code ...

  2. #IB TWS编程手记——00.TWS API准备工作

    IB TWS是什么? IB TWS是电子券商IB的量化交易API,是开发.研究自动量化交易算法的重要工具.关注过我的朋友,可能知道之前我曾经翻译过IB API的相关文档,但是由于平日工作实在太忙,这个 ...

  3. #IB TWS编程手记——01.TWS建立基础连接

    IB看起来很复杂,我该如何入手? 虽然Class List很多,但是和开发者主要打交道的就三个类,EWrapper,EClientSocket,EReaderSignal.IB的代码交互方式,是一种类 ...

  4. [小北De编程手记] : Lesson 02 - Selenium For C# 之 核心对象

    从这一篇开始,开始正式的介绍Selenium 以及相关的组件,本文的将讨论如下问题: Selenium基本的概念以及在企业化测试框架中的位置 Selenium核心对象(浏览器驱动) Web Drive ...

  5. [小北De编程手记] : Lesson 05 玩转 xUnit.Net 之 从Assert谈UT框架实践

    这一篇,本文会介绍一下基本的断言概念,但重点会放在企业级单元测试的相关功能上面.下面来跟大家分享一下xUnit.Net的断言,主要涉及到以下内容: 关于断言的概念 xUnit.Net常用的断言 关于单 ...

  6. [小北De编程手记] [Lesson 02] AutoFramework构建 之 Page Objects - 设计模式

    写在最前面 这个系列的主旨是要跟大家分享一下关于自动化测试框架的构建的一些心得.这几年,做了一些自动化测试框架以及团队的构建的工作.过程中遇到了很多这样的同学,他们在学习了某一门语言和一些自动化测试的 ...

  7. ib课程计算机科学内容,新的IB计算机课程主要学习什么内容?有什么新的特点呢?...

    原标题:新的IB计算机课程主要学习什么内容?有什么新的特点呢? 调整后的计算机科学现在属于第四学科组,与生物.化学.设计技术.物理.环境系统及社会一样被视为一门实验科学,并且成为一门独立的课程,学生可 ...

  8. ib网卡命令_一种IB网卡连通配置方法、装置、终端及存储介质与流程

    本发明属于服务器设置技术领域,具体涉及一种IB网卡连通配置方法.装置.终端及存储介质. 背景技术: InfiniBand架构是一种支持多并发链接的"转换线缆"技术,它是新一代服务器 ...

  9. Infragistics netadvantage UltraGrid (UltraWinGrid) 编程手记

    UltraGrid 是Infragistics netadvanage 控件库中提供的一个Windows 网格控件,功能强大,完全可以取代VS 中提供的 GridView控件.但不知为何,国内介绍它的 ...

  10. ib物理hl难吗?ib物理考点避坑指南

    我在去年参加了IB大考,目前就读于维克森林大学.之前已经为大家分享了经济HL和数学MAA HL的备考经验,今天继续给大家分享一些物理HL的备考经验.ib物理hl难吗? 我认为物理算是在理科中偏理解的一 ...

最新文章

  1. 大型AI已有自主意识了?LeCun开喷Open AI首席科学家
  2. 个人推广网站不花钱的一些方法
  3. a标签阻止链接跳转(href=‘javascript:;‘)
  4. boost::multi_array模块测试 storage_order-isms
  5. Spring MVC概述
  6. 后端学习 - Java基础
  7. Linux命令之 DNF -- 新一代的 RPM 软件包管理器
  8. Beginning iCloud in iOS 5 Tutorial Part 2(转载)
  9. 前端学习之路之CSS (一)
  10. elastic search与postgresql的数据同步
  11. js打印线程id_Node.js多线程完全指南[每日前端夜话0x43]
  12. 晨风机器人回复词库_qq机器人词库大全下载
  13. jQuery学习笔记之选取选定复选框的同行某列元素
  14. 100+篇论文合集:GNN在NLP中的应用
  15. 【二分图匹配】矩阵游戏
  16. python编号/排序/翻转/并行迭代使用场景及作用
  17. 质因数分解,(结果简化版)
  18. linux img文件 分区挂载
  19. PyCharm关闭更新提示
  20. 投资欢喜传媒的B站,有着怎样的内容焦虑?

热门文章

  1. AutoCAD2018_图层编辑
  2. er ubnt x设置教程_ubnt edgerouter er-x 路由器怎么设置
  3. mobi电子书如何用Mac打开?
  4. 2.4G ISM CC2500设计
  5. fastdfs 集群配置
  6. ajax教程初始模板,ajax实战入门模板
  7. 性能测试流程和各阶段的工作
  8. 接口获取行政区划代码_最新行政区划代码省市区三级 乡镇街道四级 村五级 数据库(2021年1月版 )...
  9. 破解获取微信小程序源代码
  10. APISpace 手机号码归属地和运营商查询API