Metadata-Version: 2.1
Name: jqdatahttp
Version: 0.1.6
Summary: JQData HTTP API encapsulation
Home-page: https://github.com/kuanghy/jqdatahttp
Author: Huoty
Author-email: sudohuoty@163.com
Maintainer: Huoty
Maintainer-email: sudohuoty@163.com
License: Apache License v2
Keywords: jqdata,jqdatahttp,jq,joinquant
Platform: any
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: Apache Software License
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Provides-Extra: whole
Requires-Dist: numpy ; extra == 'whole'
Requires-Dist: pandas ; extra == 'whole'

JQDataHTTP
==========

[JQData HTTP](https://dataapi.joinquant.com/docs) 版接口封装。提供兼容 [JQDataSDK](https://github.com/JoinQuant/jqdatasdk) 的接口，同时也支持返回接口原生的 csv 格式数据。自动缓存 token，token 过期后自动重新获取。

```python
>>> import jqdatahttp
>>> jqdatahttp.settimeout(10)
>>> jqdatahttp.auth('xxxxxxxxxxx', 'xxxxxx')
>>> jqdatahttp.get_security_info('000001.XSHE')
Security(code='000001.XSHE', type='stock', start_date='1991-04-03', end_date='2200-01-01', display_name='平安银行')
>>> jqdatahttp.get_current_tick('000001.XSHE')
...
```

## 安装方式

```
pip install -U git+https://github.com/kuanghy/jqdatahttp
```

（由于功能还没完善，暂时为提交到 PyPI）

## 账号接口

- **账号登录**

```python
auth(username, password)
```

指定账号和密码，登录成功后会自动缓存 token，无需重新获取（仅在单个进程中缓存，如果进程退出后重新启动，仍然会重新获取）

- **账号退出**

```python
logout()
```

退出时会丢弃掉账号信息与 token 的缓存，接口不再可用

- **Token 处理**

```python
# 获取 Token，如果指定账号密码则获取新的 Token，否则获取当前 Token
get_token(username=None, password=None)

# 重置 Token，即请求新的 Token，旧的 Token 会失效
reset_token()
```

- **查询当日剩余请求条数**

```python
get_query_count()
```

- **设置请求超时时间**

```python
settimeout(value)
```

默认超时时间为 20 秒

## 原生接口

原生接口是对 HTTP 做的封装，提供原生的接口数据获取方式。可使用 `jqdattahttp.api.xxx` 的方式调用，如 get_security_info 接口对应 jqdattahttp.api.get_security_info，使用示例：

```python
>>> print(jqdatahttp.api.get_security_info(code='000001.XSHE'))
code,display_name,name,start_date,end_date,type,parent
000001.XSHE,平安银行,PAYH,1991-04-03,2200-01-01,stock,
```

接口函数的参数为，HTTP 请求时提供的 json 参数中去掉 method 和 token 后剩下的字段。如 get_security_info 接口的 HTTP 请求需要提供如下的参数：

```json
{
    "method": "get_security_info",
    "token": "5b6a9ba7b0f572bb6c287e280ed",
    "code": "502050.XSHG"
}
```

则 jqdattahttp.api.get_security_info 则只需提供 code 关键参数。

此外，还支持提供两个额外的参数：

- `show_request_params`: 参数为 True 会将请求时的详细参数打印出来
- `show_raw_result`: 该参数为 True 会将原始数据打印
- `auto_format_result`: 该参数为 True 时，会更新接口返回内容将结果格式化为 pandas.DataFrame 或者 list 等结构

这些额外参数也支持在全局设置：

```
jqdatahttp.api.show_request_params = True  # 显示请求参数
jqdatahttp.api.show_raw_result = True      # 显示原始的返回结果
jqdatahttp.api.auto_format_result = True   # 自动格式化返回结果
```

示例：

```python
>>> jqdatahttp.api.get_security_info(code='000001.XSHE', auto_format_result=True, show_raw_result=True)
start show raw result --------------------
code,display_name,name,start_date,end_date,type,parent
000001.XSHE,平安银行,PAYH,1991-04-03,2200-01-01,stock,
end show raw result --------------------
          code display_name  name  start_date    end_date   type  parent
0  000001.XSHE         平安银行  PAYH  1991-04-03  2200-01-01  stock     NaN

>>> jqdatahttp.api.show_request_params = True
>>> jqdatahttp.get_security_info('000001.XSHE')
start show request body --------------------
{"method": "get_security_info", "token": "586a9ba7b0f572bb6c2b782802c408", "code": "000001.XSHE"}
end show request body --------------------
Security(code='000001.XSHE', type='stock', start_date='1991-04-03', end_date='2200-01-01', display_name='平安银行')
```

## JQDataSDK 兼容接口

此外还提供了兼容 JQDataSDK 版的接口，函数名、参数以及返回值基本与其相同。示例：

```python
>>> jqdatahttp.get_security_info(code='000001.XSHE')
Security(code='000001.XSHE', type='stock', start_date='1991-04-03', end_date='2200-01-01', display_name='平安银行')

>>> jqdatahttp.get_all_securities('stock')
            display_name  name  start_date    end_date   type
code
000001.XSHE         平安银行  PAYH  1991-04-03  2200-01-01  stock
000002.XSHE          万科A   WKA  1991-01-29  2200-01-01  stock
000004.XSHE         国华网安  GHWA  1990-12-01  2200-01-01  stock
000005.XSHE         世纪星源  SJXY  1990-12-10  2200-01-01  stock
000006.XSHE         深振业A  SZYA  1992-04-27  2200-01-01  stock
...                  ...   ...         ...         ...    ...
688777.XSHG         中控技术  ZKJS  2020-11-24  2200-01-01  stock
688788.XSHG         科思科技  KSKJ  2020-10-22  2200-01-01  stock
688819.XSHG         天能股份  TNGF  2021-01-18  2200-01-01  stock
688981.XSHG         中芯国际  ZXGJ  2020-07-16  2200-01-01  stock
689009.XSHG         九号公司  JHGS  2020-10-29  2200-01-01  stock

[4311 rows x 5 columns]

>>> jqdatahttp.get_trade_days(end_date='2021-03-05')
array([datetime.date(2005, 1, 4), datetime.date(2005, 1, 5),
       datetime.date(2005, 1, 6), ..., datetime.date(2021, 3, 3),
       datetime.date(2021, 3, 4), datetime.date(2021, 3, 5)], dtype=object)

>>> jqdatahttp.get_bars('FG8888.XZCE', end_dt='2021-03-04 15:00:00', count=5, unit='1m')
                              date      open     close      high       low   volume         money  open_interest
FG8888.XZCE 0  2021-03-04 22:56:00  2068.144  2070.734  2072.408  2067.217   7860.0  3.295467e+08       700662.0
            1  2021-03-04 22:57:00  2070.927  2071.875  2072.781  2070.002   5400.0  2.263327e+08       700766.0
            2  2021-03-04 22:58:00  2072.688  2072.565  2074.386  2071.749   5629.0  2.360677e+08       699888.0
            3  2021-03-04 22:59:00  2072.543  2063.416  2072.785  2062.492  25076.0  1.031859e+09       692303.0
            4  2021-03-04 23:00:00  2070.089  2063.416  2070.129  2062.492  18243.0  7.451906e+08       692303.0
```


