omicron.client
与数据服务器(omega)的接口。
Omega通过http提供数据服务。数据以pickle格式通过http content返回。本module实现了http接口的封装 和数据的解码。
quotes_fetcher
get_bars(code, end, n_bars, frame_type, include_unclosed=True)
async
从omega服务器获取单个证券的K线数据
返回的数据为numpy结构化数组,示例如下:
array([
(datetime.date(2021, 2, 5),
24.6,
25.31,
24.27,
24.93,
1.01557559e+08,
2.51780416e+09,
120.76944)],
dtype=[('frame', 'O'), ('open', '<f4'), ('high', '<f4'), ('low', '<f4'),
('close', '<f4'), ('volume', '<f8'), ('amount', '<f8'), ('factor', '<f4')])
``` Args: code : 证券代码,如000001.XSHE end : 行情截止日期 n_bars : 将获取的行情数据记录数 frame_type : 行情数据的周期类型 include_unclosed : 是否包含当前未结束的那个周期数据. Defaults to True.
Returns: 截止到end(或者前一个交易周期结束时间)、不超过n条的行情数据
Source code in omicron/client/quotes_fetcher.py
async def get_bars(
code: str,
end: Frame,
n_bars: int,
frame_type: FrameType,
include_unclosed: bool = True,
) -> np.array:
"""从omega服务器获取单个证券的K线数据
返回的数据为numpy结构化数组,示例如下:
```python
array([
(datetime.date(2021, 2, 5),
24.6,
25.31,
24.27,
24.93,
1.01557559e+08,
2.51780416e+09,
120.76944)],
dtype=[('frame', 'O'), ('open', '<f4'), ('high', '<f4'), ('low', '<f4'),
('close', '<f4'), ('volume', '<f8'), ('amount', '<f8'), ('factor', '<f4')])
```
```
Args:
code : 证券代码,如000001.XSHE
end : 行情截止日期
n_bars : 将获取的行情数据记录数
frame_type : 行情数据的周期类型
include_unclosed : 是否包含当前未结束的那个周期数据. Defaults to True.
Returns:
截止到end(或者前一个交易周期结束时间)、不超过n条的行情数据
"""
fetcher = get_local_fetcher()
if fetcher: # pragma: no cover
return await fetcher.get_bars(code, end, n_bars, frame_type, include_unclosed)
else:
params = {
"sec": code,
"end": str(end),
"n_bars": n_bars,
"frame_type": frame_type.value,
"include_unclosed": include_unclosed,
}
return await _quotes_server_get("bars", params)
get_bars_batch(secs, end, n_bars, frame_type, include_unclosed=True)
async
从Omega服务器获取一批证券的K线数据
返回结果为一个集合,key为证券代码,value为对应的行情数据,为numpy的结构化数组格式,示例如下:
{
'000001.XSHE': array([
(datetime.date(2021, 2, 4), 24.18, 25.24, 24.04, 24.6 , 1.25524750e+08, 3.08455375e+09, 120.76944),
(datetime.date(2021, 2, 5), 24.6 , 25.31, 24.27, 24.93, 1.01557559e+08, 2.51780416e+09, 120.76944)],
dtype=[('frame', 'O'), ('open', '<f4'), ('high', '<f4'), ('low', '<f4'), ('close', '<f4'), ('volume', '<f8'), ('amount', '<f8'), ('factor', '<f4')]),
'000001.XSHG': array([
(datetime.date(2021, 2, 4), 3503.78, 3524.72, 3465.77, 3501.86, 2.98834854e+10, 4.18742553e+11, 1.),
(datetime.date(2021, 2, 5), 3509.49, 3536.54, 3492.96, 3496.33, 2.90146174e+10, 3.97391920e+11, 1.)],
dtype=[('frame', 'O'), ('open', '<f4'), ('high', '<f4'), ('low', '<f4'), ('close', '<f4'), ('volume', '<f8'), ('amount', '<f8'), ('factor', '<f4')])
}
Parameters:
Name | Type | Description | Default |
---|---|---|---|
secs |
List[str] |
证券列表 |
required |
end |
Union[datetime.date, datetime.datetime] |
行情截止日期 |
required |
n_bars |
int |
获取的行情数据记录数 |
required |
frame_type |
FrameType |
行情数据的周期类型 |
required |
include_unclosed |
bool |
是否包含当前未结束的那个周期数据。 Defaults to True. |
True |
Returns:
Type | Description |
---|---|
dict |
以证券代码为key,行情数据为value的集合 |
Source code in omicron/client/quotes_fetcher.py
async def get_bars_batch(
secs: List[str],
end: Frame,
n_bars: int,
frame_type: FrameType,
include_unclosed: bool = True,
) -> dict:
"""从Omega服务器获取一批证券的K线数据
返回结果为一个集合,key为证券代码,value为对应的行情数据,为numpy的结构化数组格式,示例如下:
```json
{
'000001.XSHE': array([
(datetime.date(2021, 2, 4), 24.18, 25.24, 24.04, 24.6 , 1.25524750e+08, 3.08455375e+09, 120.76944),
(datetime.date(2021, 2, 5), 24.6 , 25.31, 24.27, 24.93, 1.01557559e+08, 2.51780416e+09, 120.76944)],
dtype=[('frame', 'O'), ('open', '<f4'), ('high', '<f4'), ('low', '<f4'), ('close', '<f4'), ('volume', '<f8'), ('amount', '<f8'), ('factor', '<f4')]),
'000001.XSHG': array([
(datetime.date(2021, 2, 4), 3503.78, 3524.72, 3465.77, 3501.86, 2.98834854e+10, 4.18742553e+11, 1.),
(datetime.date(2021, 2, 5), 3509.49, 3536.54, 3492.96, 3496.33, 2.90146174e+10, 3.97391920e+11, 1.)],
dtype=[('frame', 'O'), ('open', '<f4'), ('high', '<f4'), ('low', '<f4'), ('close', '<f4'), ('volume', '<f8'), ('amount', '<f8'), ('factor', '<f4')])
}
```
如果end为datetime.date类型,则当include_unclosed为真时,返回截止到当前日期的数据(即使当
前周期未结束);否则返回前一个交易周期的数据(即使该周期已结束)。
Args:
secs : 证券列表
end : 行情截止日期
n_bars : 获取的行情数据记录数
frame_type : 行情数据的周期类型
include_unclosed : 是否包含当前未结束的那个周期数据。 Defaults to True.
Returns:
以证券代码为key,行情数据为value的集合
"""
fetcher = get_local_fetcher()
if fetcher: # pragma: no cover
return await fetcher.get_bars_batch(
secs, end, n_bars, frame_type, include_unclosed
)
else:
params = {
"secs": secs,
"end": str(end),
"n_bars": n_bars,
"frame_type": frame_type.value,
"include_unclosed": include_unclosed,
}
return await _quotes_server_get("bars_batch", params)
get_security_list()
async
从Omega获取证券列表
返回数据格式为numpy数组,列表中每一项又由证券代码、名称、拼音简写、上市日、终止日和类型组成, 示例如下:
[['000001.XSHE' '平安银行' 'PAYH' '1991-04-03' '2200-01-01' 'stock']
['000001.XSHG' '上证指数' 'SZZS' '1991-07-15' '2200-01-01' 'index']
['000002.XSHE' '万科A' 'WKA' '1991-01-29' '2200-01-01' 'stock']
['000002.XSHG' 'A股指数' 'AGZS' '1992-02-21' '2200-01-01' 'index']
['000003.XSHG' 'B股指数' 'BGZS' '1992-02-21' '2200-01-01' 'index']]
Returns:
Type | Description |
---|---|
ndarray |
上游服务器返回的证券列表 |
Source code in omicron/client/quotes_fetcher.py
async def get_security_list() -> np.ndarray:
"""从Omega获取证券列表
返回数据格式为numpy数组,列表中每一项又由证券代码、名称、拼音简写、上市日、终止日和类型组成,
示例如下:
```
[['000001.XSHE' '平安银行' 'PAYH' '1991-04-03' '2200-01-01' 'stock']
['000001.XSHG' '上证指数' 'SZZS' '1991-07-15' '2200-01-01' 'index']
['000002.XSHE' '万科A' 'WKA' '1991-01-29' '2200-01-01' 'stock']
['000002.XSHG' 'A股指数' 'AGZS' '1992-02-21' '2200-01-01' 'index']
['000003.XSHG' 'B股指数' 'BGZS' '1992-02-21' '2200-01-01' 'index']]
```
Returns:
上游服务器返回的证券列表
"""
fetcher = get_local_fetcher()
if fetcher: # pragma: no cover
return await fetcher.get_security_list()
else:
return await _quotes_server_get("security_list")
get_server_version()
async
获取Omega的版本号
Returns:
Type | Description |
---|---|
str |
版本号,如1.0.0.a0 |
Source code in omicron/client/quotes_fetcher.py
async def get_server_version() -> str:
"""获取Omega的版本号
Returns:
版本号,如1.0.0.a0
"""
url = f"{cfg.omega.urls.quotes_server}/sys/version"
async with aiohttp.ClientSession() as client:
async with client.get(url) as resp:
if resp.status == 200:
return await resp.text()
get_valuation(sec, date, fields=None, n=1)
async
从上游服务器获取截止date
日的n
条市值数据
Parameters:
Name | Type | Description | Default |
---|---|---|---|
sec |
str |
[description] |
required |
fields |
Union[str, List[str]] |
[description] |
None |
date |
date |
[description] |
required |
n |
int |
[description] |
1 |
Returns:
Type | Description |
---|---|
<built-in function array> |
np.array: [description] |
Source code in omicron/client/quotes_fetcher.py
async def get_valuation(
sec: str, date: datetime.date, fields: Union[str, List[str]] = None, n: int = 1
) -> np.array:
"""从上游服务器获取截止`date`日的`n`条市值数据
Args:
sec (str): [description]
fields (Union[str, List[str]]): [description]
date (datetime.date): [description]
n (int): [description]
Returns:
np.array: [description]
"""
fetcher = get_local_fetcher()
if isinstance(fields, str):
fields = [fields]
if isinstance(sec, str):
sec = [sec]
if fetcher: # pragma: no cover
return await fetcher.get_valuation(sec, date, fields, n)
else:
params = {"secs": sec, "fields": fields, "date": str(date), "n": n}
return await _quotes_server_get("valuation", params)