提交 e987ddfc 编写于 作者: Z zengbin93

add macd view

上级 ba658312
......@@ -40,11 +40,10 @@ def kline_viewer(ts_code, freq, end_date, asset='E', show=True):
for col in ['open', 'close', 'high', 'low']:
kline_raw[col] = kline_raw[col].apply(round, args=(2,))
# kline_chan = find_xd(find_bi(preprocess(kline_raw)))
kline_chan = find_bi(find_fx(preprocess(kline_raw)))
kline_chan = kline_chan[['dt', 'fx_mark', 'fx', 'bi_mark', 'bi']]
kline_chan = find_xd(find_bi(find_fx(preprocess(kline_raw))))
kline_chan = kline_chan[['dt', 'fx', 'fx_mark', 'bi', 'bi_mark', 'xd', 'xd_mark']]
kline_raw = kline_raw.merge(kline_chan, how='left', on='dt')
# kline_raw = kline_raw.merge(kline_chan, how='right', on='dt')
start_dt = kline_raw.iloc[0]["dt"]
end_dt = kline_raw.iloc[-1]["dt"]
......@@ -73,7 +72,7 @@ def kline_viewer(ts_code, freq, end_date, asset='E', show=True):
),
),
legend_opts=opts.LegendOpts(
is_show=True, pos_top=10, pos_left="center"
is_show=True, pos_top=5, pos_left="center"
),
datazoom_opts=[
opts.DataZoomOpts(
......@@ -87,7 +86,7 @@ def kline_viewer(ts_code, freq, end_date, asset='E', show=True):
is_show=True,
xaxis_index=[0, 1],
type_="slider",
pos_top="90%",
pos_top="60%",
range_start=0,
range_end=100,
),
......@@ -163,10 +162,37 @@ def kline_viewer(ts_code, freq, end_date, asset='E', show=True):
linestyle_opts=opts.LineStyleOpts(width=2, opacity=0.5),
label_opts=opts.LabelOpts(is_show=False),
)
.add_yaxis(
series_name="MA120",
y_axis=kline_raw.ma120.values.tolist(),
is_smooth=True,
is_symbol_show=False,
is_hover_animation=False,
linestyle_opts=opts.LineStyleOpts(width=2, opacity=0.5),
label_opts=opts.LabelOpts(is_show=False),
)
.add_yaxis(
series_name="MA250",
y_axis=kline_raw.ma250.values.tolist(),
is_smooth=True,
is_symbol_show=False,
is_hover_animation=False,
linestyle_opts=opts.LineStyleOpts(width=2, opacity=0.5),
label_opts=opts.LabelOpts(is_show=False),
)
.set_global_opts(xaxis_opts=opts.AxisOpts(type_="category"))
)
chan = (
chan_fx = (
Scatter(init_opts=opts.InitOpts(theme=ThemeType.WHITE))
.add_xaxis(xaxis_data=x_data)
.add_yaxis("分型标记", kline_raw.fx.values.tolist())
.set_global_opts(
visualmap_opts=opts.VisualMapOpts(type_="size", max_=150, min_=20),
)
)
chan_bi = (
Scatter(init_opts=opts.InitOpts(theme=ThemeType.WHITE))
.add_xaxis(xaxis_data=x_data)
.add_yaxis("笔标记", kline_raw.bi.values.tolist())
......@@ -175,6 +201,86 @@ def kline_viewer(ts_code, freq, end_date, asset='E', show=True):
)
)
chan_xd = (
Scatter(init_opts=opts.InitOpts(theme=ThemeType.WHITE))
.add_xaxis(xaxis_data=x_data)
.add_yaxis("线段标记", kline_raw.xd.values.tolist())
.set_global_opts(
visualmap_opts=opts.VisualMapOpts(type_="size", max_=150, min_=20),
)
)
# Kline And Line
kline = kline.overlap(line)
kline = kline.overlap(chan_fx)
kline = kline.overlap(chan_bi)
kline = kline.overlap(chan_xd)
# ==========================================================
macd_line = (
Line(init_opts=opts.InitOpts(theme=ThemeType.WHITE))
.add_xaxis(xaxis_data=x_data)
.add_yaxis(
series_name="DEA",
y_axis=kline_raw['dea'].values.tolist(),
is_smooth=True,
is_symbol_show=False,
is_hover_animation=False,
linestyle_opts=opts.LineStyleOpts(width=2, opacity=0.5),
label_opts=opts.LabelOpts(is_show=False),
)
.add_yaxis(
series_name="DIFF",
y_axis=kline_raw['diff'].values.tolist(),
is_smooth=True,
is_symbol_show=False,
is_hover_animation=False,
linestyle_opts=opts.LineStyleOpts(width=2, opacity=0.5),
label_opts=opts.LabelOpts(is_show=False),
)
.set_global_opts(xaxis_opts=opts.AxisOpts(type_="category"))
)
macd_bar = (
Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
.add_xaxis(xaxis_data=x_data)
.add_yaxis(
series_name="Volume",
yaxis_data=kline_raw.macd.values.tolist(),
xaxis_index=1,
yaxis_index=1,
label_opts=opts.LabelOpts(is_show=False),
)
.set_global_opts(
xaxis_opts=opts.AxisOpts(
type_="category",
is_scale=True,
grid_index=1,
boundary_gap=False,
axisline_opts=opts.AxisLineOpts(is_on_zero=False),
axistick_opts=opts.AxisTickOpts(is_show=False),
splitline_opts=opts.SplitLineOpts(is_show=False),
axislabel_opts=opts.LabelOpts(is_show=False),
split_number=20,
min_="dataMin",
max_="dataMax",
),
yaxis_opts=opts.AxisOpts(
grid_index=1,
is_scale=True,
split_number=2,
axislabel_opts=opts.LabelOpts(is_show=False),
axisline_opts=opts.AxisLineOpts(is_show=False),
axistick_opts=opts.AxisTickOpts(is_show=False),
splitline_opts=opts.SplitLineOpts(is_show=False),
),
legend_opts=opts.LegendOpts(is_show=False),
)
)
macd = macd_line.overlap(macd_bar)
# ==========================================================
bar = (
Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
.add_xaxis(xaxis_data=x_data)
......@@ -212,16 +318,18 @@ def kline_viewer(ts_code, freq, end_date, asset='E', show=True):
)
)
# Kline And Line
kline = kline.overlap(line)
kline = kline.overlap(chan)
# Grid Overlap + Bar
grid_chart = Grid(opts.InitOpts(width="1400px", height="800px", theme=ThemeType.WHITE))
grid_chart = Grid(opts.InitOpts(width="1500px", height="800px", theme=ThemeType.WHITE))
grid_chart.add(
kline,
grid_opts=opts.GridOpts(
pos_left="8%", pos_right="8%", height="60%"
pos_left="8%", pos_right="8%", height="50%"
),
)
grid_chart.add(
macd,
grid_opts=opts.GridOpts(
pos_left="8%", pos_right="8%", pos_top="60%", height="16%"
),
)
grid_chart.add(
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册