Mosiki / tiger_quant

Java 实盘量化框架

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Tiger Quant

该量化框架是基于vnpy的一个java 版本实现,里面集成了一些量化基础功能,同时接入了老虎证券API接口。

环境准备

  • 支持Windows、Linux、Mac等常见操作系统。
  • JDK 1.8 及以上。

快速上手

1. 导出项目到本地

首先要把tiger_quant项目导入到本地IDE中(比如Idea),导入成maven项目。

2. 编写策略

tquant-algorithm 模块下实现自己的策略类(也可以直接运行示例策略)。一个简单的策略大致如下:

    public class BestLimitAlgo extends AlgoTemplate {

      public BestLimitAlgo() {
      }

      public BestLimitAlgo(Map<String, Object> settings) {
        super(settings);
      }

      @Override
      public void init() {
        this.direction = (String) settings.get("direction");
        this.volume = (Integer) settings.get("volume");
        this.symbol = (String) settings.get("symbol");
      }

      @Override
      public void onStart() {
        //
        barGenerator = new BarGenerator(bar -> onBar(bar));
        //订阅 AAPL 行情
        List<String> symbols = new ArrayList<>();
        symbols.add("AAPL");
        subscribe(symbol);
      }
    
      @Override
      public void onTick(Tick tick) {
    
      }
    
      private void buyBestLimit() {
        int orderVolume = volume - traded;
        orderPrice = lastTick.getBidPrice();
        if (orderPrice < 10) {
          buy(symbol, orderPrice, orderVolume, OrderType.LMT);
        }
      }
    
      private void sellBestLimit() {
        int orderVolume = volume - traded;
        orderPrice = lastTick.getAskPrice();
        if (orderPrice > 12) {
          sell(symbol, orderPrice, orderVolume, OrderType.LMT);
        }
      }
    
      @Override
      public void onOrder(Order order) {
        
      }
    
      @Override
      public void onTrade(Trade trade) {
      }
    
      @Override
      public void onBar(Bar bar) {
        log("onBar {}", bar);
      }
}

实现的策略类需要继承 AlgoTemplate类,这样即可调用封装好的一些方法,同时自动注入策略配置项。常用的封装方法包括:buy,sell等下单功能,onBar(K线),onOrder(订单),onTick(实时行情)等实时事件,还有一些券商封装的api接口以及日志功能等。

3. 完成对应的策略配置及券商接入配置

可以拷贝根目录下的2个配置模板,一个是algo_setting.json,对应的是策略参数。另一个是gateway_setting.json,对应老虎API的账号信息,完成对应配置即可(下面有详细的配置说明)。

4. 编译运行策略

在项目的根目录下执行如下mvn命令即可完成打包工作:

mvn -U clean install  -Dmaven.test.skip=true

等命令执行完成后,会在 tquant-bootstraptarget目录下生成可执行jar包:tquant-bootstrap-1.0.0-jar-with-dependencies.jar, 把该jar包以及algo_setting.jsongateway_setting.json拷贝到指定目录后,再通过执行如下命令即可运行策略:

    java -jar tquant-bootstrap-1.0.0-jar-with-dependencies.jar -a /yourpath/algo_setting.json -g /yourpath/tiger_gateway_setting.json

调试阶段也可以通过IDE来运行,通过配置TigerQuantBootstrap的启动参数即可。如在Idea编辑器里的配置如下: tquant-bootstrap

5. 停止执行策略

有些策略是在程序里自动退出的,也有一些策略是一直运行的,如想停止对应的策略,可以在命令行下执行ps命令查出项目运行的进程 pid,再执行kill命令停止策略运行。 kill命令执行时会同时执行项目的stop方法回调。

    ps -ef|grep TigerQuantBootstrap
    kill {pid}

配置说明

策略配置

策略配置文件:algo_setting.json

每个算法文件对应一个配置项,配置项的Key与策略Java文件名称要保持一致。 配置项中必填参数如下:

  • enable:是否启用该策略。true 启用,false 不启用

  • class:策略算法对应的文件全路径名

  • 其他参数为自选参数,在策略启动时会自动注册到策略中。

  • 配置实例

{
  "BestLimitAlgo": {
    "enable": false,
    "class":"com.tquant.algorithm.algos.BestLimitAlgo",
    "direction": "BUY",
    "volume": 100,
    "symbol": "00700"
  },
  "DmaAlgo": {
    "enable": false,
    "class":"com.tquant.algorithm.algos.DmaAlgo",
    "direction": "BUY",
    "price": 13.2,
    "volume": 100
  },
  "SpreadAlgo": {
    "enable": true,
    "class":"com.tquant.algorithm.algos.MacdAlgo",
    "symbol": "SPY",
    "bars": 100
  }
}

全局配置

全局配置文件名:global_setting.json , 在tquant-core模块 resources 目录下。

  • log.enable:是否开启日志开关。true 打开,false 关闭
  • log.level:日志级别,默认info级别。取值包括 error,warn,info
  • log.console:日志是否输出到控制台。true 输出到控制台,false 不输出到控制台
  • log.file:日志是否输出到文件。true 输出到文件,false 不输出到文件
  • log.path:日志输出到文件的路径。支持绝对路径和相对路径。默认当前项目下的log目录
  • storage.enable:是否开启持久化存储。true 开启,false 不开启
  • subscribe.enable: 是否开启API长连接订阅,默认为 false,开启后会通过长连接回调方法获取实时行情,交易订单变更,持仓和资产变更等。未开启的话可以通过API接口获取对应数据。
  • contract.load.enable: 是否在启动时开启合约加载,默认为 false,开启后会通过本地数据库加载全量合约,需要配合tquant-loader中的合约加载功能一块儿使用。

接入券商配置

目前只支持Tiger券商接口,配置文件名:gateway_setting.json

  • gateway:固定为TigerGateway
  • apiLogEnable:是否开启SDK的日志记录
  • apiLogPath:SDK日志文件输出路径,默认当前项目下的log目录

下面配置为开发者信息相关,需要先申请开发者账号,注册开发者账号地址:https://www.tigersecurities.com/openapi

  • tigerId:开发者账号ID

  • account:开发者交易账号,可以是老虎综合账号或模拟账号。

  • privateKey:开发者自己生成的RSA私钥

  • 配置实例

{
  "gateway": "TigerGateway",
  "apiLogEnable": true,
  "apiLogPath": "log/",
  "tigerId": "2015xxxx",
  "account": "20190419163707900",
  "privateKey": "MIICeQIBADANBgkqhkiG9w0BAQEFAASCAmMwggJfAgEAAoGBAL7..."
 }

外部依赖

ta4j

指标计算工具,包括常见的上百种指标计算。

问题反馈

使用上遇到任何问题,或有任何建议,欢迎在github上反馈,也欢迎加入官方QQ群:441334668。

About

Java 实盘量化框架


Languages

Language:Java 100.0%