使用 mplfinance 有固定的格式! 数据必须是 Pandas DataFrame 格式,必须包含开盘价、最高价、最低价和收盘价,需要使用 DatetimeIndex 作为索引!
- <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/3 | 8.27 | 8.34 | 8.25 | 8.32 | 459840 | 1 | 2017/1/4 | 8.31 | 8.34 | 8.30 | 8.32 | 449330 | 2 | 2017/1/5 | 8.33 | 8.34 | 8.31 | 8.33 | 344373 | 3 | 2017/1/6 | 8.33 | 8.33 | 8.27 | 8.29 | 358154 | 4 | 2017/1/9 | 8.29 | 8.33 | 8.27 | 8.31 | 361082 |
修改类型[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-03 | 8.27 | 8.34 | 8.25 | 8.32 | 459840 | 1 | 2017-01-04 | 8.31 | 8.34 | 8.30 | 8.32 | 449330 | 2 | 2017-01-05 | 8.33 | 8.34 | 8.31 | 8.33 | 344373 | 3 | 2017-01-06 | 8.33 | 8.33 | 8.27 | 8.29 | 358154 | 4 | 2017-01-09 | 8.29 | 8.33 | 8.27 | 8.31 | 361082 |
修改索引[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-03 | 8.27 | 8.34 | 8.25 | 8.32 | 459840 | 2017-01-04 | 8.31 | 8.34 | 8.30 | 8.32 | 449330 | 2017-01-05 | 8.33 | 8.34 | 8.31 | 8.33 | 344373 | 2017-01-06 | 8.33 | 8.33 | 8.27 | 8.29 | 358154 | 2017-01-09 | 8.29 | 8.33 | 8.27 | 8.31 | 361082 |
制作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)
|