jvQuant获取股票K线方法(含年K 月K 周K 日K),股票数据接口

在线金融数据库

金融数据库在线查询沪深全市场K线方法,支持股票、债券(可转债)、基金(ETF)、指数,支持年K/月K/周K/日K,涵盖近30年数据可查。

K线字段包括 日期,开盘,收盘,最高,最低,成交量,成交额,振幅,涨跌幅,涨跌额,换手率等关键数据,支持前复权/不复权/后复权。

分配数据库服务器:

分配服务器地址

http://jvQuant.com/query/server?market=ab&type=sql&token=<token>

查询示例

http://<数据库地址>/sql?token=<你的token>&mode=kline&cate=stock&code=600519&type=day&fq=前复权&limit=240

返回结果示例(部分)

{
  "code": 0,
  "cnt": 12,
  "msg": "",
  "data": {
    "code": "600519",
    "name": "贵州茅台",
    "type": "day",
    "count": 10,
    "fq": "前复权",
    "fields": [
      "日期",
      "开盘",
      "收盘",
      "最高",
      "最低",
      "成交量",
      "成交额",
      "振幅",
      "涨跌幅",
      "涨跌额",
      "换手率"
    ],
    "list": [
      [
        "2024-07-19",
        "1490.81",
        "1525.62",
        "1529.18",
        "1484.01",
        "38943",
        "5888615145.00",
        "3.02",
        "1.88",
        "28.11",
        "0.31"
      ],
      [
        "2024-07-18",
        "1499.50",
        "1497.51",
        "1515.00",
        "1492.53",
        "28870",
        "4337214601.00",
        "1.50",
        "-0.26",
        "-3.89",
        "0.23"
      ],
      [
        "2024-07-17",
        "1476.10",
        "1501.40",
        "1503.00",
        "1470.02",
        "34311",
        "5115680654.00",
        "2.23",
        "1.72",
        "25.40",
        "0.27"
      ],
      [
        "2024-07-16",
        "1476.00",
        "1476.00",
        "1482.00",
        "1465.05",
        "20316",
        "2998367128.00",
        "1.15",
        "0.07",
        "1.10",
        "0.16"
      ],
      [
        "2024-07-15",
        "1470.00",
        "1474.90",
        "1488.00",
        "1470.00",
        "19176",
        "2835374730.00",
        "1.22",
        "-0.27",
        "-3.92",
        "0.15"
      ],
      [
        "2024-07-12",
        "1473.01",
        "1478.82",
        "1486.40",
        "1465.45",
        "23386",
        "3451132648.00",
        "1.43",
        "1.14",
        "16.73",
        "0.19"
      ],
      [
        "2024-07-11",
        "1449.97",
        "1462.09",
        "1469.00",
        "1440.21",
        "29020",
        "4236960596.00",
        "2.00",
        "1.70",
        "24.50",
        "0.23"
      ],
      [
        "2024-07-10",
        "1439.25",
        "1437.59",
        "1465.88",
        "1435.00",
        "23763",
        "3436693365.00",
        "2.15",
        "-0.03",
        "-0.44",
        "0.19"
      ],
      [
        "2024-07-09",
        "1420.00",
        "1438.03",
        "1454.89",
        "1410.10",
        "33621",
        "4807957927.00",
        "3.15",
        "1.27",
        "18.03",
        "0.27"
      ],
      [
        "2024-07-08",
        "1443.00",
        "1420.00",
        "1457.77",
        "1419.14",
        "39527",
        "5657951348.00",
        "2.66",
        "-2.27",
        "-33.00",
        "0.31"
      ]
    ]
  }
}

参考资料:

jvQuant量化OpenAPI 在线数据库开发文档

