原创文章,转载请注明出处:用Python的交易员
窗口组件
双击vn.trader文件夹下的vtMain.py后,会看到以上的程序主窗口,无法双击的用户一般是Anaconda安装时的.py文件打开方式问题,右键vtMain.py后->打开方式->选择Anaconda文件夹下的python.exe后就可以打开。
在上一篇教程中设置好CTP接口的帐号密码等信息后,点击菜单上的系统->连接CTP即可连接到CTP柜台。算法交易等相关的功能会涉及数据库相关的操作,点击系统->连接数据库后vn.trader会自动连接上MongoDB数据库(需要将MongoDB注册为系统服务)。
窗口中间部分的组件均可以随意改变位置,也可以拖动变为顶层悬浮窗口,正常退出(点击右上方的X按钮)后会自动保存当前的窗口设置。最下方的状态栏显示了当前的CPU和内存使用率,便于监控当前的系统资源占用情况。
各组件的功能如下:
-
交易:发送和撤销交易委托、订阅行情等(参考下一章节)
-
行情:显示行情Tick数据推送
-
委托:显示委托回报相关的数据推送(注意视乎接口不同,大部分失败的委托并不会显示)
-
成交:显示成交相关的数据推送
-
持仓:显示持仓查询的数据结果(采用轮询查询的方式,非实时)
-
资金:显示账户资金查询的数据结果(采用轮询查询的方式,非实时)
-
错误:显示调用底层接口时由于操作失败触发的错误信息推送
-
日志:显示来自于系统内各个组件发出的日志信息
以上监控组件中均可以通过点击右键->保存内容的方式把表格中的内容保存到csv文件中,便于后续的统计和分析。
vn.trader文件夹下的VT_setting.json可以用来配置字体和数据库相关的设置。
交易委托
订阅行情
上图中的是交易组件,在代码框中输入要交易的合约后回车,名称框中会出现该合约对应的名称信息(如果没有请在日志组件中检查报错信息),同时会自动订阅该合约,后续该合约的行情数据更新也会刷新在右侧的价格梯度显示中。
委托发单
对于国内的交易柜台接口(如CTP、LTS、飞创等),用户只需填入方向类型、开平、价格、数量和价格类型即可。对于IB接口,由于其支持的合约数量和类型极多,还需要填入交易所、货币和产品类型的信息以确定唯一的合约。IB和OANDA接口可以忽略开平信息,因为国外的产品大多不允许锁仓交易(即多空会自动对冲,不会出现多单1手、空单1手的情况)。
委托信息输入完成后,点击发单即可发出委托。如果发单成功,则很快委托回报的推送更新会出现在委托监控组件中,如果没有回报则意味着发单失败,可以在错误监控或者日志监控中检查相应的报错信息。
委托撤单
点击交易组件上的全撤按钮后,会对当前的所有活动委托(未成交、部分成交)执行撤单操作。
双击委托监控组件中的某个单元格后,可以针对该单元格所显示的委托执行撤单操作。
快速平仓
双击持仓监控组件中的某个持仓后,会自动在交易组件中填充平仓相关的信息,用户可以输入价格后快速下单(这里为了预防某些大型机构不小心点击一键平仓后平仓委托把市场流动性全部吞噬,特意设计为了需要手动输入价格的方式)。
注意
注意对于期货而言,部分合约的英文字母采用大写(如IF1605),部分合约的英文字母采用小写(如au1606),具体可以在合约查询组件中查看(参考下一章节)。
对于Wind接口,由于监管的原因券商已经禁止了其交易功能的接入,因此只能订阅行情(包括一些交易柜台上无法提供的如行业指数等数据)。
合约查询
点击菜单栏的功能->查询合约后,可以看到如上图显示的窗口。该窗口中显示了目前已经连接的接口上允许交易的所有合约信息(目前IB接口的合约信息无法显示)。
合约代码中英文字母的大小写在vn.trader系统中是敏感的,在进行手动交易或者编写策略时需要注意,否则会出现委托失败的情况。
连接了新的接口后,可以右键->刷新来更新表格中显示的合约信息。
交易所目前采用的是各交易所官方网站的字母缩写形式,vn.trader系统中的具体对应关系如下:
缩写 | 交易所 |
---|---|
SSE | 上海证券交易所 |
SZSE | 深圳证券交易所 |
CFFEX | 中国金融期货交易所 |
SHFE | 上海期货交易所 |
CZCE | 郑州商品交易所 |
DCE | 大连商品交易所 |
SGE | 上海黄金交易所 |
HKEX | 香港交易所 |
SMART | IB的智能路由(股票、期权) |
GLOBEX | 芝加哥商品交易所的电子交易平台 |
IDEALPRO | IB的外汇ECN平台 |
OANDA | OANDA外汇平台 |
UNKNOWN | 未知(即以上以外的交易所) |