# JQuant **Repository Path**: chenpengw/JQuant ## Basic Information - **Project Name**: JQuant - **Description**: JQuant是使用java语言编写的量化开发工具箱,使用JQuant可以获取股票数据,及各种常用指标和策略的计算。方便Java爱好者进行量化投资研究。 QQ群:281599099,项目迁移到新地址,https://github.com/eryk/squant - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 17 - **Created**: 2020-03-09 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # JQuant # 项目迁移 JQuant已经停止更新,请使用全新的SQuant项目,新项目是JQuant的升级版本,包含JQuant所有功能,并在JQuant基础上增加了回测和交易等功能,使用scala开发与java兼容 新项目地址:https://github.com/eryk/squant # [changelog](https://github.com/eryk/JQuant/wiki#changelog) # Maven依赖 ```xml net.jquant JQuant 0.1 oss https://oss.sonatype.org/content/groups/public/ ``` # 示例 ```java package quant.fans; import quant.fans.model.StockData; import java.util.List; public class Main { public static void main(String[] args) { Quants quants = new Quants(); //获取股票列表 List list = quants.data.stockList(); for (String stock : list) { //StockData代表一个时间片的数据,例如日线级别,每个StockData为一天收盘后的股票数据 List stockDatas = quants.data.dailyData(stock); //剔除交易数据小于60天的股票 if (stockDatas == null || stockDatas.size() < 60) { continue; } //indicator包含常用指标的计算 quants.indicator.macd(stockDatas); //获取5、10、20、30、40、60均线,也可以通过sma(stockDatas,ma)获取指定时间间隔的均线 quants.indicator.sma(stockDatas); quants.indicator.boll(stockDatas); quants.indicator.kdj(stockDatas); //strategy包含简单的策略计算,例如macd金叉 quants.strategy.macdCross(stockDatas); quants.strategy.kdjCross(stockDatas); quants.strategy.goldenSpider(stockDatas); quants.strategy.bollThroat(stockDatas); for (StockData stockData : stockDatas) { System.out.println(stockData); } } } } ``` # API ## 初始化 > Quants quants = new Quants(); `StockData`表示股票的一个时间片的数据,继承自LinkedHashMap,存储属性名称和double类型数值。 ```java StockData stockData = Provider.realtimeData("000001"); System.out.println("股票名称:" + stockData.name); System.out.println("股票代码:" + stockData.symbol); for(Map.Entry data : stockData.entrySet()){ System.out.println(data.getKey() + "=" + data.getValue()); } ``` 不同Provider返回的StockData的数据项不同,具体信息查询[字段说明](https://github.com/eryk/JQuant/wiki/StockData%E5%AD%97%E6%AE%B5%E8%AF%B4%E6%98%8E) ## 股票数据 quants.data net.jquant.provider包提供了股票相关的数据获取类 ### Provider列表如下: * DailyDataProvider:日线级别数据 * MinuteDataProvider:分钟级别股票数据,可获得5、15、30、60分钟级别股票数据 * RealTimeDataProvider:实时股票数据 * StockIndexDataProvider:指数实时行情数据 * TickDataProvider:股票逐笔数据 * TopListDataProvider:龙虎榜数据 * ReportDataProvider:研报数据 * ReferenceDataProvider:分红数据 * MoneyFlowDataProvider:股票资金流数据 * FinanceDataProvider:个股财务报表数据 > net.jquant.provider.Provider类里的static方法汇总了全部provider方法,一般情况,使用Provider类就可以满足数据查询需求。 ## 股票列表 quants.stocks `StockList` 用于获取股票列表,并提供一些过滤和处理接口对股票进行筛选。 ## 指标计算 quants.indicator `net.jquant。Indicators` 是对[Ta-lib](http://ta-lib.org/function.html)库的封装,提供常用指标计算,返回StockData list对象。同时也提供了一些Ta-lib没有的指标计算。 支持的指标包括: * sma:简单移动平均线 * ema:指数移动平均线 * dma:平均线差 * macd:指数平滑异同平均线 * boll:布林线 * kdj:随机指标 * rsi:强弱指标 * sar:抛物线指标或停损转向操作点指标 * adx:平均趋向指数 * adxr:趋向指标 * cci:顺势指标 * mfi:资金流量指标 * obv:能量潮又称为平衡交易量 * roc:变动率指标 * rocP:Rate of change Percentage: (price-prevPrice)/prevPrice * trix:三重指数平滑平均线 * willR:威廉指标 * ad:收集派发摆荡指标 * aroon:阿隆指标 * aroonOsc:Aroon Oscillator * bop:均势指标 * kama:适应性移动平均线 * trima:三角移动平均线 ## 策略计算 quants.strategy * `StragegyUtils` 常用策略 * `TDXFunction` 通达信常用指标