weili交易系统开发日志

(2019年持续更新中… 最近一次更新日期 2020.07.26)

写在前面

所谓的“量化交易”,仁者见仁智者见智,但不管怎么看,停留在概念上的认识都是没有任何意义。
与其没有实用地谈论,不如自己动手做一下。一直以来自己想做个交易客户端,这个客户端可以实现期货或股票的委托下单功能,还能结合具体的交易策略进行自动交易。
不奢望能通过这个交易系统挣很多钱,“不挣那么多,只挣一点点。”
所以就叫**“weili”交易系统。weili 即有“微利”之意,同时也希望能有“威力”**。
做为个人开发的软件项目,整个过程实在做的过程中不断渐进明细,没有宏伟的计划,但必须持续更新,不断进步。

系统功能

weili交易系统的基本功能包括:行情采集(QuoteUnit)、订单生成(StrategeUnit)、风险监控(RiskUnit)、下单委托(TradeUnit) 等
【更新】 将QuoteUnit与TradeUnit合并为一个QuoteTrade程序,提高程序的集成度,下一步可以考虑将Risk和QuoteTrade合并成一个统一的程序,但需要处理好进程问题。
另外,不再做Linux版本,专注于Qt开发界面,先把Windows的程序开发好,并做好版本管理。(2020.07.26)

行情采集 QuoteUnit

目前主要采集期货的行情数据,采集的方式用 Qt C++实现上期技术的CTP的行情接口。

  1. 在Simnow环境下获取指定合约的Tick数据, 行情数据写入数据 20190911 已完成
  2. 按1分钟,5分钟,10分钟,15分钟,30分钟, 60分钟,1天的设置时间轴参数 20190927完成
  3. 生成K线数据的存储过程开发完成 20190930
  4. 将分为Windows 和 Linux 两个版本 , Windows 版写入Oracle数据库, Linux 版(QuoteSim)写入 MySql 数据库 ,开发完成 2019.11.01
    (QuoteUnit Ver.20200726 不在更新)

下单委托 TradeUnit

以期货交易为目前的主要交易方向,通过实现上期技术的CTP或恒生的UFX接口,用QT C++开发交易客户端。

1. CTP C++接口开发

  1. 在Simnow环境(6.3.13)下 和 中粮期货仿真环境(6.3.15)下 看穿认证 2019.09.02 已调试完成
  2. 实盘环境下下单委托模块 开发完成 2019.11.01
    (TradeUnit Ver.20200726 不在更新)

行情委托 QuoteTrade

将QuoteUnit 和TradeUnit整合在一起,提高行情订阅和下单委托的效率,减少下单读取行情的延时,行情订阅500ms间隔,下单委托读取数据库的最新行情后做策略判断再调用下单接口,500~1000ms,加上1-2个滑点,时间成本是1-1.5s 价格成本是1-2个滑点。(2020.07.26)

Ver.20200403

  1. 行情订阅
  2. 交易策略
  3. 下单委托

风险监控 RiskUnit

目前主要采集期货账户的持仓和资金数据进行风险监控,采集的方式用 Qt C++实现上期技术的CTP的行情接口。

1. 账户资金监控

ReqQryTradingAccount 请求查询资金账户
OnRspQryTradingAccount 回调资金账户信息
SaveAccount 资金信息入库
2019.12.10 开发完成

2. 报单信息监控

ReqQryOrder 请求查询报单
OnRspQryOrder 回调报单信息
SaveOrderReturn 报单信息入库
2019.12.26 开发完成

3. 成交信息监控

ReqQryTrade 请求查询成交
OnRspQryTrade 回调成交信息
SaveTradeInfo 成交信息入库
2019.12.22 开发完成

4. 持仓信息监控

ReqQryInvestorPosition 请求查询持仓
OnRspQryInvestorPosition 回调持仓信息
SavePosition 持仓信息入库
2019.11.30 开发完成

交易策略 StrategeUnit

继续借鉴量化平台上的交易策略,并以自己开发的回测程序为主要开发内容,增加了回测程序,包括:择时回测和择股回测。2020年将加强交易策略开发和回测模拟,交易策略是交易系统的核心
(2020.07.26)

