From ab30acc620fdfec6e37b687dc3f61ce8b898697b Mon Sep 17 00:00:00 2001 From: chenzongwei <63836858+chen-001@users.noreply.github.com> Date: Tue, 21 Feb 2023 11:45:29 +0800 Subject: [PATCH] v3.7.3 --- pure_ocean_breeze/__init__.py | 4 +-- pure_ocean_breeze/data/tools.py | 3 +- pure_ocean_breeze/data/write_data.py | 34 +++++++------------ pure_ocean_breeze/state/decorators.py | 4 +-- .../version3.md" | 4 +++ 5 files changed, 21 insertions(+), 28 deletions(-) diff --git a/pure_ocean_breeze/__init__.py b/pure_ocean_breeze/__init__.py index 337250f..f223401 100644 --- a/pure_ocean_breeze/__init__.py +++ b/pure_ocean_breeze/__init__.py @@ -2,8 +2,8 @@ 一个量化多因子研究的框架,包含数据、回测、因子加工等方面的功能 """ -__updated__ = "2023-01-30 11:20:05" -__version__ = "3.7.2" +__updated__ = "2023-02-13 10:02:13" +__version__ = "3.7.3" __author__ = "chenzongwei" __author_email__ = "winterwinter999@163.com" __url__ = "https://github.com/chen-001/pure_ocean_breeze" diff --git a/pure_ocean_breeze/data/tools.py b/pure_ocean_breeze/data/tools.py index b5bdb83..9379f84 100644 --- a/pure_ocean_breeze/data/tools.py +++ b/pure_ocean_breeze/data/tools.py @@ -2,7 +2,7 @@ 针对一些不常见的文件格式,读取数据文件的一些工具函数,以及其他数据工具 """ -__updated__ = "2023-01-19 22:36:13" +__updated__ = "2023-02-21 09:09:08" import os import pandas as pd @@ -960,7 +960,6 @@ def calcWeightedStd(series: pd.Series, weights: Union[pd.Series, np.ndarray]) -> return np.sqrt(np.sum((series - np.mean(series)) ** 2 * weights)) -@do_on_dfs def get_list_std(delta_sts: list[pd.DataFrame]) -> pd.DataFrame: """同一天多个因子,计算这些因子在当天的标准差 diff --git a/pure_ocean_breeze/data/write_data.py b/pure_ocean_breeze/data/write_data.py index e88e841..545c002 100644 --- a/pure_ocean_breeze/data/write_data.py +++ b/pure_ocean_breeze/data/write_data.py @@ -1,4 +1,4 @@ -__updated__ = "2023-01-20 20:24:55" +__updated__ = "2023-02-19 22:46:25" import time @@ -82,13 +82,15 @@ from pure_ocean_breeze.labor.process import pure_fama -def database_update_minute_data_to_clickhouse_and_questdb(kind: str) -> None: +def database_update_minute_data_to_clickhouse_and_questdb(kind: str,web_port:str='9001') -> None: """使用米筐更新分钟数据至clickhouse和questdb中 Parameters ---------- kind : str 更新股票分钟数据或指数分钟数据,股票则'stock',指数则'index' + web_port : str + questdb数据库的web console的端口号, by default '9001' Raises ------ @@ -156,12 +158,8 @@ def database_update_minute_data_to_clickhouse_and_questdb(kind: str) -> None: ts = ts.reset_index() ts.date = ts.date.astype(int).astype(str) ts.num = ts.num.astype(int).astype(str) - try: - qdb = Questdb() - qdb.write_via_csv(ts, f"minute_data_{kind}") - except Exception: - qdb = Questdb(web_port="9000") - qdb.write_via_csv(ts, f"minute_data_{kind}") + qdb = Questdb(web_port=web_port) + qdb.write_via_csv(ts, f"minute_data_{kind}") # 获取剩余使用额 user2 = round(rqdatac.user.get_quota()["bytes_used"] / 1024 / 1024, 2) user12 = round(user2 - user1, 2) @@ -264,13 +262,15 @@ def database_update_minute_data_to_postgresql(kind: str) -> None: logger.info(f"今日已使用rqsdk流量{user2}MB,本项更新消耗流量{user12}MB") -def database_update_minute_data_to_questdb(kind: str) -> None: +def database_update_minute_data_to_questdb(kind: str,web_port:str='9001') -> None: """使用米筐更新分钟数据至questdb中 Parameters ---------- kind : str 更新股票分钟数据或指数分钟数据,股票则'stock',指数则'index' + web_port : str + questdb数据库的控制台端口号, by default '9001' Raises ------ @@ -290,12 +290,8 @@ def database_update_minute_data_to_questdb(kind: str) -> None: cs = rqdatac.all_instruments(type=code_type, market="cn", date=None) codes = list(cs.order_book_id) # 获取上次更新截止时间 - try: - qdb = Questdb() - last_date = max(qdb.show_all_dates(f"minute_data_{kind}")) - except Exception: - qdb = Questdb(web_port="9000") - last_date = max(qdb.show_all_dates(f"minute_data_{kind}")) + qdb = Questdb(web_port=web_port) + last_date = max(qdb.show_all_dates(f"minute_data_{kind}")) # 本次更新起始日期 start_date = pd.Timestamp(str(last_date)) + pd.Timedelta(days=1) start_date = datetime.datetime.strftime(start_date, "%Y-%m-%d") @@ -338,18 +334,12 @@ def database_update_minute_data_to_questdb(kind: str) -> None: ts.date = ts.date.astype(int).astype(str) ts.num = ts.num.astype(int).astype(str) # 数据写入数据库 - try: - qdb = Questdb() - qdb.write_via_csv(ts, f"minute_data_{kind}") - except Exception: - qdb = Questdb(web_port="9000") - qdb.write_via_csv(ts, f"minute_data_{kind}") + qdb.write_via_csv(ts, f"minute_data_{kind}") # 获取剩余使用额 user2 = round(rqdatac.user.get_quota()["bytes_used"] / 1024 / 1024, 2) user12 = round(user2 - user1, 2) logger.info(f"今日已使用rqsdk流量{user2}MB,本项更新消耗流量{user12}MB") - def database_update_minute_data_to_mysql(kind: str) -> None: """使用米筐更新分钟数据至mmysql中 diff --git a/pure_ocean_breeze/state/decorators.py b/pure_ocean_breeze/state/decorators.py index 8229793..560065e 100644 --- a/pure_ocean_breeze/state/decorators.py +++ b/pure_ocean_breeze/state/decorators.py @@ -2,7 +2,7 @@ 用于标注函数功能的一些装饰器(用处不大) """ -__updated__ = "2023-02-03 10:41:28" +__updated__ = "2023-02-21 09:09:30" from typing import Iterable @@ -25,7 +25,7 @@ def _dict_value(x, list_num_order): def do_on_dfs(func): def wrapper(df=None, *args, **kwargs): - if isinstance(df, list): + if isinstance(df, list) or isinstance(df,tuple): dfs = [ func( i, *[_list_value(i, num) for i in args], **_dict_value(kwargs, num) diff --git "a/\346\233\264\346\226\260\346\227\245\345\277\227/version3.md" "b/\346\233\264\346\226\260\346\227\245\345\277\227/version3.md" index 08a9f8d..44df947 100644 --- "a/\346\233\264\346\226\260\346\227\245\345\277\227/version3.md" +++ "b/\346\233\264\346\226\260\346\227\245\345\277\227/version3.md" @@ -1,5 +1,9 @@ ## 更新日志🗓 — v3 +* v3.7.3 — 2023.2.21 +> 1. 删去了do_on_dfs装饰器对get_list_std函数的支持 +> 1. 修复了database_update_minute_data_to_clickhouse_and_questdb和database_update_minute_data_to_questdb在端口号为9000的设备上的写入bug,并增加了web_port参数,用于手动指定端口参数 +> 1. 给do_on_dfs装饰器支持了对tuple的识别 * v3.7.2 — 2023.2.3 > 1. 修复了Questdb通过csv写入数据只能向本地数据库写入的bug > 1. 对make_relative_comments和make_relative_comments_plot的进行了提速,并新增了多种股票池混合的方式,可以指定多个参数为1,当且仅当hs300和zz500同时为1时,基准指数为中证800指数000906.SH