<think>好的,我现在需要解决用户的问题:如何通过SQL根据成立日期筛选新成立的ETF代码。用户提到想查询最新的ETF代码,所以首先得明确数据库中有ETF的相关数据,并且包成立日期字段。 首先,我需要确定用户使用的数据库系统,因为不同的数据库日期处理函数上可能有所不同。比如,用户提供的引用[1]中使用了temporalFormat函数来格式化日期,这可能是特定于某个系统或框架的函数,如jvQuant。根据引用[2],用户可能在jvQuant环境中操作,因为其中提到了token、mode为kline等参数,这可能是一个特定金融数据平台。 接下来,用户需要筛选ETF代码,引用[2]中提到cat参数可以指定品种为etf,所以在查询时需要设置cat='etf'。同时,成立日期通常存储在某个字段中,比如EstablishDate或者ListingDate,具体名称可能需要查看数据库结构。假设这里的字段是EstablishDate。 然后,用户想按成立日期筛选最新的ETF。最新的通常是指成立日期最近的,所以需要按成立日期降序排序,并取最前面的记录。例如,使用ORDER BY EstablishDate DESC LIMIT 1来获取最新的一只ETF。不过用户可能想要最近一段时间内成立的,比如最近一个或一,这时候需要在WHERE子句中指定日期范围。 在引用[1]中,使用了temporalFormat函数处理日期,格式为"yyyy.MM.dd"。因此,在比较日期时,可能需要将EstablishDate格式化为相同的格式,或者确保比较的是日期部分而非时间戳。例如,如果成立日期时间,需要截断时间部分,只比较日期。 综合这些信息,基础的SQL结构应该是SELECT代码字段 FROM 表名 WHERE 品种=etf ORDER BY成立日期DESC LIMIT数量。如果需要特定时间范围内的,则添加WHERE子句,比如EstablishDate >= '某个日期'。 另外,引用[4]提到使用sort_values()方法进行排序,虽然这是Python Pandas的方法,但说明用户可能对排序操作比较熟悉,需要确保SQL中的排序正确应用。同时,引用[5]提到指令微调,可能用户对精确的查询语句有较高要求,需注意语法正确性。 可能的疑问点:字段名是否正确?比如ETF代码的字段是否是SecurityID或其他名称?成立日期的字段名是否正确?是否需要处理日期格式?是否需要考虑时区? 根据引用[1]中的示例,日期处理使用了temporalFormat,所以可能需要类似函数来转换成立日期的格式,确保比较正确。例如,temporalFormat(EstablishDate, "yyyy.MM.dd") >= "2020.06.01"。 假设用户想获取成立日期最新的10只ETF,那么最终的SQL可能如下: SELECT SecurityID FROM snapshot WHERE cat='etf' ORDER BY EstablishDate DESC LIMIT 10 如果成立日期是DateTime类型,可能需要格式化: SELECT SecurityID FROM snapshot WHERE temporalFormat(EstablishDate, "yyyy.MM.dd") >= "2023.01.01" AND cat='etf' ORDER BY EstablishDate DESC LIMIT 10 但用户的问题主要是筛选最新的,可能不需要时间范围,只需要排序后取前几条。需要确认用户是否需要特定时间段内的新成立,还是单纯最新的几个。 根据用户问题描述,“最新的ETF代码”可能指的是最近成立的,所以按成立日期降序排序后取第一条或者前几条即可。同时,确保查询中指定品种为etf,即cat='etf',如引用[2]中的参数cate指定为etf。 总结步骤: 1. 确定表名和字段名:假设表名为snapshot,ETF代码字段为SecurityID,成立日期字段为EstablishDate,品种字段为cat。 2. 筛选条件:cat='etf' 3. 排序:按EstablishDate降序 4. 限制结果数量:LIMIT N 因此,最终的SQL语句可能是: SELECT SecurityID FROM snapshot WHERE cat = 'etf' ORDER BY EstablishDate DESC LIMIT 10 如果需要更精确的日期筛选,比如最近一个内成立的,需要计算日期范围,使用temporalFormat处理日期,如引用[1]中的例子。例如,筛选2023之后成立的: SELECT SecurityID FROM snapshot WHERE cat = 'etf' AND temporalFormat(EstablishDate, "yyyy.MM.dd") >= "2023.01.01" ORDER BY EstablishDate DESC 但用户的问题更偏向于获取最新的,而不仅仅是某个时间段内的。因此,重点在排序和限制结果数量上。 另外,需要注意jvQuant的SQL语法是否支持标准的LIMIT,或者是否有其他限制方式,比如TOP。根据引用[1]中的示例,使用了group by和条件筛选,可能支持LIMIT。 最后,确保字段名称正确,比如ETF代码是否存储在SecurityID中,如引用[1]中的示例使用了SecurityID作为分组字段,可能这是证券代码的字段名。</think>### 分步解答 #### 1. 确认数据库结构和字段名称 根据引用[1][2],ETF代码存储在`SecurityID`字段,品种类型通过`cat`字段筛选(值为`etf`),成立日期字段假设为`EstablishDate`。 #### 2. 基础筛选语句 筛选ETF品种的代码: ```sql SELECT SecurityID FROM snapshot WHERE cat = 'etf' ``` #### 3. 按成立日期排序 按成立日期**降序排列**,获取最新成立的ETF: ```sql SELECT SecurityID FROM snapshot WHERE cat = 'etf' ORDER BY EstablishDate DESC ``` #### 4. 限制返回结果数量 根据引用[2],使用`limit`参数控制返回条目数。例如获取最新成立的10只ETF: ```sql SELECT SecurityID FROM snapshot WHERE cat = 'etf' ORDER BY EstablishDate DESC LIMIT 10 ``` #### 5. 按日期范围筛选(可选) 若需筛选指定时间段内成立的ETF(如2023后成立),参考引用[1]使用`temporalFormat`处理日期: ```sql SELECT SecurityID FROM snapshot WHERE cat = 'etf' AND temporalFormat(EstablishDate, "yyyy.MM.dd") >= "2023.01.01" ORDER BY EstablishDate DESC ``` ### 完整示例 ```sql -- 查询最新成立的10只ETF代码 timer t1 = SELECT SecurityID FROM snapshot WHERE cat = 'etf' ORDER BY EstablishDate DESC LIMIT 10 ``` ### 注意事项 1. **字段验证**:需确认`EstablishDate`是否为实际字段名,不同系统可能使用`ListingDate`等名称[^2]。 2. **日期格式**:若日期时间戳,需通过`temporalFormat`统一格式后再比较[^1]。 3. **性能优化**:大数据量时建议添加时间范围条件,避免全表扫描[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值