All Downloads are FREE. Search and download functionalities are using the official Maven repository.

quant.fans.provider.Provider Maven / Gradle / Ivy

The newest version!
package quant.fans.provider;

import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import quant.fans.Indicators;
import quant.fans.strategy.StrategyUtils;
import quant.fans.tools.Conditions;
import quant.fans.common.DateRange;
import quant.fans.common.StockConstants;
import quant.fans.common.Utils;
import quant.fans.model.*;
import quant.fans.tools.StockCategory;
import quant.fans.tools.StockList;

import java.util.*;

/**
 * 成交量,单位:手
 * 成交金额,单位:万
 * 总市值,单位:亿
 * 流通市值,单位:亿
 * 外盘,单位:手
 * 内盘,单位:手
 */
public class Provider {

    private static final Logger LOG = LoggerFactory.getLogger(Provider.class);

    private static Indicators indicators = new Indicators();

    /**
     * 获取指定时间段内的日线股票数据
     *
     * @param symbol stock symbol
     * @param startDate 格式:yyyyMMdd
     * @param stopDate  格式:yyyyMMdd
     * @return stock data list
     */
    public static List dailyData(String symbol, String startDate, String stopDate) {
        return DailyDataProvider.getFQ(symbol, startDate, stopDate);
    }

    public static List dailyData(String symbol,String startDate,String stopDate,boolean isFQ){
        if(isFQ){
            return DailyDataProvider.getFQ(symbol,startDate,stopDate);
        }else{
            return DailyDataProvider.get(symbol,startDate,stopDate);
        }
    }

    /**
     * 获取日线级别最近250天历史数据
     *
     * @param symbol stock symbol
     * @return stock data list
     */
    public static List dailyData(String symbol) {
        return dailyData(symbol, true);
    }

    /**
     * 获取日线级别最近250天历史数据
     * @param symbol stock symbol
     * @param isFQ is fq
     * @return stock data list
     */
    public static List dailyData(String symbol,boolean isFQ) {
        DateRange range = DateRange.getRange(250);
        return dailyData(symbol, range.start(), range.stop(),isFQ);
    }

    /**
     * 获取指定天数内的日线股票数据
     *
     * @param symbol stock symbol
     * @param period time period
     * @return stock data list
     */
    public static List dailyData(String symbol, int period) {
        return dailyData(symbol,period,true);
    }

    /**
     * 获取指定天数内的日线股票数据
     *
     * @param symbol stock symbol
     * @param period time period
     * @param isFQ is fq
     * @return stock data list
     */
    public static List dailyData(String symbol, int period,boolean isFQ) {
        DateRange dateRange = DateRange.getRange(period);
        return dailyData(symbol, dateRange.start(), dateRange.stop(),isFQ);
    }

    /**
     * 获取指数日线数据
     * 上证综指:0000001
     * 深证成指:1399001
     * 深证综指:1399106
     * 沪深300:0000300
     * 创业板指:1399006
     * 创业板综:1399102
     * 中小板指:1399005
     * 中小板综:1399101
     * @param symbol index symbol
     * @param startDate yyyyMMdd
     * @param stopDate yyyyMMdd
     * @return stock data list
     */
    public static List dailyDataZS(String symbol,String startDate,String stopDate){
        return DailyDataProvider.getZS(symbol, startDate, stopDate);
    }

    public static List dailyDataZS(String symbol,int period){
        DateRange dateRange = DateRange.getRange(period);
        return dailyDataZS(symbol, dateRange.start(), dateRange.stop());
    }

    public static List dailyDataZS(String symbol){
        DateRange dateRange = DateRange.getRange(250);
        return dailyDataZS(symbol, dateRange.start(), dateRange.stop());
    }

    /**
     * 获取实时数据股票数据
     * @param symbol stock symbol
     * @return stock data list
     */
    public static StockData realtimeData(String symbol) {
        return RealTimeDataProvider.get(symbol);
    }

    /**
     * 获取最新10天股票分钟级别数据
     *
     * @param symbol stock symbol
     * @param type   参数值:5,15,30,60
     * @return stock data list
     */
    public static List minuteData(String symbol, String type) {
        DateRange range = DateRange.getRange(120);//数据源不够30天
        List stockDataList = minuteData(symbol, range.start(), range.stop(), type);
        return stockDataList;
    }

