vnpy/docs/gateway.md

776 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 交易接口
## 如何连接
从gateway文件夹上引入接口程序通过add_gateway()函数调动最终展示到图形化操作界面VN Trader中。
在菜单栏中点击"系统"->"连接CTP”按钮会弹出如图账号配置窗口输入账号、密码等相关信息即连接接口并立刻进行查询工作: 如查询账号信息、查询持仓、查询委托信息、查询成交信息等。
![](https://vnpy-community.oss-cn-shanghai.aliyuncs.com/forum_experience/yazhang/gateway/login.png)
 
### 加载需要用的接口
加载接口示例在根目录"tests\trader"文件夹的run.py文件中。
- 从gateway文件夹引入接口类文件如from vnpy.gateway.ctp import CtpGateway;
- 创建事件引擎对象并且通过add_gateway()函数添加接口程序;
- 创建图形化对象main_window以VN Trader操作界面展示出来。
```
from vnpy.gateway.ctp import CtpGateway
def main():
""""""
qapp = create_qapp()
main_engine = MainEngine(event_engine)
main_engine.add_gateway(CtpGateway)
main_window = MainWindow(main_engine, event_engine)
main_window.showMaximized()
qapp.exec()
```
 
### 配置和连接
打开cmd窗口使用命令“Python run.py"即可进入VN Trader操作界面。在左上方的菜单栏中点击"系统"->"连接CTP”按钮会弹出账号配置窗口输入账号、密码等相关信息即连接接口。
连接接口的流程首先是初始化账户信息然后调用connet()函数来连接交易端口和行情端口。
- 交易端口:查询用户相关信息(如账户资金、持仓、委托记录、成交记录)、查询可交易合约信息、挂撤单操作;
- 行情端口:接收订阅的行情信息推送、接收用户相关信息(如账户资金更新、持仓更新、委托推送、成交推送)更新的回调推送。
 
### 修改json配置文件
接口配置相关保存在json文件中放在如图C盘用户目录下的.vntrader文件夹内。
![](https://vnpy-community.oss-cn-shanghai.aliyuncs.com/forum_experience/yazhang/gateway/.vntrader.png)
所以要修改接口配置文件用户即可以在图形化界面VN Trader内修改也可以直接在.vntrader修改json文件。
另外将json配置文件分离于vnpy的好处在于避免每次升级都要重新配置json文件。
 
### 查看可交易的合约
先登录接口,然后在菜单栏中点击"帮助"->"查询合约”按钮会空白的“查询合约”窗口。点击“查询”按钮后才会显示查询结果,如图。
![](https://vnpy-community.oss-cn-shanghai.aliyuncs.com/forum_experience/yazhang/gateway/query_contract.png)
 
## 接口分类
| 接口 | 类型 |
| -------- | :----------------------------------------: |
| CTP | 期货 |
| MINI | 期货 |
| FEMAS | 期货 |
| XTP | 国内股票、指数、基金、债券、期权、融资融券 |
| OES | 国内股票 |
| TORA | 国内股票 |
| IB | 外盘股票、期货、期权 |
| TAP | 外盘期货、期权 |
| FUTU | 国内股票、港股、美股 |
| TIGER | 国内股票、港股、美股 |
| ALPACA | 美股 |
| BITFINEX | 数字货币 |
| BITMEX | 数字货币 |
| BINANCE | 数字货币 |
| OKEX | 数字货币 |
| OKEXF | 数字货币 |
| HUOBI | 数字货币 |
| HBDM | 数字货币 |
| ONETOKEN | 数字货币 |
| RPC | RPC服务 |
 
## 接口详解
### CTP
#### 如何加载
run.py文件提供了接口加载示例先从gateway上调用ctpGateway类然后通过add_gateway()函数添加到main_engine上。
```
from vnpy.gateway.ctp import CtpGateway
main_engine.add_gateway(CtpGateway)
```
 
#### 相关字段
- 用户名username
- 密码password
- 经纪商编号brokerid
- 交易服务器地址td_address
- 行情服务器地址md_address
- 产品名称product_info
- 授权编码auth_code
 
#### 获取账号
- 仿真账号从SimNow网站上获取。只需输入手机号码和短信验证即可。短信验证有时只能在工作日正常工作时段收到SimNow的用户名为6位纯数字经纪商编号为9999并且提供2套环境用于盘中仿真交易以及盘后的测试。
- 实盘账号在期货公司开户通过联系客户经理可以开通。用户名为纯数字经纪商编号也是4位纯数字。每个期货公司的经纪商编号都不同另外实盘账号也可以开通仿真交易功能同样需要联系客户经理。
 
### MINI
#### 如何加载
先从gateway上调用MiniGateway类然后通过add_gateway()函数添加到main_engine上。
```
from vnpy.gateway.mini import MiniGateway
main_engine.add_gateway(MiniGateway)
```
 
#### 相关字段
- 用户名username
- 密码password
- 经纪商编号brokerid
- 交易服务器地址td_address
- 行情服务器地址md_address
- 产品名称product_info
- 授权编码auth_code
 
#### 获取账号
在期货公司开户通过联系客户经理可以开通。用户名为纯数字经纪商编号也是4位纯数字。每个期货公司的经纪商编号都不同另外实盘账号也可以开通仿真交易功能同样需要联系客户经理。
 
### 飞马FEMAS
#### 如何加载
先从gateway上调用FemasGateway类然后通过add_gateway()函数添加到main_engine上。
```
from vnpy.gateway.femas import FemasGateway
main_engine.add_gateway(FemasGateway)
```
 
#### 相关字段
- 用户名username
- 密码password
- 经纪商编号brokerid
- 交易服务器地址td_address
- 行情服务器地址md_address
- 产品名称product_info
- 授权编码auth_code
 
#### 获取账号
在期货公司开户通过联系客户经理可以开通。用户名为纯数字经纪商编号也是4位纯数字。每个期货公司的经纪商编号都不同另外实盘账号也可以开通仿真交易功能同样需要联系客户经理。
 
### 中泰柜台(XTP)
#### 如何加载
先从gateway上调用XtpGateway类然后通过add_gateway()函数添加到main_engine上。
```
from vnpy.gateway.xtp import XtpGateway
main_engine.add_gateway(XtpGateway)
```
 
#### 相关字段
- 账号:
- 密码:
- 客户号": 1
- 行情地址:
- 行情端口": 0
- 交易地址:
- 交易端口": 0
- 行情协议: ["TCP", "UDP"]
- 授权码:
 
#### 获取账号
测试账号请联系中泰证券申请。
#### 其他特点
XTP是首家提供融资融券的极速柜台。
 
### 宽睿柜台(OES)
#### 如何加载
先从gateway上调用OesGateway类然后通过add_gateway()函数添加到main_engine上。
```
from vnpy.gateway.oes import OesGateway
main_engine.add_gateway(OesGateway)
```
 
#### 相关字段
- 用户名username
- 密码password
- 硬盘序列号hdd_serial
- 交易委托服务器td_ord_server
- 交易回报服务器td_rpt_server
- 交易查询服务器td_qry_server
- 行情推送服务器md_tcp_server
- 行情查询服务器md_qry_server
 
#### 获取账号
测试账号请联系宽睿科技申请
 
#### 其他特点
宽睿柜台提供内网UDP低延时组播行情以及实时成交信息推送。
 
### 华鑫奇点(TORA)
#### 如何加载
先从gateway上调用ToraGateway类然后通过add_gateway()函数添加到main_engine上。
```
from vnpy.gateway.tota import ToraGateway
main_engine.add_gateway(OesGateway)
```
 
#### 相关字段
- 账号: username
- 密码: password
- 交易服务器: td_address
- 行情服务器: md_address
 
#### 获取账号
测试账号请联系华鑫证券申请
 
### 盈透证券(IB)
#### 如何加载
先从gateway上调用IbGateway类然后通过add_gateway()函数添加到main_engine上。
```
from vnpy.gateway.ib import IbGateway
main_engine.add_gateway(IbGateway)
```
 
#### 相关字段
- TWS地址127.0.0.1
- TWS端口7497
- 客户号1
 
#### 获取账号
在盈透证券开户并且入金后可以获得API接入权限。拥有实盘账号后才可以申请开通仿真交易账号。
 
#### 其他特点
可交易品种几乎覆盖全球的股票、期权、期权;手续费相对较低。
注意IB接口的合约代码较为特殊请前往官网的产品查询板块查询VN Trader中使用的是盈透证券对于每个合约在某一交易所的唯一标识符ConId来作为合约代码而非Symbol或者LocalName。
 
### 易盛外盘(TAP)
#### 如何加载
先从gateway上调用TapGateway类然后通过add_gateway()函数添加到main_engine上。
```
from vnpy.gateway.tap import TapGateway
main_engine.add_gateway(TapGateway)
```
 
#### 相关字段
- 授权码auth code
- 行情账号quote username
- 行情密码quote password
- 行情地址123.15.58.21
- 行情端口7171
 
#### 获取账号
在TAP开户并且入金后可以获得API接入权限。
 
### 富途证券(FUTU)
#### 如何加载
先从gateway上调用FutuGateway类然后通过add_gateway()函数添加到main_engine上。
```
from vnpy.gateway.futu import FutuGateway
main_engine.add_gateway(FutuGateway)
```
 
#### 相关字段
- 地址127.0.0.1
- 密码:
- 端口11111
- 市场HK 或 US
- 环境TrdEnv.REAL 或 TrdEnv.SIMULATE
 
#### 获取账号
在富途证券开户并且入金后可以获得API接入权限。拥有实盘账号后才可以申请开通仿真交易账号。
 
### 老虎证券(TIGER)
#### 如何加载
先从gateway上调用TigerGateway类然后通过add_gateway()函数添加到main_engine上。
```
from vnpy.gateway.tiger import TigerGateway
main_engine.add_gateway(TigerGateway)
```
 
#### 相关字段
- 用户IDtiger_id
- 环球账户account
- 标准账户standard_account
- 秘钥private_key
 
#### 获取账号
在老虎证券开户并且入金后可以获得API接入权限。拥有实盘账号后才可以申请开通仿真交易账号。
 
### ALPACA
#### 如何加载
先从gateway上调用AlpacaGateway类然后通过add_gateway()函数添加到main_engine上。
```
from vnpy.gateway.alpaca import AlpacaGateway
main_engine.add_gateway(AlpacaGateway)
```
 
#### 相关字段
- KEY ID: key
- Secret Key: secret
- 会话数: 10
- 服务器:["REAL", "PAPER"]
#### 获取账号
在OKEX官网开户并且入金后可以获得API接入权限。
#### 其他特点
 
### BITMEX
#### 如何加载
先从gateway上调用BitmexGateway类然后通过add_gateway()函数添加到main_engine上。
```
from vnpy.gateway.bitmex import BitmexGateway
main_engine.add_gateway(BitmexGateway)
```
 
#### 相关字段
- 用户IDID
- 密码Secret
- 会话数3
- 服务器REAL 或 TESTNET
- 代理地址:
- 代理端口:
 
#### 获取账号
在BITMEX官网开户并且入金后可以获得API接入权限。
 
### OKEX现货OKEX
#### 如何加载
先从gateway上调用OkexGateway类然后通过add_gateway()函数添加到main_engine上。
```
from vnpy.gateway.okex import OkexGateway
main_engine.add_gateway(OkexGateway)
```
 
#### 相关字段
- API秘钥API Key
- 密码秘钥Secret Key
- 会话数3
- 密码passphrase
- 代理地址:
- 代理端口:
 
#### 获取账号
在OKEX官网开户并且入金后可以获得API接入权限。
 
### OKEX期货OKEXF
#### 如何加载
先从gateway上调用OkexfGateway类然后通过add_gateway()函数添加到main_engine上。
```
from vnpy.gateway.okexf import OkexfGateway
main_engine.add_gateway(OkexfGateway)
```
 
#### 相关字段
- API秘钥API Key
- 密码秘钥Secret Key
- 会话数3
- 密码passphrase
- 杠杆Leverage
- 代理地址:
- 代理端口:
 
#### 获取账号
在OKEX官网开户并且入金后可以获得API接入权限。
 
### 火币(HUOBI)
#### 如何加载
先从gateway上调用HuobiGateway类然后通过add_gateway()函数添加到main_engine上。
```
from vnpy.gateway.huobi import HuobiGateway
main_engine.add_gateway(HuobiGateway)
```
 
#### 相关字段
- API秘钥API Key
- 密码秘钥Secret Key
- 会话数3
- 代理地址:
- 代理端口:
 
#### 获取账号
在火币官网开户并且入金后可以获得API接入权限。
 
### 火币合约(HBDM)
#### 如何加载
先从gateway上调用HbdmGateway类然后通过add_gateway()函数添加到main_engine上。
```
from vnpy.gateway.hbdm import HbdmGateway
main_engine.add_gateway(HbdmGateway)
```
 
#### 相关字段
- API秘钥API Key
- 密码秘钥Secret Key
- 会话数3
- 代理地址:
- 代理端口:
 
#### 获取账号
在火币官网开户并且入金后可以获得API接入权限。
 
### BITFINEX
#### 如何加载
先从gateway上调用BitFinexGateway类然后通过add_gateway()函数添加到main_engine上。
```
from vnpy.gateway.bitfinex import BitfinexGateway
main_engine.add_gateway(BitfinexGateway)
```
 
#### 相关字段
- 用户IDID
- 密码Secret
- 会话数3
- 代理地址:
- 代理端口:
 
#### 获取账号
在BITFINEX官网开户并且入金后可以获得API接入权限。
 
### ONETOKEN
#### 如何加载
先从gateway上调用OnetokenGateway类然后通过add_gateway()函数添加到main_engine上。
```
from vnpy.gateway.onetoken import OnetokenGateway
main_engine.add_gateway(OnetokenGateway)
```
 
#### 相关字段
- Key秘钥OT Key
- 密码秘钥OT Secret
- 会话数3
- 交易所:["BINANCE", "BITMEX", "OKEX", "OKEF", "HUOBIP", "HUOBIF"]
- 账号:
- 代理地址:
- 代理端口:
 
#### 获取账号
在Onetoken官网开户并且入金后可以获得API接入权限。
 
 
### BINANCE
#### 如何加载
先从gateway上调用BinanceGateway类然后通过add_gateway()函数添加到main_engine上。
```
from vnpy.gateway.binance import BinanceGateway
main_engine.add_gateway(BinanceGateway)
```
 
#### 相关字段
- Key秘钥
- secret
- session_number(会话数)3
- proxy_host
- proxy_port
 
#### 获取账号
在BINANCE官网开户并且入金后可以获得API接入权限。
 
### RPC
#### 如何加载
RPC的加载涉及到服务端和客户端
- 服务端运行vntrader时加载rpc_service模块
```
from vnpy.app.rpc_service import RpcService
```
启动vntrader后首先连接外部交易交易如CTP然后点击菜单栏"功能"->"RPC服务",点击"启动"
- 客户端运行vntrader时加载RpcGateway
```
from vnpy.gateway.rpc import RpcGateway
```
启动vntrader后连接rpc接口即可。
#### 相关字段
在服务端和客户端,使用默认填好的参数即可
#### 获取账号
使用rpc无须额外申请账号只需要一个外部接口账号
#### 其他特点
rpc服务支持同一外部接口数据在本地多进程分发比如在服务端连接了ctp接口订阅了rb1910后客户端多个进程会自动订阅来自服务端分发的订阅数据# 交易接口