stockapi(官网:https://www.stockapi.com.cn)是一个专业的股票数据分析与量化交易接口平台,主要提供以下几类服务:

一、核心功能与服务内容

  1. 股票API接口服务

    • 提供稳定可靠的API接口,支持多种编程语言(如Java、Python、C#、JavaScript、C++)调用。
    • 支持实时行情、历史数据、技术指标等多种数据类型。
  2. 技术指标数据

    • 包括MACD、KDJ、WR、CCI、BOLL(布林带)、MA(均线)等常用技术指标。
    • 支持不同周期(日线、周线、月线、季线、半年线、年线)和复权方式(前复权、后复权、不复权)。
  3. 实时与历史行情数据

    • 提供股票历史日线行情查询,支持指定股票代码和日期范围。
    • 提供分时数据、分时KDJ数据等高频数据接口。
  4. Level2实时行情数据

    • 提供逐笔成交、逐笔委托、十档行情等高级行情数据,帮助用户把握市场动态。
  5. 量化交易策略回测

    • 提供专业的策略回测系统,支持用户自定义交易策略并进行历史数据回测验证。
  6. AI智能选股

    • 基于人工智能技术,提供智能选股策略,帮助用户分析市场趋势。
  7. 资金流向与游资数据分析

    • 提供全面的资金流向分析,实时追踪主力资金和游资动向。
  8. 龙虎榜数据

    • 提供每日龙虎榜数据查询,帮助用户分析市场热点和主力资金动向。
  9. 集合竞价数据

    • 提供个股和板块的集合竞价数据,帮助用户把握开盘前的市场动向。

二、接口使用示例

以Python调用stockapi接口为例,用户可以通过简单的HTTP请求获取数据:

import requests

token = '你的token'
url = f'https://www.stockapi.com.cn/v1/quota/ma2?token={token}&code=600004&startDate=2021-10-22&endDate=2021-10-22&ma=5,10,20&calculationCycle=100'

response = requests.get(url)
if response.status_code == 200:
    data = response.json()
    print(data)
else:
    print(f'请求失败,状态码:{response.status_code}')

三、适用人群与场景

  • 量化交易开发者:提供丰富的技术指标和历史数据,便于策略开发与回测。
  • 金融分析师:提供实时行情和资金流向数据,辅助市场分析与决策。
  • 个人投资者:通过AI选股和龙虎榜数据,辅助投资决策。

四、免责声明与风险提示

stockapi平台明确指出,所有免费及收费信息和数据仅供参考,不构成投资建议,用户需自行承担使用数据带来的风险。

综上所述,stockapi是一个功能全面、数据丰富的股票数据服务平台,适合量化交易、金融分析和投资决策等多种场景使用。

后端使用Java编写,可以搞高并发访问

@GetMapping("/v1/checkLive")
    public String checkLive() {
        return "success";
    }

    @ApiOperation(value = "日线macd数据查询")
    @GetMapping("/v1/quota/macd")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "vipCycleFlag", value = "是否需要返回所有周期数据,1:是;0:否。有token用户可以传", defaultValue = "0", dataType = "Long", example = "0", required = false),
            @ApiImplicitParam(name = "token", value = "请求的token", dataType = "String", required = false),
            @ApiImplicitParam(name = "code", value = "股票代码,格式:601088", dataType = "String", required = true),
            @ApiImplicitParam(name = "date", value = "交易时间,格式:2022-07-08", dataType = "String", required = true),
            @ApiImplicitParam(name = "longCycle", value = "长期周期,默认值26", defaultValue = "26", example = "26", dataType = "Long", required = false),
            @ApiImplicitParam(name = "shortCycle", value = "短期周期,默认值12", defaultValue = "12", example = "12", dataType = "Long", required = false),
            @ApiImplicitParam(name = "cycle", value = "周期,默认值9", defaultValue = "9", dataType = "Long", example = "9", required = false),
            @ApiImplicitParam(name = "rehabilitation", value = "复权方式:100-不复权;101-后复权;102-前复权", defaultValue = "100", example = "100", dataType = "Long", required = false),
            @ApiImplicitParam(name = "calculationCycle", value = "周期:100-日;101-周;102-月;103-季;104-半年;105-年;", defaultValue = "100", example = "100", dataType = "Long", required = false)
    })
    public Result macd(
            HttpServletRequest request,
            @RequestParam(value = "token", required = false) String token,
            @RequestParam(value = "vipCycleFlag", defaultValue = "0") Integer vipCycleFlag,
            @RequestParam String code,
            @RequestParam String date,
            @RequestParam(value = "longCycle", defaultValue = "26") Integer longCycle,
            @RequestParam(value = "shortCycle", defaultValue = "12") Integer shortCycle,
            @RequestParam(value = "cycle", defaultValue = "9") Integer cycle,
            @RequestParam(value = "rehabilitation", defaultValue = "100") Integer rehabilitation,
            @RequestParam(value = "calculationCycle", defaultValue = "100") Integer calculationCycle) {
        try {
            return thsService.macd(token, vipCycleFlag, code, date, longCycle, shortCycle, cycle, rehabilitation,
                    calculationCycle);
        } catch (Exception e) {
            log.error("Exception:{}", e);
            return ResponseEnum.code_20000.result();
        }
    }

    @ApiOperation(value = "日线macd数据查询2")
    @GetMapping("/v1/quota/macd2")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "code", value = "股票代码,格式:601088", dataType = "String", required = true),
            @ApiImplicitParam(name = "startDate", value = "交易时间,格式:2022-07-08", dataType = "String", required = true),
            @ApiImplicitParam(name = "endDate", value = "交易时间,格式:2022-07-08", dataType = "String", required = true),
            @ApiImplicitParam(name = "longCycle", value = "长期周期,默认值26", defaultValue = "26", example = "26", dataType = "Long", required = false),
            @ApiImplicitParam(name = "shortCycle", value = "短期周期,默认值12", defaultValue = "12", example = "12", dataType = "Long", required = false),
            @ApiImplicitParam(name = "cycle", value = "周期,默认值9", defaultValue = "9", dataType = "Long", example = "9", required = false),
            @ApiImplicitParam(name = "rehabilitation", value = "复权方式:100-不复权;101-后复权;102-前复权", defaultValue = "100", example = "100", dataType = "Long", required = false),
            @ApiImplicitParam(name = "calculationCycle", value = "周期:100-日;101-周;102-月;103-季;104-半年;105-年;", defaultValue = "100", example = "100", dataType = "Long", required = false)
    })
    public Result macd2(
            HttpServletRequest request,
            @RequestParam String code,
            @RequestParam String startDate,
            @RequestParam String endDate,
            @RequestParam(value = "longCycle", defaultValue = "26") Integer longCycle,
            @RequestParam(value = "shortCycle", defaultValue = "12") Integer shortCycle,
            @RequestParam(value = "cycle", defaultValue = "9") Integer cycle,
            @RequestParam(value = "rehabilitation", defaultValue = "100") Integer rehabilitation,
            @RequestParam(value = "calculationCycle", defaultValue = "100") Integer calculationCycle) {
        try {
            return thsService.macd2(code, startDate, endDate, longCycle, shortCycle, cycle, rehabilitation,
                    calculationCycle);
        } catch (Exception e) {
            log.error("Exception:{}", e);
            return ResponseEnum.code_20000.result();
        }
    }

    @ApiOperation(value = "日线kdj数据查询")
    @GetMapping("/v1/quota/kdj")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "token", value = "请求的token", dataType = "String", required = false),
            @ApiImplicitParam(name = "vipCycleFlag", value = "是否需要返回所有周期数据,1:是;0:否。有token用户可以传", defaultValue = "0", dataType = "Long", example = "0", required = false),
            @ApiImplicitParam(name = "code", value = "股票代码,格式:601088", dataType = "String", required = true),
            @ApiImplicitParam(name = "date", value = "交易时间,格式:2022-07-08", dataType = "String", required = true),
            @ApiImplicitParam(name = "cycle", value = "周期,默认值9", defaultValue = "9", example = "9", dataType = "Long", required = false),
            @ApiImplicitParam(name = "cycle1", value = "周期1,默认值3", defaultValue = "3", example = "3", dataType = "Long", required = false),
            @ApiImplicitParam(name = "cycle2", value = "周期2,默认值3", defaultValue = "3", example = "3", dataType = "Long", required = false),
            @ApiImplicitParam(name = "rehabilitation", value = "复权方式:100-不复权;101-后复权;102-前复权", defaultValue = "100", example = "100", dataType = "Long", required = false),
            @ApiImplicitParam(name = "calculationCycle", value = "周期:100-日;101-周;102-月;103-季;104-半年;105-年;", defaultValue = "100", example = "100", dataType = "Long", required = false)
    })
    public Result kdj(
            HttpServletRequest request,
            @RequestParam(value = "token", required = false) String token,
            @RequestParam(value = "vipCycleFlag", defaultValue = "0") Integer vipCycleFlag,
            @RequestParam String code,
            @RequestParam String date,
            @RequestParam(value = "cycle", defaultValue = "9") Integer cycle,
            @RequestParam(value = "cycle1", defaultValue = "3") Integer cycle1,
            @RequestParam(value = "cycle2", defaultValue = "3") Integer cycle2,
            @RequestParam(value = "rehabilitation", defaultValue = "100") Integer rehabilitation,
            @RequestParam(value = "calculationCycle", defaultValue = "100") Integer calculationCycle) {
        try {
            return thsService.kdj(token, vipCycleFlag, code, date, cycle, cycle1, cycle2, rehabilitation,
                    calculationCycle);
        } catch (Exception e) {
            log.error("Exception:{}", e);
            return ResponseEnum.code_20000.result();
        }
    }

    @ApiOperation(value = "日线kdj数据查询")
    @GetMapping("/v1/quota/kdj2")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "code", value = "股票代码,格式:601088", dataType = "String", required = true),
            @ApiImplicitParam(name = "startDate", value = "交易时间,格式:2022-07-08", dataType = "String", required = true),
            @ApiImplicitParam(name = "endDate", value = "交易时间,格式:2022-07-08", dataType = "String", required = true),
            @ApiImplicitParam(name = "cycle", value = "周期,默认值9", defaultValue = "9", example = "9", dataType = "Long", required = false),
            @ApiImplicitParam(name = "cycle1", value = "周期1,默认值3", defaultValue = "3", example = "3", dataType = "Long", required = false),
            @ApiImplicitParam(name = "cycle2", value = "周期2,默认值3", defaultValue = "3", example = "3", dataType = "Long", required = false),
            @ApiImplicitParam(name = "rehabilitation", value = "复权方式:100-不复权;101-后复权;102-前复权", defaultValue = "100", example = "100", dataType = "Long", required = false),
            @ApiImplicitParam(name = "calculationCycle", value = "周期:100-日;101-周;102-月;103-季;104-半年;105-年;", defaultValue = "100", example = "100", dataType = "Long", required = false)
    })
    public Result kdj2(
            HttpServletRequest request,
            @RequestParam String code,
            @RequestParam String startDate,
            @RequestParam String endDate,
            @RequestParam(value = "cycle", defaultValue = "9") Integer cycle,
            @RequestParam(value = "cycle1", defaultValue = "3") Integer cycle1,
            @RequestParam(value = "cycle2", defaultValue = "3") Integer cycle2,
            @RequestParam(value = "rehabilitation", defaultValue = "100") Integer rehabilitation,
            @RequestParam(value = "calculationCycle", defaultValue = "100") Integer calculationCycle) {
        try {
            return thsService.kdj2(startDate, endDate, code, cycle, cycle1, cycle2, rehabilitation, calculationCycle);
        } catch (Exception e) {
            log.error("Exception:{}", e);
            return ResponseEnum.code_20000.result();
        }
    }

    @ApiOperation(value = "日线wr数据查询")
    @GetMapping("/v1/quota/wr")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "code", value = "股票代码,格式:601088", dataType = "String", required = true),
            @ApiImplicitParam(name = "date", value = "交易时间,格式:2022-07-08", dataType = "String", required = true),
            @ApiImplicitParam(name = "cycle1", value = "周期,默认值10", defaultValue = "10", example = "10", dataType = "Long", required = false),
            @ApiImplicitParam(name = "cycle2", value = "周期,默认值6", defaultValue = "6", example = "6", dataType = "Long", required = false),
            @ApiImplicitParam(name = "rehabilitation", value = "复权方式:100-不复权;101-后复权;102-前复权", defaultValue = "100", example = "100", dataType = "Long", required = false),
            @ApiImplicitParam(name = "calculationCycle", value = "周期:100-日;101-周;102-月;103-季;104-半年;105-年;", defaultValue = "100", example = "100", dataType = "Long", required = false)
    })
    public Result wr(
            HttpServletRequest request,
            @RequestParam(value = "code") String code,
            @RequestParam(value = "date") String date,
            @RequestParam(value = "cycle1", defaultValue = "10") Integer cycle1,
            @RequestParam(value = "cycle2", defaultValue = "6") Integer cycle2,
            @RequestParam(value = "rehabilitation", defaultValue = "100") Integer rehabilitation,
            @RequestParam(value = "calculationCycle", defaultValue = "100") Integer calculationCycle) {
        try {
            return thsService.wr(code, date, cycle1, cycle2, rehabilitation, calculationCycle);
        } catch (Exception e) {
            log.error("Exception:{}", e);
            return ResponseEnum.code_20000.result();
        }
    }