68 lines
2.1 KiB
Python
68 lines
2.1 KiB
Python
from utils.comm import *
|
||
|
||
|
||
def stock_web_api_method_decorator(func):
|
||
def wrapper(*args, **kwargs):
|
||
return func(*args, **kwargs)
|
||
|
||
return wrapper
|
||
|
||
|
||
@stock_web_api_method_decorator
|
||
def stock_web_api_money_flow(start_date=None, end_date=None):
|
||
# 沪深港通资金流向
|
||
df = xcsc_pro.moneyflow_hsgt(start_date=start_date, end_date=end_date)[::-1]
|
||
if df[df["trade_date"] == end_date].empty:
|
||
# df 如果里面不包含当天日期的数据,则使用备用接口
|
||
ak_df = ak.stock_hsgt_fund_flow_summary_em()
|
||
northward = ak_df[ak_df['资金方向'] == '北向']
|
||
hgt = round(northward[northward['板块'] == '沪股通']['成交净买额'].sum(), 2) * 100
|
||
sgt = round(northward[northward['板块'] == '深股通']['成交净买额'].sum(), 2) * 100
|
||
north_money = round(hgt + sgt, 2)
|
||
substitute_df = pd.DataFrame(
|
||
[{
|
||
"trade_date": northward["交易日"].iloc[0].strftime('%Y%m%d'),
|
||
"hgt": hgt,
|
||
"sgt": sgt,
|
||
"north_money": north_money,
|
||
}],
|
||
index=[0],
|
||
)
|
||
result = pd.concat([df, substitute_df], ignore_index=True)
|
||
return result
|
||
if df is not None and not df.empty:
|
||
return df
|
||
raise Exception("沪深港通资金流向数据拉取失败!")
|
||
|
||
|
||
@stock_web_api_method_decorator
|
||
def stock_web_api_industry_summary(): # 同花顺 - 行业板块数据
|
||
df = ak.stock_board_industry_summary_ths()
|
||
if df is not None and not df.empty:
|
||
return df
|
||
raise Exception("同花顺 - 行业板块数据 数据拉取失败!")
|
||
|
||
|
||
@stock_web_api_method_decorator
|
||
def stock_web_api_concept_name(): # 同花顺 - 概念板块数据
|
||
df = ak.stock_board_concept_name_em()
|
||
if df is not None and not df.empty:
|
||
return df
|
||
raise Exception("同花顺 - 概念板块数据 数据拉取失败!")
|
||
|
||
|
||
def execute_stock_web_api_method(func, *args, **kwargs):
|
||
for _ in range(5):
|
||
try:
|
||
return func(*args, **kwargs)
|
||
except Exception as e:
|
||
print(f"【{func}】 -- 拉取出现问题 【{e}】, 开始进行重试!")
|
||
time.sleep(1)
|
||
else:
|
||
print(f"【{func}】 5次出现错误,请关注!!!")
|
||
return None
|
||
|
||
|
||
if __name__ == '__main__':
|
||
print(execute_stock_web_api_method(func=stock_web_api_money_flow, start_date='20231123', end_date='20231123'))
|