背景
话说江湖盛传,程序化交易,得接口者得天下。为了解放人力,不再盯盘。编写自动化程序的思路有两个:1、是分析交易软件的app,利用hack的技术模拟下单 2、找到一个稳定靠谱的trade.dll活着tradex.dll
方案
最后两种方法我们都有实现,但总稳定性和接口的功能的完整性考虑出发,我们选择的第二种方案,GitHub - emeimonkey/ZMTradeService: 交易通股票程序化交易、普通行情、扩展行情、Level2行情及板块数据的WebSocket接口服务,支持委托单成交回报及行情数据推送!
简单的说,就是利用ZMTradeService在windows机器部署一台交易服务器,利用websocket进行通信,而我们所需要做的就是通过python写一个交易的client,用于其他场景的调用。
实现
由于券商接口本身是异步的形式,不太容易直接被上层策略所直接使用,因此这里的trade-client的主要功能就是将异步封装成同步接口,以下以下单为例:
下订单流程分:
1、下订单指令
2、代理服务器异步返回订单指令已经被成功下单到证券服务器端
3、代理服务器异步返回事件,订单指令已经成功被券商发送到交易市场
因此,trade-client需要合并以上多部操作,增加接口的简易性
整体需要考虑到的问题为:1、对象的单例 2、每个接口的超时异常抛出机制 3、内部状态的维护