https://github.com/vnpy/vnpy_ib
VeighNa框架的InteractiveBrokers交易接口
https://github.com/vnpy/vnpy_ib
interactivebrokers python veighna vnpy
Last synced: over 1 year ago
JSON representation
VeighNa框架的InteractiveBrokers交易接口
- Host: GitHub
- URL: https://github.com/vnpy/vnpy_ib
- Owner: vnpy
- License: mit
- Created: 2021-09-29T00:37:28.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2024-03-22T03:24:06.000Z (over 2 years ago)
- Last Synced: 2024-03-22T11:10:34.843Z (over 2 years ago)
- Topics: interactivebrokers, python, veighna, vnpy
- Language: Python
- Homepage: https://www.vnpy.com
- Size: 82 KB
- Stars: 27
- Watchers: 3
- Forks: 27
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# VeighNa框架的InteractiveBrokers交易接口
## 说明
基于ibapi的10.19.1版本开发的InteractiveBrokers交易接口。
IbGateway中的合约代码支持两种风格:数字代码和字符串代码。
数字代码基于IB平台的ConId,查询方式:在TWS软件中【右键点击任意合约】->【金融产品信息】->【详情】,然后在弹出的网页上即可找到合约的ConId。
字符串代码基于合约的具体描述信息,命名规则和举例:
|合约类型|代码规则|代码(symbol)|交易所(exchange)|
|---|---|---|---|
|股票|名称-货币-类别|SPY-USD-STK|SMART|
|外汇|名称-货币-类别|EUR-USD-CASH|IDEALPRO|
|贵金属|名称-货币-类别|XAUUSD-USD-CMDTY|SMART|
|期货|名称-到期年月-货币-类别|ES-202002-USD-FUT|GLOBEX|
|期货(指定乘数)|名称-到期年月-合约乘数-类别|SI-202006-1000-USD-FUT|NYMEX|
|期货期权|名称-到期年月-期权类型-行权价-合约乘数-货币-类别|ES-2020006-C-2430-50-USD-FOP|GLOBEX|
委托、成交、持仓信息中的合约代码,默认采用数字代码。如果用户使用字符串代码订阅过行情,则使用字符串代码。
## 安装
安装环境推荐基于3.9.0版本以上的【[**VeighNa Studio**](https://www.vnpy.com)】。
### 安装ibapi
在[IB官网](https://interactivebrokers.github.io/#)下载TWS API的msi安装文件,并运行安装。
找到安装目录下的source\pythonclient文件夹,在cmd中运行下述命令安装:
```
python setup.py install
```
### 安装vnpy_ib
直接使用pip命令:
```
pip install vnpy_ib
```
或者下载源代码后,解压后在cmd中运行:
```
pip install .
```
## 使用
以脚本方式启动(script/run.py):
```
from vnpy.event import EventEngine
from vnpy.trader.engine import MainEngine
from vnpy.trader.ui import MainWindow, create_qapp
from vnpy_ib import IbGateway
def main():
"""主入口函数"""
qapp = create_qapp()
event_engine = EventEngine()
main_engine = MainEngine(event_engine)
main_engine.add_gateway(IbGateway)
main_window = MainWindow(main_engine, event_engine)
main_window.showMaximized()
qapp.exec()
if __name__ == "__main__":
main()
```