qnloft-stock/fp/资金出入概览.py

91 lines
2.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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),
)
)
bar.overlap(line).render(f"html/{self.trade_date}/mixed_bar_and_line.html")
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()