import pandas
from one_piece_server import TQZTianQinClient
from tqz_extern.json_operator import TQZJsonOperator
import re
import os
import sys
class TQZAutoMakeConfig:
__config_fold = './config'
__trading_time_json = f'{__config_fold}/trading_time.json'
__main_futures_xlsx = f'{__config_fold}/main_futures.xlsx'
__futures_info_json = f'{__config_fold}/futures_info.json'
@classmethod
def auto_make_session_json(cls):
"""
基于天勤量化, 生成小结文件.
"""
all_tq_main_futures = TQZTianQinClient().load_all_tq_main_futures()
ret = {}
for tq_main_future in all_tq_main_futures:
_tq_future = f'{tq_main_future.split(".")[0]}.{re.match(r"^[a-zA-Z]{1,3}", tq_main_future.split(".")[1]).group()}'
tq_main_future_data = TQZTianQinClient().query_single_quote(tq_future=tq_main_future)
ret[_tq_future] = {
'day': vars(tq_main_future_data['trading_time'])['day'],
'night': vars(tq_main_future_data['trading_time'])['night']
}
for instrument, data in ret.items():
for session_data in data.values():
for i in range(len(session_data)):
for j in range(len(session_data[i])):
hour = session_data[i][j].split(':')[0]
if hour >= '24':
new_hour = str(int(hour) - int('24')).zfill(2)
session_data[i][j] = f'{new_hour}:{session_data[i][j].split(":")[1]}:{session_data[i][j].split(":")[2]}'
TQZJsonOperator.tqz_write_jsonfile(content=ret, target_jsonfile=cls.__trading_time_json)
@classmethod
def auto_make_main_futures_excel(cls):
"""
根据所有合约的日线收盘数据, 更新当日的所有品种的主力合约
"""
# last_day, main_futures_list = '2023-04-29', ['SHFE.sn2306', 'DCE.c2307']
last_day, main_futures_list = TQZTianQinClient().get_lastDay_mainFuturesList()
daily_main_futures_df = pandas.read_excel(io=cls.__main_futures_xlsx)
if last_day != daily_main_futures_df['date'].values.tolist()[-1]:
new_row = len(daily_main_futures_df)
else:
new_row = len(daily_main_futures_df) - 1
daily_main_futures_df.loc[new_row, 'date'] = last_day
for main_future in main_futures_list:
main_fut = f'{main_future.split(".")[0]}.{re.match(r"^[a-zA-Z]{1,3}", main_future.split(".")[1]).group()}'
if main_fut not in daily_main_futures_df.columns:
daily_main_futures_df[main_fut] = main_future
else:
daily_main_futures_df.loc[new_row, main_fut] = main_future
daily_main_futures_df.to_excel(cls.__main_futures_xlsx, index=False)
@classmethod
def auto_make_futures_info_json(cls, refresh: bool = False):
if os.path.exists(path=cls.__futures_info_json) is True and refresh is False:
return
result = {}
all_tq_symbols = TQZTianQinClient().load_all_tq_main_futures()
for tq_symbol in all_tq_symbols:
exchange_str, symbol = tq_symbol.split('.')[0], tq_symbol.split('.')[1]
tq_sym = f'{exchange_str}.{cls.__get_sym(symbol=symbol)}'
if tq_sym not in result.keys():
tq_result = TQZTianQinClient().query_single_quote(tq_future=tq_symbol)
result[tq_sym] = {
"min_tick_price_flow": tq_result['price_tick'],
"contract_multiple": tq_result['volume_multiple']
}
TQZJsonOperator.tqz_write_jsonfile(content=result, target_jsonfile=cls.__futures_info_json)
@classmethod
def __get_sym(cls, symbol: str):
return re.match(r"^[a-zA-Z]{1,3}", symbol).group()
if __name__ == '__main__':
# sys.argv.append('futures_info')
if 2 == len(sys.argv):
if sys.argv[1] == 'session':
print(f'make {sys.argv[1]} config json.')
TQZAutoMakeConfig.auto_make_session_json()
elif sys.argv[1] == 'main_futures':
print(f'make {sys.argv[1]} excel.')
TQZAutoMakeConfig.auto_make_main_futures_excel()
elif sys.argv[1] == 'futures_info':
print(f'make {sys.argv[1]} config json.')
TQZAutoMakeConfig.auto_make_futures_info_json()
else:
print(f'unknown type: {sys.argv[1]}.')
量化交易之One Piece篇 - one_piece_config.py - 新增生成futures_info.json的功能
原创
©著作权归作者所有:来自51CTO博客作者ErwinSmith的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
量化交易开发之基本语法(三)
本教程则是以量化的情景从零讲解python编程,所以将更适合想学做量化策略的人。
数据 变量名 python -
量化交易开发之函数API(四)
我们讲解一下python中的函数知识
API 数据 python -
量化交易之One Piece篇 - one_piece_server.py(stable版)
【代码】量化交易之One Piece篇 - one_piece_server.py(stable版)
python 开发语言 GAP json 启动脚本 -
量化交易之One Piece篇 - OnePieceEnum.h
【代码】量化交易之One Piece篇 - OnePieceEnum.h。
one piece #pragma -
量化交易之One Piece篇 - MarketCTP.h
【代码】量化交易之One Piece篇 - MarketCTP.h。
c++ linux one piece #include ios -
量化交易之One Piece篇 - spdlog - 示例demo
【代码】量化交易之One Piece篇 - spdlog - 示例demo。
c++ 算法 开发语言 #include -
量化交易之One Piece篇 - 模板 - IPluginContext.h
【代码】量化交易之One Piece篇 - 模板 - IPluginContext.h。
c++ one piece #include ios #pragma -
量化交易之One Piece篇 - 模板 - IMarketApi.h
【代码】量化交易之One Piece篇 - 模板 - IMarketApi.h。
c++ one piece #pragma #include -
量化交易之One Piece篇 - 模板 - ITraderApi.h
【代码】量化交易之One Piece篇 - 模板 - ITraderApi.h。
one piece c++ #include #pragma Data -
量化交易之One Piece篇 - 模板 - ICoreListener.h
【代码】量化交易之One Piece篇 - 模板 - ICoreListener.h。
one piece c++ #include #pragma -
量化交易之One Piece篇 - 生成主力合约文件(.cc文件)
【代码】量化交易之One Piece篇 - 生成主力合约文件(.cc文件)
onepiece json #include Parse -
量化交易之One Piece篇 - 生成主力合约文件(.h文件)
【代码】量化交易之One Piece篇 - 生成主力合约文件。
onepiece #include ios #pragma