1. 量化平台使用

  1. 掘金量化平台入门使用,交易策略研究,仿真交易, Pycharm调用API仿真测试 2019.08.30 完成
  2. 聚宽量化平台策略使用, 内日ATR波动策略 2020.01.07

2. 实盘订单生成

  1. Python 读取 MySql 实盘行情数据
  2. 自动订单生成(Python版) 2020.01.07

3. 选股回测 BtPickStock

这是一个Python的股票回测程序

  1. 数据库连接

开发进度

实盘环境

操作系统:Windows Sever 2008 R2 64 bit
接口: CTP 6.3.15 Windows64
数据库: Oracle 11g

  1. QuoteUnit 2019.11
  2. TradeUnit 2019.11
  3. RiskUnit 2019.11
  4. StrategeUnit 2019.11

Simnow

操作系统: Windows Sever 2012 64 bit
接口: CTP 6.3.13 Windows64
数据库: Oracle 11g

  1. QuoteSim 2019.11
  2. TradeSim 2019.11
  3. RiskSim 2019.11
  4. StrategeSim 2019.11
  5. QuoteTrade 2020.03

实盘收益

  1. 手动下单 2019.09.21 ~ 2020.03.31 整体收益 -85% ,亏损了85%, 目前已停止了实盘的手动下单

  2. 自动下单
    Simnow 测试2020.04.03 ~ 2020.04.30 权益变化 -5%,自动交易测试已停止。

CTPapi_交易开发实例 class CTraderSpi : public CThostFtdcTraderSpi { public: ///当客户端与交易后台建立起通信连接时(还未登录前),该方法被调用。 virtual void OnFrontConnected(); ///登录请求响应 virtual void OnRspUserLogin(CThostFtdcRspUserLoginField *pRspUserLogin, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast); ///投资者结算结果确认响应 virtual void OnRspSettlementInfoConfirm(CThostFtdcSettlementInfoConfirmField *pSettlementInfoConfirm, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast); ///请求查询合约响应 virtual void OnRspQryInstrument(CThostFtdcInstrumentField *pInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast); ///请求查询资金账户响应 virtual void OnRspQryTradingAccount(CThostFtdcTradingAccountField *pTradingAccount, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast); ///请求查询投资者持仓响应 virtual void OnRspQryInvestorPosition(CThostFtdcInvestorPositionField *pInvestorPosition, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast); ///报单录入请求响应 virtual void OnRspOrderInsert(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast); ///报单操作请求响应 virtual void OnRspOrderAction(CThostFtdcInputOrderActionField *pInputOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast); ///错误应答 virtual void OnRspError(CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast); ///当客户端与交易后台通信连接断开时,该方法被调用。当发生这个情况后,API会自动重新连接,客户端可不做处理。 virtual void OnFrontDisconnected(int nReason); ///心跳超时警告。当长时间未收到报文时,该方法被调用。 virtual void OnHeartBeatWarning(int nTimeLapse); ///报单通知 virtual void OnRtnOrder(CThostFtdcOrderField *pOrder); ///成交通知 virtual void OnRtnTrade(CThostFtdcTradeField *pTrade); private: ///用户登录请求 void ReqUserLogin(); ///投资者结算结果确认 void ReqSettlementInfoConfirm(); ///请求查询合约 void ReqQryInstrument(); ///请求查询资金账户 void ReqQryTradingAccount(); ///请求查询投资者持仓 void ReqQryInvestorPosition(); ///报单录入请求 void ReqOrderInsert(); ///报单操作请求 void ReqOrderAction(CThostFtdcOrderField *pOrder); // 是否收到成功的响应 bool IsErrorRspInfo(CThostFtdcRspInfoField *pRspInfo); // 是否我的报单回报 bool IsMyOrder(CThostFtdcOrderField *pOrder); // 是否正在交易的报单 bool IsTradingOrder(CThostFtdcOrderField *pOrder); };
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值