docs/community/app/paper_account.md
PaperAccount是用于本地仿真交易的功能模块,用户可以通过其UI界面基于实盘行情进行本地化的模拟交易。
启动登录VeighNa Station后,点击【交易】按钮,在配置对话框中的【应用模块】栏勾选【PaperAccount】。
在启动脚本中添加如下代码:
# 写在顶部
from vnpy_paperaccount import PaperAccountApp
# 写在创建main_engine对象后
main_engine.add_app(PaperAccountApp)
在启动模块之前,请先连接要进行模拟交易的接口(连接方法详见基本使用篇的连接接口部分)。看到VeighNa Trader主界面【日志】栏输出“合约信息查询成功”之后再启动模块,如下图所示:
请注意,IB接口因为登录时无法自动获取所有的合约信息,只有在用户手动订阅行情时才能获取。因此需要在主界面上先行手动订阅合约行情,再启动模块。
交易接口连接后,本地模拟交易模块自动启动。此时所有合约的交易委托和撤单请求均被本地模拟交易模块接管,不会再发往实盘服务器。
在菜单栏中点击【功能】-> 【模拟交易】,或者点击左侧按钮栏的图标:
即可进入本地模拟交易模块的UI界面,如下图所示:
用户可以通过UI界面对以下功能进行配置:
市价委托和停止委托的成交滑点
模拟交易持仓盈亏的计算频率
下单后立即使用当前盘口撮合
清空所有持仓
本地模拟交易模块同样可以和其他策略应用模块(如CtaStrategy模块、SpreadTrading模块等)一起使用,从而实现本地化的量化策略仿真交易测试。
用户可以通过【查询合约】来查询确认合约的交易接口状态:
点击菜单栏的【帮助】->【合约查询】,在弹出的对话框中直接点击右上角的【查询】按钮,发现所有合约的【交易接口】列均显示为PAPER,如下图所示:
在对某一合约进行下单和撤单操作前,用户必须先订阅该合约的行情。
下图中【委托】、【成交】、【持仓】三个监控组件中显示的信息,其接口列均为PAPER(本地模拟数据):
请注意,本地模拟交易模块没有提供资金计算功能,所以【资金】组件显示的是实盘账号的资金,并不会因为在本地模拟交易模块产生的委托而改变。
本地模拟交易模块的业务逻辑如下所示:
支持的委托类型(不支持的类型会被拒单):
委托撮合规则采用到价成交模式,以买入委托为例:
委托成交时不考虑盘口挂单量,一次性全部成交;
委托成交后,先推送委托状态更新OrderData,再推送成交信息TradeData,和实盘交易中的顺序一致;
委托成交后,模块会自动记录相应的持仓信息PositionData:
数据的持久化保存: