一个用scala 实现的交易平台系统,支持多语言(C#, PYTHON, JAVA, R, MATLAB)编写策略,支持实盘
引擎采用Scala 语言,基于Akka 架构编写,并完全采用开源化管理方案。系统可以构建在桌面系统和云服务器上。 设计目标是采用Actor模型,提供一种大数据下,高并发计算的股票算法交易方案。系统采用JDK1.8,支持LINUX, WINDOWS, MAC OS等平台。 引擎分为服务器端和客户端两个部分组成。客户端请参见quant4s-sdk。
服务器端的主要功能接收数据,高并发的指标计算。 客户端的主要功能,根据服务器提供计算好的数据判断买卖点,下单交易。
quant4s 可以胜任绝大多数的策略应用场合,但是对ns级别的高频力不从心,除此之外的策略,quant4s 都游刃有余。
更详细的内容参见WIKI
一个策略的实盘分为 3个部分。
- 数据源采集
- 数据的分析和计算,为策略快速提供计算后的数据
- 根据 数据 判断买卖点,下单交易。
1 方便的接入各种数据源;2 高效提供指标数据计算、模式匹配,是本项目的核心价值。项目提供了交易功能,同时也让用户可以选择使用其他各种语言编写的交易通道。
参见知乎
- 采用了分布式部署,将策略和引擎从物理层上分离。引擎部署在服务器端,策略部署在客户端,使得执行多个策略成为可能。
- 采用Actor模型,实现了高并发的计算,让多指标、大数据量计算不在成为性能的瓶颈
- 将指标的计算从客户端转移到服务器端,在应用层实现了指标的共享,降低了策略开发的难度
- 优雅的实现了跨周期策略的直接支持, 可以直接指定技术指标的数据推送的周期,参见SDK
- 完美的提供了多语言的支持。只要语言可以访问http,可以支持zeromq,那么这种语言就可以用来编写策略
- 优美的指标框架,可以很方便的扩展自己的技术指标
- 提供了作业机制,可用于定期作业。比如(每天早上 9:00 推送历史数据分钟线,保证当天计算技术指标的连续性
- 集成选股框架,让策略选股更容易
- 完善系统监控界面
- 安装zeroMQ, 参见 http://zeromq.org/ ,
- 克隆,编译,运行项目
git clone https://github.com/quant4s/quant4s
mvn compile
sh run.sh [linux]
- 从Brokerage派生之类
- 修改TradeRouteActor._init, 增加支持
- 参照 SinaL1Actor, 构建Actor
- 修改配置文件application.conf, 可同时支持多个数据源(不同的数据, 如果数据相同,在Tick级别时可能会报错)。