Home

Awesome

Welcome to StarQuant

<p align="left"> <img src ="https://img.shields.io/badge/language-c%2B%2B%7Cpython-orange.svg"/> <img src ="https://img.shields.io/badge/c%2B%2B-%3E11-blue.svg"/> <img src ="https://img.shields.io/badge/python-3.7-blue.svg" /> <img src ="https://img.shields.io/badge/platform-linux%7Cwindows-brightgreen.svg"/> <img src ="https://img.shields.io/badge/build-passing-green.svg" /> <img src ="https://img.shields.io/badge/license-MIT-blue.svg"/> </p>

English

StarQuant(中文名:易数交易系统)是一个轻量的、面向个人( 普通)用户的综合量化交易回测系统,目前主要用于期货期权程序化交易(CTP接口,在实盘测试中),也支持股票交易功能(中泰xtp,宽睿oes接口,待测试和完善)。

当前进展 2022.10 更新回测版,见backtest 分支,支持了Pro版中回测的常用功能。

2020.12:完成1.0版本beta版本,在ctp实盘测试中:

1)对于流动性好,盘口大的品种非大笔交易下tick级回测与实盘的成交时间和价位一致;

2)无人工干预阿里云/腾讯云 7*24h连续工作,api柜台自动重连断开,行情自动记录,策略自动初始化、开始和停止;

功能特色

PRO版特点

注:目前开源的代码具备了从回测到实盘交易的所有基础功能,也展示了系统的原型和框架,方便在此基础上二次开发和定制,定制化的代码(pro版)目前开源了部分功能,部分功能暂未开源,后期如果star数量较多时(1k以上)可以考虑开源。

系统架构

系统主框架基于c++实现,采用c-s架构,回测具有事件驱动模式和向量化两种模式,采用模块化松耦合设计,服务端的行情,交易、数据记录为单独线程,服务端与gui界面、策略之间的进程通信采用消息队列方式(nanomsg)或共享内存(基于功夫易筋经),行情数据可以通过相关端口以消息形式转发到策略进程,策略下单操作也通过相关端口将指令转发到服务端,然后调用相关柜台api,行情api支持CTP,TAP等,数据可以记录到本地(csv文件或Mongodb数据库),策略可以采用python或c++实现。GUI是基于PyQt5,支持手动交易,策略交易,委托持仓账号等信息查看。

开发环境

本系统在开发过程中参考了已有的开源软件vnpy,kungfu等。 主要开发环境:

(1) Manjaro(arch,Linux内核4.14),python 3.8,gcc 9

(2) Ubuntu20.04,

(3) Windows 10 ,vs2019

第三方库: (1)需要系统安装:boost,libmongoc-1.0

(2)需要系统安装或者自行编译cppsrc/ 下的 nanomsg 1.0, log4cplus 2.04,yaml-cpp,fmt5.3, ta-lib,

(3)python依赖psutil,pyyaml, pyqt, qdarkstyle等包,见backtest分支下的requirement.txt

运行

首先需要编译完成cppsrc下的库,需要事先安装boost,nanomsg以及CTP,TAP等柜台api的动态链接库。 编译过程和原项目类似,使用 CMake 进行编译:

$ cd cppsrc
$ mkdir build
$ cd build
$ cmake ..
$ make

编译完成后将cppsrc/build/StarQuant下的可执行文件apiserver.exe拷贝到主目录运行即可启动服务端, gui界面执行gui.py即可启动,运行strategy.py可启动单独的策略进程,运行recorder.py可启动行情记录进程。

编写约定


c++参考google 的c++ guide, cpplint检查;

python 采用flake8检查,autopep8格式化;

变量命名:类名采用驼峰式,单词首字母大写,不包含_字符;类成员变量字母一般小写,后加_,如data_,全局变量加g_修饰,函数一般大小写混合形式。

使用说明


品种符号约定: 采用全名的形式:交易所 类型 商品名 合约,如SHFE F RB 1905 对于ctp,程序内部api会转换为对应的简写形式,rb1905, 行情、交易、策略之间消息传递的格式:消息头|消息内容 消息头:目的地|源地址|类型,类型有:

消息内容:对应类型的数据

Demo


TODO

本系统完成了版本1.0的beta版本,正在实盘测试中,同时在完善c++回测、向量化回测,cli界面。