diff --git a/config_jingbo.py b/config_jingbo.py index 884a971..b276e8a 100644 --- a/config_jingbo.py +++ b/config_jingbo.py @@ -380,7 +380,7 @@ DEFAULT_CONFIG = { # 开关 is_train = True # 是否训练 is_debug = False # 是否调试 -is_eta = False # 是否使用eta接口 +is_eta = True # 是否使用eta接口 is_market = True # 是否通过市场信息平台获取特征 ,在is_eta 为true 的情况下生效 is_timefurture = True # 是否使用时间特征 is_fivemodels = False # 是否使用之前保存的最佳的5个模型 diff --git a/config_juxiting.py b/config_juxiting.py index 439a9f8..44fb290 100644 --- a/config_juxiting.py +++ b/config_juxiting.py @@ -143,165 +143,23 @@ ClassifyId = 1161 # 变量定义--线上环境 -# server_host = '10.200.32.39' -# login_pushreport_url = "http://10.200.32.39/jingbo-api/api/server/login" -# upload_url = "http://10.200.32.39/jingbo-api/api/analysis/reportInfo/researchUploadReportSave" -# upload_warning_url = "http://10.200.32.39/jingbo-api/api/basicBuiness/crudeOilWarning/save" -# query_data_list_item_nos_url = f"http://{server_host}/jingbo-api/api/warehouse/dwDataItem/queryDataListItemNos" -# # 上传数据项值 -# push_data_value_list_url = f"http://{server_host}/jingbo-api/api/dw/dataValue/pushDataValueList" -# # 上传停更数据到市场信息平台 -# push_waring_data_value_list_url = f"http://{server_host}/jingbo-api/api/basicBuiness/crudeOilWarning/crudeSaveOrupdate" -# # 获取预警数据中取消订阅指标ID -# get_waring_data_value_list_url = f"http://{server_host}/jingbo-api/api/basicBuiness/crudeOilWarning/dataList" - - -# login_data = { -# "data": { -# "account": "api_dev", -# "password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=", -# "tenantHashCode": "8a4577dbd919675758d57999a1e891fe", -# "terminal": "API" -# }, -# "funcModule": "API", -# "funcOperation": "获取token" -# } - - -# upload_data = { -# "funcModule": '研究报告信息', -# "funcOperation": '上传聚烯烃PP价格预测报告', -# "data": { -# "groupNo": '000211', # 用户组编号 -# "ownerAccount": '36541', # 报告所属用户账号  36541 - 贾青雪 -# "reportType": 'OIL_PRICE_FORECAST', # 报告类型,固定为OIL_PRICE_FORECAST -# "fileName": '', # 文件名称 -# "fileBase64": '', # 文件内容base64 -# "categoryNo": 'jxtjgycbg', # 研究报告分类编码 -# "smartBusinessClassCode": 'JXTJGYCBG', # 分析报告分类编码 -# "reportEmployeeCode": "E40482", # 报告人  E40482  - 管理员  0000027663 - 刘小朋   -# "reportDeptCode": "JXTJGYCBG", # 报告部门 - 002000621000  SH期货研究部   -# "productGroupCode": "RAW_MATERIAL" # 商品分类 -# } -# } - -# warning_data = { -# "funcModule": '原油特征停更预警', -# "funcOperation": '原油特征停更预警', -# "data": { -# "groupNo": "000211", -# 'WARNING_TYPE_NAME': '特征数据停更预警', -# 'WARNING_CONTENT': '', -# 'WARNING_DATE': '' -# } -# } - -# query_data_list_item_nos_data = { -# "funcModule": "数据项", -# "funcOperation": "查询", -# "data": { -# "dateStart": "20200101", -# "dateEnd": "", -# # 数据项编码,代表 PP期货 价格 -# "dataItemNoList": ["MAIN_CONFT_SETTLE_PRICE"] -# } -# } - - -# push_data_value_list_data = { -# "funcModule": "数据表信息列表", -# "funcOperation": "新增", -# "data": [ -# {"dataItemNo": "91230600716676129", -# "dataDate": "20230113", -# "dataStatus": "add", -# "dataValue": 100.11 -# }, -# {"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY", -# "dataDate": "20230113", -# "dataStatus": "add", -# "dataValue": 100.55 -# }, -# {"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY", -# "dataDate": "20230113", -# "dataStatus": "add", -# "dataValue": 100.55 -# } -# ] -# } - - -# push_waring_data_value_list_data = { -# "data": { -# "crudeOilWarningDtoList": [ -# { -# "lastUpdateDate": "20240501", -# "updateSuspensionCycle": 1, -# "dataSource": "9", -# "frequency": "1", -# "indicatorName": "美元指数", -# "indicatorId": "myzs001", -# "warningDate": "2024-05-13" -# } -# ], -# "dataSource": "9" -# }, -# "funcModule": "商品数据同步", -# "funcOperation": "同步" -# } - - -# get_waring_data_value_list_data = { -# "data": "9", "funcModule": "商品数据同步", "funcOperation": "同步"} - - -# # 八大维度数据项编码 -# bdwd_items = { -# 'ciri': '251889263|FORECAST|PRICE|T01', -# 'cierri': '251889263|FORECAST|PRICE|T02', -# 'cisanri': '251889263|FORECAST|PRICE|T03', -# 'cisiri': '251889263|FORECAST|PRICE|T04', -# 'benzhou': '251889263|FORECAST|PRICE|T05', -# 'cizhou': '251889263|FORECAST|PRICE|W_01', -# 'gezhou': '251889263|FORECAST|PRICE|W_02', -# 'ciyue': '251889263|FORECAST|PRICE|M_01', -# 'cieryue': '251889263|FORECAST|PRICE|M_02', -# 'cisanyue': '251889263|FORECAST|PRICE|M_03', -# 'cisiyue': '251889263|FORECAST|PRICE|M_04', -# } - - -# # 生产环境数据库 -# host = 'rm-2zehj3r1n60ttz9x5.mysql.rds.aliyuncs.com' -# port = 3306 -# dbusername = 'jingbo' -# password = 'shihua@123' -# dbname = 'jingbo' -# table_name = 'v_tbl_crude_oil_warning' - - -# 变量定义--测试环境 -server_host = '192.168.100.53' # 内网 -# server_host = '183.242.74.28' # 外网 -login_pushreport_url = f"http://{server_host}:8080/jingbo-dev/api/server/login" -# 上传报告 -upload_url = f"http://{server_host}:8080/jingbo-dev/api/analysis/reportInfo/researchUploadReportSave" -# 停更预警 -upload_warning_url = f"http://{server_host}:8080/jingbo-dev/api/basicBuiness/crudeOilWarning/save" -# 查询数据项编码 -query_data_list_item_nos_url = f"http://{server_host}:8080/jingbo-dev/api/warehouse/dwDataItem/queryDataListItemNos" +server_host = '10.200.32.39' +login_pushreport_url = "http://10.200.32.39/jingbo-api/api/server/login" +upload_url = "http://10.200.32.39/jingbo-api/api/analysis/reportInfo/researchUploadReportSave" +upload_warning_url = "http://10.200.32.39/jingbo-api/api/basicBuiness/crudeOilWarning/save" +query_data_list_item_nos_url = f"http://{server_host}/jingbo-api/api/warehouse/dwDataItem/queryDataListItemNos" # 上传数据项值 -push_data_value_list_url = f"http://{server_host}:8080/jingbo-dev/api/dw/dataValue/pushDataValueList" +push_data_value_list_url = f"http://{server_host}/jingbo-api/api/dw/dataValue/pushDataValueList" # 上传停更数据到市场信息平台 -push_waring_data_value_list_url = f"http://{server_host}:8080/jingbo-dev/api/basicBuiness/crudeOilWarning/crudeSaveOrupdate" +push_waring_data_value_list_url = f"http://{server_host}/jingbo-api/api/basicBuiness/crudeOilWarning/crudeSaveOrupdate" # 获取预警数据中取消订阅指标ID -get_waring_data_value_list_url = f"http://{server_host}:8080/jingbo-dev/api/basicBuiness/crudeOilWarning/dataList" +get_waring_data_value_list_url = f"http://{server_host}/jingbo-api/api/basicBuiness/crudeOilWarning/dataList" + login_data = { "data": { - "account": "api_test", - # "password": "MmVmNzNlOWI0MmY0ZDdjZGUwNzE3ZjFiMDJiZDZjZWU=", # Shihua@123456 - "password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=", # 123456 + "account": "api_dev", + "password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=", "tenantHashCode": "8a4577dbd919675758d57999a1e891fe", "terminal": "API" }, @@ -309,29 +167,29 @@ login_data = { "funcOperation": "获取token" } + upload_data = { "funcModule": '研究报告信息', "funcOperation": '上传聚烯烃PP价格预测报告', "data": { - "groupNo": "000127", - "ownerAccount": 'arui', # 报告所属用户账号 + "groupNo": '000211', # 用户组编号 + "ownerAccount": '36541', # 报告所属用户账号  36541 - 贾青雪 "reportType": 'OIL_PRICE_FORECAST', # 报告类型,固定为OIL_PRICE_FORECAST - "fileName": '2000-40-5-50--100-原油指标数据.xlsx-Brent活跃合约--2024-09-06-15-01-29-预测报告.pdf', # 文件名称 + "fileName": '', # 文件名称 "fileBase64": '', # 文件内容base64 - "categoryNo": 'yyjgycbg', # 研究报告分类编码 + "categoryNo": 'jxtjgycbg', # 研究报告分类编码 "smartBusinessClassCode": 'JXTJGYCBG', # 分析报告分类编码 - "reportEmployeeCode": "E40116", # 报告人 - "reportDeptCode": "D0044", # 报告部门 - "productGroupCode": "RAW_MATERIAL" # 商品分类 + "reportEmployeeCode": "E40482", # 报告人  E40482  - 管理员  0000027663 - 刘小朋   + "reportDeptCode": "JXTJGYCBG", # 报告部门 - 002000621000  SH期货研究部   + "productGroupCode": "RAW_MATERIAL" # 商品分类 } } -# 已弃用 warning_data = { "funcModule": '原油特征停更预警', "funcOperation": '原油特征停更预警', "data": { - "groupNo": "000127", + "groupNo": "000211", 'WARNING_TYPE_NAME': '特征数据停更预警', 'WARNING_CONTENT': '', 'WARNING_DATE': '' @@ -399,18 +257,160 @@ get_waring_data_value_list_data = { # 八大维度数据项编码 bdwd_items = { - 'ciri': 'jxtppbdwdcr', - 'cierri': 'jxtppbdwdcer', - 'cisanri': 'jxtppbdwdcsanr', - 'cisiri': 'jxtppbdwdcsir', - 'benzhou': 'jxtppbdwdbz', - 'cizhou': 'jxtppbdwdcz', - 'gezhou': 'jxtppbdwdgz', - 'ciyue': 'jxtppbdwdcy', - 'cieryue': 'jxtppbdwdcey', - 'cisanyue': 'jxtppbdwdcsany', - 'cisiyue': 'jxtppbdwdcsiy', + 'ciri': '251889263|FORECAST|PRICE|T01', + 'cierri': '251889263|FORECAST|PRICE|T02', + 'cisanri': '251889263|FORECAST|PRICE|T03', + 'cisiri': '251889263|FORECAST|PRICE|T04', + 'benzhou': '251889263|FORECAST|PRICE|T05', + 'cizhou': '251889263|FORECAST|PRICE|W_01', + 'gezhou': '251889263|FORECAST|PRICE|W_02', + 'ciyue': '251889263|FORECAST|PRICE|M_01', + 'cieryue': '251889263|FORECAST|PRICE|M_02', + 'cisanyue': '251889263|FORECAST|PRICE|M_03', + 'cisiyue': '251889263|FORECAST|PRICE|M_04', } + + +# 生产环境数据库 +# host = 'rm-2zehj3r1n60ttz9x5.mysql.rds.aliyuncs.com' +# port = 3306 +# dbusername = 'jingbo' +# password = 'shihua@123' +# dbname = 'jingbo' +# table_name = 'v_tbl_crude_oil_warning' + + +# 变量定义--测试环境 +# server_host = '192.168.100.53' # 内网 +# # server_host = '183.242.74.28' # 外网 +# login_pushreport_url = f"http://{server_host}:8080/jingbo-dev/api/server/login" +# # 上传报告 +# upload_url = f"http://{server_host}:8080/jingbo-dev/api/analysis/reportInfo/researchUploadReportSave" +# # 停更预警 +# upload_warning_url = f"http://{server_host}:8080/jingbo-dev/api/basicBuiness/crudeOilWarning/save" +# # 查询数据项编码 +# query_data_list_item_nos_url = f"http://{server_host}:8080/jingbo-dev/api/warehouse/dwDataItem/queryDataListItemNos" +# # 上传数据项值 +# push_data_value_list_url = f"http://{server_host}:8080/jingbo-dev/api/dw/dataValue/pushDataValueList" +# # 上传停更数据到市场信息平台 +# push_waring_data_value_list_url = f"http://{server_host}:8080/jingbo-dev/api/basicBuiness/crudeOilWarning/crudeSaveOrupdate" +# # 获取预警数据中取消订阅指标ID +# get_waring_data_value_list_url = f"http://{server_host}:8080/jingbo-dev/api/basicBuiness/crudeOilWarning/dataList" + +# login_data = { +# "data": { +# "account": "api_test", +# # "password": "MmVmNzNlOWI0MmY0ZDdjZGUwNzE3ZjFiMDJiZDZjZWU=", # Shihua@123456 +# "password": "ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U=", # 123456 +# "tenantHashCode": "8a4577dbd919675758d57999a1e891fe", +# "terminal": "API" +# }, +# "funcModule": "API", +# "funcOperation": "获取token" +# } + +# upload_data = { +# "funcModule": '研究报告信息', +# "funcOperation": '上传聚烯烃PP价格预测报告', +# "data": { +# "groupNo": "000127", +# "ownerAccount": 'arui', # 报告所属用户账号 +# "reportType": 'OIL_PRICE_FORECAST', # 报告类型,固定为OIL_PRICE_FORECAST +# "fileName": '2000-40-5-50--100-原油指标数据.xlsx-Brent活跃合约--2024-09-06-15-01-29-预测报告.pdf', # 文件名称 +# "fileBase64": '', # 文件内容base64 +# "categoryNo": 'yyjgycbg', # 研究报告分类编码 +# "smartBusinessClassCode": 'JXTJGYCBG', # 分析报告分类编码 +# "reportEmployeeCode": "E40116", # 报告人 +# "reportDeptCode": "D0044", # 报告部门 +# "productGroupCode": "RAW_MATERIAL" # 商品分类 +# } +# } + +# # 已弃用 +# warning_data = { +# "funcModule": '原油特征停更预警', +# "funcOperation": '原油特征停更预警', +# "data": { +# "groupNo": "000127", +# 'WARNING_TYPE_NAME': '特征数据停更预警', +# 'WARNING_CONTENT': '', +# 'WARNING_DATE': '' +# } +# } + +# query_data_list_item_nos_data = { +# "funcModule": "数据项", +# "funcOperation": "查询", +# "data": { +# "dateStart": "20200101", +# "dateEnd": "", +# # 数据项编码,代表 PP期货 价格 +# "dataItemNoList": ["MAIN_CONFT_SETTLE_PRICE"] +# } +# } + + +# push_data_value_list_data = { +# "funcModule": "数据表信息列表", +# "funcOperation": "新增", +# "data": [ +# {"dataItemNo": "91230600716676129", +# "dataDate": "20230113", +# "dataStatus": "add", +# "dataValue": 100.11 +# }, +# {"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY", +# "dataDate": "20230113", +# "dataStatus": "add", +# "dataValue": 100.55 +# }, +# {"dataItemNo": "91230600716676129P|ETHYL_BEN|CAPACITY", +# "dataDate": "20230113", +# "dataStatus": "add", +# "dataValue": 100.55 +# } +# ] +# } + + +# push_waring_data_value_list_data = { +# "data": { +# "crudeOilWarningDtoList": [ +# { +# "lastUpdateDate": "20240501", +# "updateSuspensionCycle": 1, +# "dataSource": "9", +# "frequency": "1", +# "indicatorName": "美元指数", +# "indicatorId": "myzs001", +# "warningDate": "2024-05-13" +# } +# ], +# "dataSource": "9" +# }, +# "funcModule": "商品数据同步", +# "funcOperation": "同步" +# } + + +# get_waring_data_value_list_data = { +# "data": "9", "funcModule": "商品数据同步", "funcOperation": "同步"} + + +# # 八大维度数据项编码 +# bdwd_items = { +# 'ciri': 'jxtppbdwdcr', +# 'cierri': 'jxtppbdwdcer', +# 'cisanri': 'jxtppbdwdcsanr', +# 'cisiri': 'jxtppbdwdcsir', +# 'benzhou': 'jxtppbdwdbz', +# 'cizhou': 'jxtppbdwdcz', +# 'gezhou': 'jxtppbdwdgz', +# 'ciyue': 'jxtppbdwdcy', +# 'cieryue': 'jxtppbdwdcey', +# 'cisanyue': 'jxtppbdwdcsany', +# 'cisiyue': 'jxtppbdwdcsiy', +# } # 北京环境数据库 host = '192.168.101.27' port = 3306 @@ -437,7 +437,7 @@ DEFAULT_CONFIG = { # 开关 is_train = True # 是否训练 is_debug = False # 是否调试 -is_eta = False # 是否使用eta接口 +is_eta = True # 是否使用eta接口 is_market = True # 是否通过市场信息平台获取特征 ,在is_eta 为true 的情况下生效 is_timefurture = True # 是否使用时间特征 is_fivemodels = False # 是否使用之前保存的最佳的5个模型 diff --git a/config_juxiting_yuedu.py b/config_juxiting_yuedu.py index ad066c5..cce174e 100644 --- a/config_juxiting_yuedu.py +++ b/config_juxiting_yuedu.py @@ -336,12 +336,12 @@ columnsrename = {'251889263|FORECAST|PRICE|T05': '本周', '251889263|FORECAST|P # 生产环境数据库 -# host = 'rm-2zehj3r1n60ttz9x5.mysql.rds.aliyuncs.com' -# port = 3306 -# dbusername ='jingbo' -# password = 'shihua@123' -# dbname = 'jingbo' -# table_name = 'v_tbl_crude_oil_warning' +host = 'rm-2zehj3r1n60ttz9x5.mysql.rds.aliyuncs.com' +port = 3306 +dbusername ='jingbo' +password = 'shihua@123' +dbname = 'jingbo' +table_name = 'v_tbl_crude_oil_warning' # 变量定义--测试环境 @@ -460,12 +460,12 @@ columnsrename = {'251889263|FORECAST|PRICE|T05': '本周', '251889263|FORECAST|P # 'jxtppbdwdcsany': '次三月', 'jxtppbdwdcy': '次月', 'jxtppbdwdcz': '次周', 'jxtppbdwdgz': '隔周', } # 北京环境数据库 -host = '192.168.101.27' -port = 3306 -dbusername = 'root' -password = '123456' -dbname = 'jingbo_test' -table_name = 'v_tbl_crude_oil_warning' +# host = '192.168.101.27' +# port = 3306 +# dbusername = 'root' +# password = '123456' +# dbname = 'jingbo_test' +# table_name = 'v_tbl_crude_oil_warning' DEFAULT_CONFIG = { 'feature_factor_frequency': 'D', diff --git a/config_juxiting_zhoudu.py b/config_juxiting_zhoudu.py index 50a7ed3..ed4e5e6 100644 --- a/config_juxiting_zhoudu.py +++ b/config_juxiting_zhoudu.py @@ -301,12 +301,12 @@ bdwd_items = { # # 生产环境数据库 -# host = 'rm-2zehj3r1n60ttz9x5.mysql.rds.aliyuncs.com' -# port = 3306 -# dbusername = 'jingbo' -# password = 'shihua@123' -# dbname = 'jingbo' -# table_name = 'v_tbl_crude_oil_warning' +host = 'rm-2zehj3r1n60ttz9x5.mysql.rds.aliyuncs.com' +port = 3306 +dbusername = 'jingbo' +password = 'shihua@123' +dbname = 'jingbo' +table_name = 'v_tbl_crude_oil_warning' # 变量定义--测试环境 @@ -439,12 +439,12 @@ bdwd_items = { # 北京环境数据库 -host = '192.168.101.27' -port = 3306 -dbusername = 'root' -password = '123456' -dbname = 'jingbo_test' -table_name = 'v_tbl_crude_oil_warning' +# host = '192.168.101.27' +# port = 3306 +# dbusername = 'root' +# password = '123456' +# dbname = 'jingbo_test' +# table_name = 'v_tbl_crude_oil_warning' DEFAULT_CONFIG = { 'feature_factor_frequency': 'D', diff --git a/juxiting_push_png_report.py b/juxiting_push_png_report.py index ae63a5d..b7dab8d 100644 --- a/juxiting_push_png_report.py +++ b/juxiting_push_png_report.py @@ -3,6 +3,8 @@ from lib.dataread import * from config_juxiting_yuedu import * import datetime +from models.nerulforcastmodels import pp_bdwd_png + global_config.update({ # 核心参数 'logger': logger, @@ -111,4 +113,12 @@ def push_png_report(): if __name__ == '__main__': + # 图片报告 + try: + logger.info('图片报告ing') + pp_bdwd_png(global_config=global_config) + logger.info('图片报告end') + except Exception as e: + logger.info(f'图片报告失败:{e}') + time.sleep(5) push_png_report() diff --git a/lib/dataread.py b/lib/dataread.py index 6dc6d56..3d9f3fc 100644 --- a/lib/dataread.py +++ b/lib/dataread.py @@ -994,6 +994,9 @@ def datachuli(df_zhibiaoshuju, df_zhibiaoliebiao, datecol='date', end_time='', y # kdj指标 if add_kdj: df = calculate_kdj(df) + # 保存填充后的数据 + df.to_csv(os.path.join( + dataset, '处理后的特征数据.csv'), index=False) # 特征分析 featureAnalysis(df, dataset=dataset, y=y) @@ -1080,7 +1083,6 @@ def zhoududatachuli(df_zhibiaoshuju, df_zhibiaoliebiao, datecol='date', end_time def datachuli_juxiting(df_zhibiaoshuju, df_zhibiaoliebiao, datecol='date', end_time='', y='y', dataset='dataset', delweekenday=True, add_kdj=False, is_timefurture=False): - ''' 聚烯烃特征数据处理函数, 接收的是两个df,一个是指标数据,一个是指标列表 @@ -1175,14 +1177,12 @@ def datachuli_juxiting(df_zhibiaoshuju, df_zhibiaoliebiao, datecol='date', end_t # 删除预测列空值的行 # df = df.dropna(subset=['y']) # config.logger.info(f'删除预测列为空值的行后数据量:{df.shape}') - - + # 去掉指标列表中的columns_to_drop的行 df_zhibiaoliebiao = df_zhibiaoliebiao[df_zhibiaoliebiao['指标名称'].isin( df.columns.tolist())] df_zhibiaoliebiao.to_csv(os.path.join( dataset, '特征处理后的指标名称及分类.csv'), index=False) - if add_kdj: df = calculate_kdj(df) @@ -1334,7 +1334,6 @@ def getdata_juxiting(filename, datecol='date', y='y', dataset='', add_kdj=False, df = datachuli_juxiting(df_zhibiaoshuju, df_zhibiaoliebiao, datecol, y=y, dataset=dataset, add_kdj=add_kdj, is_timefurture=is_timefurture, end_time=end_time) - return df, df_zhibiaoliebiao diff --git a/lib/tools.py b/lib/tools.py index 5e047bf..0ac24e1 100644 --- a/lib/tools.py +++ b/lib/tools.py @@ -865,8 +865,6 @@ def convert_df_to_pydantic_pp(df_predict, model_id_name_dict, global_config): def find_best_models(date='', global_config=None): best_models = {} model_id_name_dict = get_model_id_name_dict(global_config=global_config) - - # 处理日期输入 if not date: @@ -881,7 +879,6 @@ def find_best_models(date='', global_config=None): return best_models current_date = datetime.datetime.strptime(date, '%Y-%m-%d') - # 上一交易日日期 Last trading day last_trading_day = pd.Timestamp(date) - pd.tseries.offsets.BusinessDay(1) last_trading_day_str = last_trading_day.strftime('%Y-%m-%d') @@ -978,7 +975,8 @@ def find_best_models(date='', global_config=None): if i == 0: # 计算当前日期的前一工作日日期 ciridate = last_trading_day_str - global_config['logger'].info(f'计算预测{last_trading_day}的次日{last_trading_day}最佳模型') + global_config['logger'].info( + f'计算预测{last_trading_day}的次日{last_trading_day}最佳模型') global_config['logger'].info( f'{date}真实价格:{true_price[true_price["ds"] == ciridate]["y"].values[0]}') price = df[['data_date', wd, 'model_id']] @@ -1006,7 +1004,8 @@ def find_best_models(date='', global_config=None): # 计算五个工作日之前的日期 benzhoudate = (pd.Timestamp(last_trading_day) - pd.Timedelta(days=7)).strftime('%Y-%m-%d') - global_config['logger'].info(f'计算预测{last_trading_day}的五天前{benzhoudate}最佳模型') + global_config['logger'].info( + f'计算预测{last_trading_day}的五天前{benzhoudate}最佳模型') global_config['logger'].info( f'{date}真实价格:{true_price[true_price["ds"] == last_trading_day_str]["y"].values[0]}') price = df[['data_date', wd, 'model_id']] @@ -1033,12 +1032,14 @@ def find_best_models(date='', global_config=None): elif i in [2, 3]: weeks_ago = 1 if i == 2 else 2 ago_monday = last_trading_day - \ - datetime.timedelta(days=last_trading_day.weekday() + 7 * weeks_ago) + datetime.timedelta( + days=last_trading_day.weekday() + 7 * weeks_ago) ago_sunday = ago_monday + datetime.timedelta(days=6) ago_date_str = f"{ago_monday.strftime('%Y-%m-%d')} - {ago_sunday.strftime('%Y-%m-%d')}" global_config['logger'].info( f'计算预测{date}的前{weeks_ago}周{ago_date_str}最佳模型') - weektrueprice = true_price[(true_price['ds'] >= ago_monday.strftime('%Y-%m-%d')) & (true_price['ds'] <= ago_sunday.strftime('%Y-%m-%d'))]['y'].mean() + weektrueprice = true_price[(true_price['ds'] >= ago_monday.strftime( + '%Y-%m-%d')) & (true_price['ds'] <= ago_sunday.strftime('%Y-%m-%d'))]['y'].mean() global_config['logger'].info( f'当周{date_monday.strftime("%Y-%m-%d")}---{last_trading_day_str}真实价格的周均价:{weektrueprice}') @@ -1102,7 +1103,7 @@ def find_best_models(date='', global_config=None): return best_models -def plot_pp_predict_result(y_hat, global_config,wd='yuedu'): +def plot_pp_predict_result(y_hat, global_config, wd='yuedu'): """ 绘制PP期货预测结果的图表 """ @@ -1115,11 +1116,16 @@ def plot_pp_predict_result(y_hat, global_config,wd='yuedu'): global_config['dataset'], '指标数据.csv'))[['ds', 'y']][-12:] xgx_df = pd.read_csv(os.path.join( global_config['dataset'], '相关系数.csv')) + title = 'PP期货月维度预测价格走势' + else: y = pd.read_csv('juxitingdataset/指标数据.csv')[['ds', 'y']][-30:] xgx_df = pd.read_csv('juxitingdataset/相关系数.csv') - xgx_df = xgx_df.rename(columns={xgx_df.columns[0]: '指标', xgx_df.columns[1]: '系数'}) - top_10_correlations = xgx_df.sort_values(by='系数', ascending=False)[1:11].round(2) + title = 'PP期货日、周维度预测价格走势' + xgx_df = xgx_df.rename( + columns={xgx_df.columns[0]: '指标', xgx_df.columns[1]: '系数'}) + top_10_correlations = xgx_df.sort_values( + by='系数', ascending=False)[1:11].round(2) y['ds'] = pd.to_datetime(y['ds']) y = y[y['ds'] < y_hat['ds'].iloc[0]] @@ -1146,8 +1152,7 @@ def plot_pp_predict_result(y_hat, global_config,wd='yuedu'): color='orange', label='预测值', ax=ax, linestyle='--', linewidth=2) # 绘制散点图 sns.scatterplot(x=y_y_hat['ds'], y=y_y_hat['predictresult'], - color='orange', ax=ax, marker='o', s=100) - + color='orange', ax=ax, marker='o', s=100) # 绘制 y 的折线图,颜色为蓝色 sns.lineplot(x=y['ds'], y=y['y'], color='blue', label='真实值', ax=ax) @@ -1158,7 +1163,9 @@ def plot_pp_predict_result(y_hat, global_config,wd='yuedu'): ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m')) # date_str = pd.Timestamp(y_hat["ds"].iloc[0]).strftime('%Y-%m-%d') - ax.set_title(f'{datetime.datetime.now().strftime("%Y-%m-%d")} PP期货十一大维度 预测价格走势', fontsize=24) + ax.set_title( + f'{datetime.datetime.now().strftime("%Y-%m-%d")} {title}', fontsize=24) + ax.set_xlabel('日期') ax.set_ylabel('预测结果') ax.tick_params(axis='x', rotation=45) @@ -1181,18 +1188,18 @@ def plot_pp_predict_result(y_hat, global_config,wd='yuedu'): # 在图表下方添加表格 table = ax.table(cellText=data, colLabels=columns, - loc='bottom', bbox=[0, -0.4, 1, 0.2],cellLoc='center') + loc='bottom', bbox=[0, -0.4, 1, 0.2], cellLoc='center') # 设置表头为浅蓝色 for (i, j), cell in table.get_celld().items(): if i == 0: # 表头行 cell.set_facecolor('lightblue') table.auto_set_font_size(False) table.set_fontsize(12) - - # 相关系数表格 - 准备数据(指标名称+相关系数两列) + + # 相关系数表格 - 准备数据(指标名称+相关系数两列) table_data = top_10_correlations[['指标', '系数']].values.tolist() # 提取表格数据 table_data.insert(0, ['指标名称', '相关系数']) # 添加表头 - + # 在当前图表下方绘制表格(调整bbox参数控制位置和大小) table = ax.table( cellText=table_data, # 表格数据 @@ -1207,14 +1214,15 @@ def plot_pp_predict_result(y_hat, global_config,wd='yuedu'): table.auto_set_font_size(False) # 关闭自动字体大小 table.set_fontsize(10) # 设置表格字体大小 table.scale(1.1, 1.5) # 调整表格缩放比例(宽度, 高度) - + plt.tight_layout() # 自动调整整体布局 plt.savefig(os.path.join( - global_config['dataset'], f'pp_{wd}correlation.png'), + global_config['dataset'], f'pp_{wd}correlation.png'), bbox_inches='tight', pad_inches=1.0 # 增加边距 ) + def merge_images(image1_path, image2_path, output_path, direction='horizontal'): img1 = Image.open(image1_path).convert('RGBA') # 保留透明通道 img2 = Image.open(image2_path).convert('RGBA') @@ -1226,12 +1234,16 @@ def merge_images(image1_path, image2_path, output_path, direction='horizontal'): # 统一尺寸(横向拼接统一高度,纵向拼接统一宽度) if direction == 'horizontal': new_height = max(height1, height2) - img1 = img1.resize((int(width1 * new_height / height1), new_height), Image.LANCZOS) - img2 = img2.resize((int(width2 * new_height / height2), new_height), Image.LANCZOS) + img1 = img1.resize( + (int(width1 * new_height / height1), new_height), Image.LANCZOS) + img2 = img2.resize( + (int(width2 * new_height / height2), new_height), Image.LANCZOS) else: new_width = max(width1, width2) - img1 = img1.resize((new_width, int(height1 * new_width / width1)), Image.LANCZOS) - img2 = img2.resize((new_width, int(height2 * new_width / width2)), Image.LANCZOS) + img1 = img1.resize( + (new_width, int(height1 * new_width / width1)), Image.LANCZOS) + img2 = img2.resize( + (new_width, int(height2 * new_width / width2)), Image.LANCZOS) # 重新获取调整后的尺寸 width1, height1 = img1.size @@ -1245,12 +1257,12 @@ def merge_images(image1_path, image2_path, output_path, direction='horizontal'): # 粘贴图片 new_img.paste(img1, (0, 0)) - new_img.paste(img2, (width1, 0) if direction == 'horizontal' else (0, height1)) + new_img.paste(img2, (width1, 0) if direction == + 'horizontal' else (0, height1)) # 保存为PNG保留透明(如需JPG可转为RGB) new_img.save(output_path, 'PNG') + if __name__ == '__main__': print('This is a tool, not a script.') - - diff --git a/main_juxiting.py b/main_juxiting.py index 0c9669f..bd794ef 100644 --- a/main_juxiting.py +++ b/main_juxiting.py @@ -7,6 +7,7 @@ from models.nerulforcastmodels import ex_Model_Juxiting, model_losss_juxiting, p import datetime import torch torch.set_float32_matmul_precision("high") +torch.set_num_threads(4) global_config.update({ # 核心参数 @@ -566,9 +567,10 @@ if __name__ == '__main__': # except Exception as e: # logger.info(f'预测失败:{e}') # continue - # global_config['end_time'] = '2025-08-05' + + # global_config['end_time'] = '2025-08-14' predict_main() - # global_config['end_time'] = '2025-08-12' + # global_config['end_time'] = '2025-08-14' # push_market_value() # sql_inset_predict(global_config) diff --git a/main_juxiting_yuedu.py b/main_juxiting_yuedu.py index e443ba3..f25e317 100644 --- a/main_juxiting_yuedu.py +++ b/main_juxiting_yuedu.py @@ -7,6 +7,7 @@ from models.nerulforcastmodels import ex_Model_Juxiting, model_losss_juxiting, p import datetime import torch torch.set_float32_matmul_precision("high") +torch.set_num_threads(4) global_config.update({ # 核心参数 @@ -510,13 +511,7 @@ def predict_main(): # logger.info('制作报告end') - # 图片报告 - try: - logger.info('图片报告ing') - pp_bdwd_png(global_config=global_config) - logger.info('图片报告end') - except Exception as e: - logger.info(f'图片报告失败:{e}') + # # LSTM 单变量模型 # ex_Lstm(df,input_seq_len=input_size,output_seq_len=horizon,is_debug=is_debug,dataset=dataset) @@ -552,7 +547,7 @@ if __name__ == '__main__': # logger.info(f'预测失败:{e}') # continue - # global_config['end_time'] = '2025-08-13' + # global_config['end_time'] = '2025-08-14' predict_main() # push_market_value() # sql_inset_predict(global_config) diff --git a/main_juxiting_zhoudu.py b/main_juxiting_zhoudu.py index 7895803..defda09 100644 --- a/main_juxiting_zhoudu.py +++ b/main_juxiting_zhoudu.py @@ -7,6 +7,7 @@ from models.nerulforcastmodels import ex_Model_Juxiting, model_losss_juxiting, p import datetime import torch torch.set_float32_matmul_precision("high") +torch.set_num_threads(4) global_config.update({ # 核心参数 @@ -520,7 +521,7 @@ if __name__ == '__main__': # continue - # global_config['end_time'] = '2025-08-12' + # global_config['end_time'] = '2025-08-14' predict_main() diff --git a/聚烯烃八大维度预测任务.py b/聚烯烃八大维度预测任务.py index 4237d57..e61af17 100644 --- a/聚烯烃八大维度预测任务.py +++ b/聚烯烃八大维度预测任务.py @@ -17,7 +17,8 @@ def run_predictions(target_date): # 依次执行每个脚本 for script in scripts: # command = [r"C:\Users\Hello\.conda\envs\predict\python", script] # liuruipc - command = [r"C:/Users/EDY/.conda/envs/priceforecast/python.exe", script] #168pc + command = [r"D:/yuanyouyuce/envs/priceforecast/python", script] # 线上配置 + # command = [r"C:/Users/EDY/.conda/envs/priceforecast/python.exe", script] #168pc # command = [r"C:/Users/Hello/.conda/envs/jaigeyuce/python.exe", script] #yitijipc subprocess.run(command, check=True)