opencv 4快速入门_vn.py快速入门4 - 海外市场IB

本文原载于vn.py社区微信公众号(vnpy -community)。

​IB,全称Interactive Brokers,中文名盈透证券,是全球公认第一的全品种零售经纪商,提供的金融品种包括:

  • 股票:美股、港股、欧股、A股(沪港通)等
  • 期货:CME、LME、HKFE、SGX等(没有国内期货)
  • 期权:上述股票和期货交易所的所有期权品种
  • 固收:常规交易所的债券以及非常规银行间的债券(打电话)
  • 外汇:纯ECN交易模式的杠杆外汇(银行间做市商)
  • 贵金属现货:和外汇一样的银行间杠杆市场

加上已有十多年历史早已成为行业标准的交易接口IB API,基本上说起外盘交易通道,IB就是当仁不让的第一选择了。

但需要额外强调的是,针对某些特定的交易市场或者需求,IB未必是最终的最优选择,但一定是最方便的。

准备账号

和其他接口不同的是,IB一共有三套账户体系:

  • Live Trading:实盘账户
  • Paper Trading:仿真账户
  • Demo Trading:演示账户

其中Paper Trading和Live Trading高度类似,提供接近实盘交易行情以及撮合成交(像CTP的第一套环境),而Demo Trading则只提供历史行情的回放,满足交易接口测试的需求(像CTP的第二套7X24小时环境)。

接下来的内容,我们以最容易获取的Demo Trading为例来讲解,首先前往IB官网下载TWS(Trader Work Station):https://www.interactivebrokers.com/en/index.php?f=14099#tws-software,一般下载最新版本的TWS Latest。

安装后启动,看到以下界面:

ce3f972fefeb0f20daef729a5e230972.png

点击底部的“Return to the demo”按钮,打开演示账户测试界面:

d2d4a3bcd664bb304dc27a73202491dd.png

输入邮箱地址后,点击“Try Demo”按钮,即可登录进入演示账户的TWS界面:

4a5bdb2d22b264d07b59252f2fc3f49c.png

点击右上角的齿轮图标(从右往左导数第五个),打开TWS配置对话框,在General页面,将“Current Language”设为English后,关闭并重启TWS。

3460ca0e659df172e99a0102d4b5301a.png

然后进入到“API”->“Settings”来进行API接入相关的配置:

勾选“Enable ActiveX and Socket Clients”,允许外部程序接入TWS;

  1. 勾选“Download open orders on connection”,在外部程序连上TWS时获取所有未成交委托信息;
  2. 记录你的端口号“Socket Port”(我这里是7497),将用于后续从VN Trader发起到TWS的连接;
  3. 点击“OK”按钮,保存配置

接口登录

和其他大多数API接口直连经纪商服务器的模式不同,IB接口连接的是位于本地的交易客户端TWS,再由TWS负责连接到IB的服务器,因此在启动VN Trader前需要先启动TWS完成账户登录。

接下来照着入门1中的方法,启动VN Trader Pro,只加载“盈透证券”接口。

进入主界面后,点击菜单栏的“系统”->“连接IB”,看到对话框:

bdbfd64e70bc1d4d9dee27ed6b835386.png

