2023-11-24 06:42:22 +00:00
|
|
|
|
from pyecharts.charts import Bar, Line
|
|
|
|
|
import pyecharts.options as opts
|
|
|
|
|
|
|
|
|
|
from utils.stock_web_api import execute_stock_web_api_method, stock_web_api_money_flow
|
|
|
|
|
from utils.comm import *
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class MoneyFlow:
|
|
|
|
|
def __init__(self, trade_date):
|
|
|
|
|
self.trade_date = trade_date.strftime('%Y%m%d')
|
|
|
|
|
self.start_date = return_trading_day(trade_date, -6)
|
|
|
|
|
self.end_date = self.trade_date
|
|
|
|
|
print(self.start_date, "---", self.end_date)
|
|
|
|
|
|
|
|
|
|
def hsgt_top10(self):
|
|
|
|
|
"""
|
|
|
|
|
当日沪深股通十大成交股
|
|
|
|
|
:return:
|
|
|
|
|
"""
|
|
|
|
|
df = xcsc_pro.hsgt_top10(trade_date=self.end_date)
|
|
|
|
|
print(df)
|
|
|
|
|
|
|
|
|
|
def money_flow_chart(self):
|
|
|
|
|
df = execute_stock_web_api_method(
|
|
|
|
|
func=stock_web_api_money_flow,
|
|
|
|
|
start_date=self.start_date, end_date=self.end_date)
|
|
|
|
|
x_data = df['trade_date'].tolist()
|
|
|
|
|
# 沪股通
|
|
|
|
|
y_axis_hgt = (round(df['hgt'] / 100, 2)).tolist()
|
|
|
|
|
# 深股通
|
|
|
|
|
y_axis_sgt = (round(df['sgt'] / 100, 2)).tolist()
|
|
|
|
|
# 北上资金
|
|
|
|
|
y_axis_north_money = (round(df['north_money'] / 100, 2)).tolist()
|
|
|
|
|
bar = (
|
|
|
|
|
Bar(init_opts=opts.InitOpts(width="100%", height="400px"))
|
|
|
|
|
.add_xaxis(xaxis_data=x_data)
|
|
|
|
|
.add_yaxis(
|
|
|
|
|
series_name="沪股通",
|
|
|
|
|
y_axis=y_axis_hgt,
|
|
|
|
|
label_opts=opts.LabelOpts(is_show=False),
|
|
|
|
|
)
|
|
|
|
|
.add_yaxis(
|
|
|
|
|
series_name="深股通",
|
|
|
|
|
y_axis=y_axis_sgt,
|
|
|
|
|
label_opts=opts.LabelOpts(is_show=False),
|
|
|
|
|
)
|
|
|
|
|
.extend_axis(
|
|
|
|
|
yaxis=opts.AxisOpts(
|
|
|
|
|
name="金额",
|
|
|
|
|
type_="value",
|
|
|
|
|
interval=2000,
|
|
|
|
|
axislabel_opts=opts.LabelOpts(formatter="{value} 亿元"),
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
.set_global_opts(
|
|
|
|
|
tooltip_opts=opts.TooltipOpts(
|
|
|
|
|
is_show=True, trigger="axis", axis_pointer_type="cross"
|
|
|
|
|
),
|
|
|
|
|
xaxis_opts=opts.AxisOpts(
|
|
|
|
|
type_="category",
|
|
|
|
|
axispointer_opts=opts.AxisPointerOpts(is_show=True, type_="shadow"),
|
|
|
|
|
),
|
|
|
|
|
yaxis_opts=opts.AxisOpts(
|
|
|
|
|
name="金额",
|
|
|
|
|
type_="value",
|
|
|
|
|
interval=3000,
|
|
|
|
|
axislabel_opts=opts.LabelOpts(formatter="{value} 亿元"),
|
|
|
|
|
axistick_opts=opts.AxisTickOpts(is_show=True),
|
|
|
|
|
splitline_opts=opts.SplitLineOpts(is_show=True),
|
|
|
|
|
),
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
line = (
|
|
|
|
|
Line()
|
|
|
|
|
.add_xaxis(xaxis_data=x_data)
|
|
|
|
|
.add_yaxis(
|
|
|
|
|
series_name="北上资金",
|
|
|
|
|
# yaxis_index 0:折线图使用柱状图的y轴 1:使用extend_axis中的Y轴
|
|
|
|
|
yaxis_index=0,
|
|
|
|
|
y_axis=y_axis_north_money,
|
|
|
|
|
label_opts=opts.LabelOpts(is_show=False),
|
|
|
|
|
)
|
|
|
|
|
)
|
2023-11-24 15:29:22 +00:00
|
|
|
|
bar.overlap(line).render(f"html/{self.trade_date}/mixed_bar_and_line.html")
|
2023-11-24 06:42:22 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
# money_flow = MoneyFlow(trade_date=datetime.now().strftime('%Y%m%d'))
|
|
|
|
|
money_flow = MoneyFlow(trade_date=datetime.now())
|
|
|
|
|
money_flow.money_flow_chart()
|