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

在金融市场分析中,查看不同交易对的 K 线数据是一项基础且重要的工作。

今天,我们就来学习如何使用 Streamlit 构建一个简单的 K 线查看小工具,让你能够方便地查看不同交易对在不同时间范围内的 K 线数据。

1. 环境准备

首先,确保已经安装了必要的库。

除了 Streamlit 用于构建界面,还需要pandas 用于数据处理,plotly 用于绘制 K 线图。

我们假设已经有Streamlit环境,只要安装:

```python
pip install pandas plotly
```

2. 数据获取

K线 数据我是从币安交易所(binance)获取的,其中的字段如下:

```python
self.safe_integer(ohlcv, 0),  # open time
self.safe_number(ohlcv, 1),  # open
self.safe_number(ohlcv, 2),  # high
self.safe_number(ohlcv, 3),  # low
self.safe_number(ohlcv, 4),  # close
self.safe_number(ohlcv, 5),  # volume
self.safe_integer(ohlcv, 6),  # close time
self.safe_number(ohlcv, 7),  # quote asset volume
self.safe_integer(ohlcv, 8),  # number of trades
self.safe_number(ohlcv, 9),  # taker buy base asset volume
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 线时间范围;

```python
st.header("查看Current-交易对K线")

st.selectbox("选择交易对:", key="symbol", options=options, on_change=update_symbol)
st.date_input(
    "时间范围:",
    (st.session_state.start_date, st.session_state.end_date),
    format="YYYY/MM/DD",
    key="symbol_date_range",
    on_change=update_date_range,
)
```

下半部分用tab页 分别展示数据和K线图。

```python
def tab_data():
    if st.button("重载数据"):
        read_data(st.session_state.symbol)

    data = st.session_state.data
    if len(data) == 0:
        return

    # 更新开始结束时间
    data_start = datetime.datetime.strptime(start, "%Y-%m-%d %H:%M:%S")
    data_end = datetime.datetime.strptime(end, "%Y-%m-%d %H:%M:%S")
    if st.session_state.start_date > data_end.date():
        st.session_state.start_date = data_start.date()

    if st.session_state.end_date < data_start.date():
        st.session_state.end_date = data_end.date()

    data = filter_data(data)

    st.dataframe(data)


def tab_plotly_graph():
    if st.button("重新绘图"):
        read_data(st.session_state.symbol)

    if len(st.session_state.data) == 0:
        return

    data = filter_data(st.session_state.data)

    # 数据量太大时,使用最新的2000条来绘图
    if len(data) > 2000:
        graph = KlinePlotlyGraph(data=data.iloc[-2000:], idc_data=None)
    else:
        graph = KlinePlotlyGraph(data=data, idc_data=None)

    fig = graph.figure(title=f"{st.session_state.symbol} - K线图")

    st.plotly_chart(fig)

tab1, tab2 = st.tabs(["数据", "图形"])
with tab1:
    tab_data()

with tab2:
    tab_plotly_graph()
```

代码中封装的一些读取数据,显示图表的函数,比较冗长,这里没有贴出来。

本文的重点其实是通过Streamlit来构造一个简单的K线查看页面,展示Streamlit强大的前端界面功能。

4. 运行应用

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

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

5. 总结

通过以上步骤,我们成功使用 Streamlit 构建了一个简单的 K 线查看小工具。

这个工具不仅可以帮助我们快速查看不同交易对的 K 线数据,还提供了直观的可视化界面。

当然,在实际应用中,你可以根据需要进一步优化和扩展这个工具,例如从实时数据源获取数据、添加更多的技术指标分析等。

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/6369.html

(0)
LomuLomu
上一篇 2025 年 1 月 14 日
下一篇 2025 年 1 月 14 日

相关推荐

  • 华为OD机试E卷 –关联子串–24年OD统一考试(Java & JS & Python & C & C++)

    文章目录 题目描述 输入描述 输出描述 用例 题目解析 JS算法源码 Java算法源码 python算法源码 c算法源码 c++算法源码 题目描述 给定两个 字符串 str1和str2,如果字符串str1中的字符,经过排列组合后的字符串中,只要有一个字符串是str2的子串,则认为str1是str2的关联子串。若str1是str2的关联子串,请返回子串在str…

    未分类 2025 年 1 月 10 日
    30600
  • MySQL 面试题

    MySQL 中有哪几种锁? 全局锁、行级锁、自增锁、记录锁、外键锁、间隙锁、表级锁、元数据锁、意向锁、临键锁 MySQL 中有哪些不同的表格? 基础表、临时表、系统表、信息表、性能模式表、分区表、外键表、触发器使用的表、存储过程和函数使用的表 简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别? 事务支持 InnoDB:支持事务处理,具有提…

    未分类 2025 年 1 月 15 日
    47300
  • 成长之路:从编程小白到技术探索者

    掌握计算机思维并非一日之功,而是需要持续积累的过程。每个人的思维方式都独具特色,毕竟我们不是设定好程序的机器。常言道要换位思考,因为身处其中往往看不清全貌。曾在一本名为《代码大全》的书中读到关于结对编程的建议,这让我意识到:许多任务单靠个人难以完成。即便拥有双重智慧,也只能影响自己。无论是家庭还是企业,其发展轨迹都难以被个人掌控——有人能延缓这个过程,但无法…

    未分类 2025 年 5 月 14 日
    10600
  • 【GreatSQL优化器-10】find_best_ref

    【GreatSQL优化器-10】find_best_ref 一、find_best_ref介绍 GreatSQL的优化器对于join的表需要根据行数和cost来确定最后哪张表先执行哪张表后执行,这里面就涉及到预估满足条件的表数据,在keyuse_array数组有值的情况下,会用find_best_ref函数来通过索引进行cost和rows的估计,并且会找出最…

    2025 年 1 月 14 日
    29700
  • 如何做好软件架构师

    本文以个人视野聊下软件架构师的工作以及软件架构设计知识。做开发工作接近10年了,期间主要做Windows应用开发。在成熟的“华南区最大WPF团队”希沃白板呆了较长一段时间、后面从0到1构建Windows技术栈以及会议屏软件集,在软件设计这块自己成长了很多。之前整理过如何做好技术经理 – 唐宋元明清2188 – 博客园,这里梳理下自己的设计思维,算是自己阶段性…

    未分类 2025 年 1 月 12 日
    26600

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信