Python学习教程:Flask扫盲系列——权限设置

在前面的Python学习教程中,我们设置了系统的注册和登陆功能,已经基本满足了一个小型 Web 应用的需求。那么如果我们想通过这个网站来赚些小钱呢,就需要提供更高级的功能,当然这些高级功能不是免费开放的,设计一个权限系统,来控制高级应用的使用。

撰写高级功能

所谓的高级功能就是用户舍得花钱去购买的功能,像我这种喜欢薅羊毛的主,只配用用基础功能了。

我这里设计的高级功能,就是丰富 K 线图,在我们原来 K 线图的基础上添加移动平均线和成交量。

移动平均线

移动平均线是技术分析中非常普遍的一项指标,“平均”是指单位周期内的平均收盘价格,“移动”则是指将新的交易日收盘价纳入计算周期的同时,剔除最早的交易收盘价。

我们先来观察下通过 tushare 获取到的数据

Python学习教程:Flask扫盲系列——权限设置

 


可以看到,数据中的 Ma5、Ma10 和 Ma20 值可以用来制作移动平均线,可以通过折线图的方式来展现。

import pyecharts.options as opts
from pyecharts.charts import Line


def moving_average() -> Line:
 c = (
 Line()
 .add_xaxis(df.index.tolist())
 .add_yaxis("Ma5", df['ma5'].values.tolist(), is_smooth=True)
 .add_yaxis("Ma10", df['ma10'].values.tolist(), is_smooth=True)
 .add_yaxis("Ma20", df['ma20'].values.tolist(), is_smooth=True)
 .set_global_opts(title_opts=opts.TitleOpts(title="移动平均线"))
 .set_series_opts(
 label_opts=opts.LabelOpts(is_show=False),
 )
 )
 return c

moving_average().render_notebook()

Python学习教程:Flask扫盲系列——权限设置

 

成交量

对于成交量,可以通过柱状图来展示,柱状图的高度,就是成交量的大小。把上涨时的成交量显示成红色,下跌时的成交量显示成绿色。

import pyecharts.options as opts
from pyecharts.charts import Line, Bar


volume_rise=[df.volume[x] if df.close[x] > df.open[x] else "0" for x in range(0, len(df.index))]
volume_drop=[df.volume[x] if df.close[x] <= df.open[x] else "0" for x in range(0, len(df.index))]


def volume() -> Bar:
 c = (
 Bar()
 .add_xaxis(df.index.tolist())
 .add_yaxis("volume_rise", volume_rise, stack=True, color=["#ec0000"])
 .add_yaxis("volume_drop", volume_drop, stack=True, color=["#00da3c"])
 .set_global_opts(title_opts=opts.TitleOpts(title="成交量"),
 datazoom_opts=[opts.DataZoomOpts()],)
 .set_series_opts(
 label_opts=opts.LabelOpts(is_show=False),
 )
 )
 return c


volume().render_notebook()

Python学习教程:Flask扫盲系列——权限设置

 

集成三个图表

下面我们就把三个图标,K 线图,移动平均线图和成交量图合成到一起
首先把 K 线图和移动平均线图层叠到一起

def kline_base() -> Kline:
 kline = (
 Kline()
 .add_xaxis(df.index.tolist())
 .add_yaxis("日K图", df[['open', 'close', 'low', 'high']].values.tolist(), markpoint_opts=opts.MarkLineOpts(
 data=[opts.MarkLineItem(type_="max", value_dim="close")]
 ), markline_opts=opts.MarkLineOpts(
 data=[opts.MarkLineItem(type_="max", value_dim="close")]
 ),
 itemstyle_opts=opts.ItemStyleOpts(
 color="#ec0000",
 color0=
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值