【发布时间】:2025-11-27 19:45:01
【问题描述】:
检查我不是在这里重新发明*,对于 mplfinance,我希望每 15 分钟在 x 轴上显示一次刻度,但前提是数据存在。
直接绘制到 mplfinance(没有 returnfig=True),除了 xaxis 值没有时间对齐之外,该图还可以,它们取决于数据框的第一个元素,即使用的时间。
为了尝试让它每小时都有网格/刻度,我有以下代码,当我的数据集中有预期的熊猫索引时,它可以正常工作:
start_date = pd.to_datetime('2021-12-21 04:00').tz_localize('America/New_York')
end_date = pd.to_datetime('2021-12-21 19:55').tz_localize('America/New_York')
df5trimmed = df5.truncate(before=start_date, after=end_date)
ticks = pd.date_range(start_date, end_date, freq='15T')
ticklocations = [ df5trimmed.index.get_loc(tick) for tick in ticks ]
ticklabels = [ tick.time().strftime('%H:%M') for tick in ticks ]
fig, axlist = mpf.plot(df5trimmed,style='yahoo', addplot=plotsToAdd, figsize=(48,24),
type='candlestick', volume=True, xrotation=0,
tight_layout=True, returnfig=True)
axlist[-2].xaxis.set_ticks(ticklocations)
axlist[-2].set_xticklabels(ticklabels)
然而,预期它会在迭代器 df5trimmed.index.get_loc(tick) for tick in ticks 期间使用 index not found 爆炸,而此时 pandaframe 中不存在该滴答的数据。
请注意,在17:00 密钥访问尝试期间,它下面的数据中的不连续性会爆炸,因为它在我的数据中不存在:
基本上我希望绘制与 n 分钟对齐的线(在下面的示例中为 15 分钟),但前提是它存在而不是其他情况(如果它不存在,我可以将条形放在旁边彼此)...总而言之,在流动性(会有数据点的地方)的常规交易时间内,滴答声@ 08:15, 08:30。
在 mplfinance 中是否有一个参数可以做到这一点?
我想要实现的目标
以下内容来自交易视图,请注意在正常交易时间内每 15 分钟对齐的时间刻度以及几乎整个情节。
附加信息 - 源数据和绘制的内容
下面使用this csv data,并直接绘制到mplfinance,你可以看到时间刻度与我得到04:00, 06:25, 08:10, 09:50等的小时不一致:
import mplfinance as mpf
import pandas as pd
import datetime
df5trimmed = pd.read_csv('https://pastebin.com/raw/SgpargBb', index_col=0, parse_dates=True)
fig, axlist = mpf.plot(df5trimmed,style='yahoo', figsize=(48,24), type='candlestick', volume=True, xrotation=0, tight_layout=True, returnfig=True)
# Display:
mpf.show()
【问题讨论】:
-
哪行代码引发了
index not found异常?另外,尝试设置show_nontrading=True(而不是自己设置set_ticks),因为这可能会使滴答声对你来说是一个很好的频率。最后,如果您可以提供您的数据的 csv 文件,以便其他人可以轻松复制,这将使其他人更容易帮助您找到解决方案。 -
嗨丹尼尔,谢谢你的回复,我交易 show_nontrading=True 没有区别,我已经用最后的代码和文件参考更新了我的问题,我得到了什么,并澄清了我是什么寻找。非常感谢您的帮助。
标签: python mplfinance