    /**
     * 获取指定时间段内历史分钟级别数据,受数据源限制
     *
     * @param symbol stock symbol
     * @param startDate 格式:yyyyMMdd
     * @param stopDate  格式:yyyyMMdd
     * @param type 5,15,30,60
     * @return stock data list
     */
    public static List minuteData(String symbol, String startDate, String stopDate, String type) {
        return MinuteDataProvider.get(symbol, startDate, stopDate, type);
    }

    /**
     * 获取个股当日资金流数据
     * @param symbol stock symbol
     * @return stock data list
     */
    public static StockData moneyFlowData(String symbol) {
        return MoneyFlowDataProvider.get(symbol);
    }

    /**
     * 获取个股指定时间段内资金流数据,受数据源限制
     *
     * @param symbol stock symbol
     * @param startDate 格式:yyyyMMdd
     * @param stopDate  格式:yyyyMMdd
     * @return stock data list
     */
    public static List moneyFlowData(String symbol, String startDate, String stopDate) {
        return MoneyFlowDataProvider.get(symbol, startDate, stopDate);
    }

    /**
     * 大盘资金流向历史数据
     * @return stock data list
     */
    public static List moneyFlowDapanData() {
        return MoneyFlowDataProvider.getDapan();
    }

    /**
     * 获取今天、5日、10日行业版块资金流数据
     *
     * @param type 1,5,10
     * @return stock data list
     */
    public static List moneyFlowIndustryData(String type) {
        return MoneyFlowDataProvider.getIndustry(type);
    }

    /**
     * 获取今天、5日、10日行业版块资金流数据
     *
     * @param type 输入值:1,5,10
     * @return stock data list
     */
    public static List moneyFlowConceptData(String type) {
        return MoneyFlowDataProvider.getConcept(type);
    }

    /**
     * 获取今天、5日、10日行业版块资金流数据
     *
     * @param type 1,5,10
     * @return stock data list
     */
    public static List moneyFlowRegionData(String type) {
        return MoneyFlowDataProvider.getRegion(type);
    }

    /**
     * 历史财报
     *
     * @param symbol stock symbol
     * @param startDate 格式:yyyyMMdd
     * @param stopDate  格式:yyyyMMdd
     * @return stock data list
     */
    public static List financeData(String symbol, String startDate, String stopDate) {
        return FinanceDataProvider.get(symbol, startDate, stopDate);
    }

    /**
     * 最新一期财报数据
     * @param symbol stock symbol
     * @return stock data list
     */
    public static StockData financeData(String symbol) {
        DateRange range = DateRange.getRange(365);
        List stockDataList = FinanceDataProvider.get(symbol, range.start(), range.stop());
        if (stockDataList.size() >= 1) {
            return stockDataList.get(stockDataList.size() - 1);
        } else {
            return new StockData(symbol);
        }
    }

    /**
     * 股票年报数据
     * @param symbol stock symbol
     * @return stock data list
     */
    public static List financeYearData(String symbol) {
        return FinanceDataProvider.getYear(symbol);
    }

    /**
     * 获取最新一天股票逐笔数据
     *
     * @param symbol stock symbol
     * @return tick list
     */
    public static List tickData(String symbol) {
        return TickDataProvider.get(symbol);
    }

    /**
     * 获取指定日期逐笔股票数据
     *
     * @param symbol stock symbol
     * @param date   格式: yyyyMMdd
     * @return tick data list
     */
    public static List tickData(String symbol, String date) {
        String _date = Utils.formatDate(Utils.str2Date(date, "yyyyMMdd"), "yyyy-MM-dd");
        return TickDataProvider.get(symbol, _date);
    }

    /**
     * 获取股票版块数据
     * map key: 股票的版块分类名称,包含三项:概念,地区,行业
     * value: list是版块分类下的版块,每个版块包含一个股票列表
     * @return stock data list
     */
    public static Map> stockBlock() {
        return StockCategory.getCategory();
    }

    /**
     * 获取某个股票在大分类下的具体分类:概念,行业,地域
     * @param type category
     * @return stock data list
     */
    public static Map> stockCategory(String type) {
        return StockCategory.getStockCategory(type);
    }

    /**
     * 获取股票列表
     * @return stock data list
     */
    public static List stockList() {
        return StockList.getSymbols();
    }

    //计算是今天第几个bar,从1开始
    private static long getTimeSlot(long curTime, long startTime, int interval) {
        return (curTime - startTime) / interval;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy