在金融市场分析中,查看不同交易对的 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. 运行应用
最后,运行一下这个简单的应用,看看效果如何。
5. 总结
通过以上步骤,我们成功使用 Streamlit
构建了一个简单的 K 线查看小工具。
这个工具不仅可以帮助我们快速查看不同交易对的 K 线数据,还提供了直观的可视化界面。
当然,在实际应用中,你可以根据需要进一步优化和扩展这个工具,例如从实时数据源获取数据、添加更多的技术指标分析等。
相关文章
暂无评论...