BaseGateway
BaseGateway是抽象出来的网关基类,有两大类函数构成:
- on_xxx类型:回调内容包括事件、tick数据、成交数据、订单数据、持仓数据、账户数据、日志数据、合约数据,用于向上层推送已经按照vnpy内部标准封装好的数据对象
- 抽象函数:必须继承实现
- connect(self,setting:dict):连接接口,如果已经连接,则日志输出,成功连接后进行必要的查询操作
- close(self):
- subscribe(self,req:SubscribeRequest):订阅时必须传入vnpy标准订阅请求类参数
- send_order(self,req:OrderRequest):发单必须传入vnpy标准报单请求类参数,对于报单,有额外的要求
- 利用OrderRequest生成OrderData,即从报单请求生成报单数据
- 给OrderData赋值一个与接口类有关的unique_id
- 如果order已经发出,则更改报单状态为“已提交”,如果发送失败,则应该为“拒单”
- 利用on_order回调,send_order应返回OrderData.vt_orderid.
- cancel_order(self,reqs:Sequence[CancelRequest]):撤销一系列订单
- query_account(self):查询账户信息
- query_position(self):查询持仓信息
- query_history(self):查询历史信息?
- get_default_setting(self):返回默认配置。
整体逻辑
首先定义一个接口网关,将基类中的抽象方法实现一遍,不过这个接口网关实质是一个上层入口,实际功能包括连接等,需要由缓存着的真正的交易接口句柄实现。
- 初始化,缓存的对象包括,事件引擎、接口名称、外部交易接口
- connect(self,setting:dict):将setting中的信息读取,调用底层接口进行connect并初始化查询(持仓、账户信息、
- subscribe(self,req:SubscribeRequest):利用行情接口订阅行情。
- send_order(self,req:OrderReuquest)和cancel_order(self,CancelRequest):利用交易接口撤单
- query_account(self),query_position(self)
- close(self):关闭底层接口
- init_query(self):利用事件引擎定时轮询