各个字段的填写如下:

  • TWS地址:127.0.0.1(本机IP地址)
  • TWS端口:7497(之前步骤)
  • 客户号:填写1即可(除非你有多个进程连接TWS

需要强调的是,和CTP等其他API从本地交易程序直连远端服务器的模式不同,IB API的连接是从本地交易程序(如VN Trader),到本地的客户端TWS,背后由TWS负责维护从本地到IB服务器的连接。

以上都填好后,点击“连接”按钮开始登录CTP服务器以及相关初始化操作,在右下角的日志监控组件中,可以看到初始化相关的日志信息输出:

7f43e0613775f234ddfa10f4d092c9cc.png

登录初始化过程中有任何异常情况,日志信息中都会看到相应的文字输出,可以根据内容自行排查。看到“服务器时间”这条日志后,说明已经成功完成了初始化操作。

后续依旧会有一系列的信息通知,这些主要和IB账户相关的数据权限配置有关(说白了就是告诉你那些实时行情你没花钱买,现在获取不到),Demo Trading没有特别好的解决办法,推荐还是入金后申请Paper Trading。

查看合约

由于盈透证券支持的交易所以及合约资源实在太多,IB API无法提供和CTP或者币圈接口类似的全合约查询功能。用户需要前往盈透证券的官方网站,在其交易产品列表页面,自行寻找相关的合约信息:https://www.interactivebrokers.com.hk/cn/index.php?f=5430.

注意在VN Trader中,针对IB接口所使用的交易合约代码,是该合约在IB系统内的唯一标识符Conid,全称Contract Identifier,注意Conid为一串纯数字,不要和Symbol或者Description Name搞混。

订阅行情

在上一步中找到自己想要订阅行情的合约信息后,则可以在VN Trader界面左上角的交易组件框中,选择交易所、接口后,在代码框中输入合约代码后回车,即可订阅行情。

当收到最新行情Tick推送时,会显示在下方的深度报价中,IB接口的Tick推送的最高更新频率是每秒4笔。

20984819f0bfd3f8627d29edf75b4015.png

订阅行情后,IB接口也会自动查询该合约的相关信息,此时再打开“帮助”->“合约查询”组件,即可看到该合约:

efbb83f86f0fbf3c6f4ae6f6891da10d.png

所有已订阅的行情信息,都会显示在右侧顶部的行情监控组件中,方便后续快速执行手动交易:

2f5a645a0b3129c3cac78d72eba05c5b.png

需要注意IB上的行情数据,除少量免费提供外(外汇、贵金属),其他大部分都需要在IB官网的后台管理系统中付费购买后,才能在VN Trader中订阅使用。如果行情订阅失败(Conid填错、没有购买等),在左下角的日志组件中也会有相应的内容输出,方便排查。

交易下单

知道最新行情的价格在哪里后,就可以进行买卖下单:

1203687051fe1eaf294fa1a8bd51dae8.png
  1. 选择交易方向:要买(多)还是要卖(空)
  2. 开平留空不用选
  3. 选择价格类型:IB接口支持限价、市价
  4. 输入价格和数量后,点击“委托”按钮即可发出交易请求

委托成交

委托请求提交后,则会返回相应的委托回报信息,显示在委托组件中,显示当前这笔委托请求的最新状态:

a41d06b3db62f15081b715d9b0c87db9.png

注意委托组件分为两个:

  • “活动”:只显示当前处于可撤状态(提交中、未成交、部分成交)的委托信息
  • “委托”:显示所有的委托信息(包括可撤委托)

两个组件中,对于处于可撤状态的委托,均可双击该笔委托的单元格来实现撤单的功能(鼠标放置其上时会有文字提示)。或者也可以通过交易组件上的单击“全撤”按钮,来实现一键全撤VN Trader内当前所有可撤委托。

5942e480093fda87df939f60fd3ef55a.png

当委托发生成交后,VN Trader会收到成交推送的数据,并显示在成交监控组件中,用户可以通过每笔成交的委托号来实现和对应委托的映射。注意在实盘中,每笔委托可能和多笔反向来自其他投资者的委托发生成交,即一笔委托对应有多笔成交记录。

资金持仓

委托成交后,账户的资金情况将会发生变化,IB针对每个币种的资金提供独立的账号,可以通过账号名后缀来判断,注意其中的BASE是你的IB账户的基础币种账号。

34277fa6565ac615b8e88c8003de4fdf.png

IB接口提供实时推送更新的资金和持仓数据,在持仓方向上也采取净仓模式来计算:

87fd6fe51782a660a4a4463499fc4099.png

实盘交易

当你已经对IB的Demo Trading测试环境足够熟悉后,可以开始用Paper Trading来进行仿真交易,或者使用Live Trading进行实盘交易,只需要在TWS登录的时候选择对应的账号即可。

除了TWS外,IB针对API交易还提供了一套更加轻量级的客户端IB Gateway,只有最简单的GUI界面用于显示日志,在资源占用和延时性能方面更有优势。

更多vn.py精华内容,请关注公众号:

bf69b990409b87d32323b016600a0042.png
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值