設為首頁收藏本站

艾歐踢論壇

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

搜索
熱搜: 活動 交友 discuz
查看: 260|回復: 0
打印 上一主題 下一主題

图解Pandas(mplfinance 进行展开)

[複製鏈接]
跳轉到指定樓層
樓主
發表於 2023-4-6 00:48:23 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
使用 mplfinance 有固定的格式!
数据必须是 Pandas DataFrame 格式,必须包含开盘价、最高价、最低价和收盘价,需要使用 DatetimeIndex 作为索引!

  1. <p style="box-sizing: border-box; -webkit-font-smoothing: antialiased; text-align: justify; line-height: 1.8rem; padding-right: 1.4rem; padding-left: 1.4rem;"><font face="-apple-system, BlinkMacSystemFont, Segoe UI, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol"><span style="font-size: 12.88px;">df_new = df1[['日期','开盘','最高','最低','收盘','成交量']]</span></font></p><p style="box-sizing: border-box; -webkit-font-smoothing: antialiased; text-align: justify; line-height: 1.8rem; padding-right: 1.4rem; padding-left: 1.4rem;"><font face="-apple-system, BlinkMacSystemFont, Segoe UI, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol"><span style="font-size: 12.88px;">df_new.head()</span></font></p>
複製代碼

数据处理[size=0.8em]
[backcolor=rgba(var(--pst-color-admonition-attention),0.1)][size=0.92em]注意
[size=0.92em]使用 mplfinance 有固定的格式!
[size=0.92em]数据必须是 Pandas DataFrame 格式,必须包含开盘价、最高价、最低价和收盘价,需要使用 DatetimeIndex 作为索引!

选择列[size=0.8em]
[size=0.92em]筛选 df1 中'日期','开盘','最高','最低','收盘','成交量'几列,并命名为新数据框 df_new






df_new = df1[['日期','开盘','最高','最低','收盘','成交量']]df_new.head()


[td]

日期
开盘
最高
最低
收盘
成交量
0
2017/1/38.278.348.258.32459840
1
2017/1/48.318.348.308.32449330
2
2017/1/58.338.348.318.33344373
3
2017/1/68.338.338.278.29358154
4
2017/1/98.298.338.278.31361082





修改类型[size=0.8em]
[size=0.92em]将 df_new 的 日期 修改为时间类型
df_new['日期'] = pd.to_datetime(df_new['日期'])




修改列名[size=0.8em]
[size=0.92em]将 df_new 的列名修改为 'Date','Open','High','Low','Close','Volume'
df_new.columns = ['Date','Open','High','Low','Close','Volume']df_new.head()


[td]

Date
Open
High
Low
Close
Volume
0
2017-01-038.278.348.258.32459840
1
2017-01-048.318.348.308.32449330
2
2017-01-058.338.348.318.33344373
3
2017-01-068.338.338.278.29358154
4
2017-01-098.298.338.278.31361082





修改索引[size=0.8em]
[size=0.92em]将 df_new 的索引列修改为 Date 列
df_new.set_index(["Date"], inplace=True)df_new.head()


[td]

Open
High
Low
Close
Volume
Date



2017-01-038.278.348.258.32459840
2017-01-04
8.318.348.308.32449330
2017-01-05
8.338.348.318.33344373
2017-01-06
8.338.338.278.29358154
2017-01-09
8.298.338.278.31361082






制作K线图[size=0.8em]日线[size=0.8em]
[size=0.92em]根据 df_new 绘制日线级K线
mpf.plot(df_new, type='line')





添加移动均线[size=0.8em]
[size=0.92em]在上一题的基础上,添加5日、10日、15日移动均线
mpf.plot(df_new, type='line',mav=(5,10,15))





添加成交量[size=0.8em]
[size=0.92em]在上一题的基础上,添加成交量
mpf.plot(df_new, type='line',mav=(5,10,15), volume=True)





蜡烛图[size=0.8em]
[size=0.92em]使用 df2 数据,筛选出 8月3日 的数据,制作蜡烛图
df_new = df2[(df2['时间'] > '2021-08-03 09:35:00') & (df2['时间'] < '2021-08-03 15:00:00')]df_new = df_new[['时间','开盘','最高','最低','收盘','成交量']]df_new.columns = ['Date','Open','High','Low','Close','Volume']df_new.set_index(["Date"], inplace=True)mpf.plot(df_new, type='candle',mav=(3,6,9), volume=True)





展示非交易时间[size=0.8em]
[size=0.92em]使用 df2 数据,筛选 8月3日-8月4日的数据,制作蜡烛图并展示非交易时间区间
df_new = df2[(df2['时间'] > '2021-08-03 9:00:00') & (df2['时间'] < '2021-08-04 15:00:00')]df_new = df_new[['时间','开盘','最高','最低','收盘','成交量']]df_new.columns = ['Date','Open','High','Low','Close','Volume']df_new.set_index(["Date"], inplace=True)mpf.plot(df_new,type='candle',show_nontrading=True, volume=True)










分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 轉播轉播 分享分享 分享淘帖
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

小黑屋|Archiver|手機版|艾歐踢創新工坊    

GMT+8, 2024-5-17 01:36 , Processed in 0.299620 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表