『玩转Streamlit』--查看K线的小工具

打印 上一主题 下一主题

主题 909|帖子 909|积分 2727

在金融市场分析中,查看差别买卖业务对的 K 线数据是一项基础且紧张的工作。
今天,我们就来学习如何使用 Streamlit 构建一个简朴的 K 线查看小工具,让你可以或许方便地查看差别买卖业务对在差别时间范围内的 K 线数据。
1. 情况预备

起首,确保已经安装了须要的库。
除了 Streamlit 用于构建界面,还必要pandas 用于数据处理惩罚,plotly 用于绘制 K 线图。
我们假设已经有Streamlit情况,只要安装:
  1. pip install pandas plotly
复制代码
2. 数据获取

K线数据我是从币安买卖业务所(binance)获取的,此中的字段如下:
  1. self.safe_integer(ohlcv, 0),  # open time
  2. self.safe_number(ohlcv, 1),  # open
  3. self.safe_number(ohlcv, 2),  # high
  4. self.safe_number(ohlcv, 3),  # low
  5. self.safe_number(ohlcv, 4),  # close
  6. self.safe_number(ohlcv, 5),  # volume
  7. self.safe_integer(ohlcv, 6),  # close time
  8. self.safe_number(ohlcv, 7),  # quote asset volume
  9. self.safe_integer(ohlcv, 8),  # number of trades
  10. self.safe_number(ohlcv, 9),  # taker buy base asset volume
  11. self.safe_number(ohlcv, 10),  # taker buy quote asset volume
复制代码
此中用于K线展示的主要是:open time(K线开始时间),open(开盘价),high(最高价),low(最低价),close(收盘价),volumn(成交量)几个字段。
采集数据使用币安的公开API即可,本文的重点不在这里,不详细叙述了。
通过API,采集了约莫300多个永续合约的K线数据。
3. 构建streamlit界面

接下来,我们开始构建 Streamlit 界面。
界面主要包罗两个部门:上半部门可以选择买卖业务对信息和 K 线时间范围;
  1. st.header("查看Current-交易对K线")
  2. st.selectbox("选择交易对:", key="symbol", options=options, on_change=update_symbol)
  3. st.date_input(
  4.     "时间范围:",
  5.     (st.session_state.start_date, st.session_state.end_date),
  6.     format="YYYY/MM/DD",
  7.     key="symbol_date_range",
  8.     on_change=update_date_range,
  9. )
复制代码
下半部门用tab页分别展示数据和K线图。
  1. def tab_data():
  2.     if st.button("重载数据"):
  3.         read_data(st.session_state.symbol)
  4.     data = st.session_state.data
  5.     if len(data) == 0:
  6.         return
  7.     # 更新开始结束时间
  8.     data_start = datetime.datetime.strptime(start, "%Y-%m-%d %H:%M:%S")
  9.     data_end = datetime.datetime.strptime(end, "%Y-%m-%d %H:%M:%S")
  10.     if st.session_state.start_date > data_end.date():
  11.         st.session_state.start_date = data_start.date()
  12.     if st.session_state.end_date < data_start.date():
  13.         st.session_state.end_date = data_end.date()
  14.     data = filter_data(data)
  15.     st.dataframe(data)
  16. def tab_plotly_graph():
  17.     if st.button("重新绘图"):
  18.         read_data(st.session_state.symbol)
  19.     if len(st.session_state.data) == 0:
  20.         return
  21.     data = filter_data(st.session_state.data)
  22.     # 数据量太大时,使用最新的2000条来绘图
  23.     if len(data) > 2000:
  24.         graph = KlinePlotlyGraph(data=data.iloc[-2000:], idc_data=None)
  25.     else:
  26.         graph = KlinePlotlyGraph(data=data, idc_data=None)
  27.     fig = graph.figure(title=f"{st.session_state.symbol} - K线图")
  28.     st.plotly_chart(fig)
  29. tab1, tab2 = st.tabs(["数据", "图形"])
  30. with tab1:
  31.     tab_data()
  32. with tab2:
  33.     tab_plotly_graph()
复制代码
代码中封装的一些读取数据,显示图表的函数,比较冗长,这里没有贴出来。
本文的重点其实是通过Streamlit来构造一个简朴的K线查看页面,展示Streamlit强大的前端界面功能。
4. 运行应用

最后,运行一下这个简朴的应用,看看结果如何。

5. 总结

通过以上步骤,我们乐成使用 Streamlit 构建了一个简朴的 K 线查看小工具。
这个工具不仅可以帮助我们快速查看差别买卖业务对的 K 线数据,还提供了直观的可视化界面。
固然,在实际应用中,你可以根据必要进一步优化和扩展这个工具,例如从实时数据源获取数据、添加更多的技术指标分析等。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

反转基因福娃

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表