首页 > 编程问答 >backtesting.pyplot() 不在 x(时间)轴上显示 EST

backtesting.pyplot() 不在 x(时间)轴上显示 EST

时间:2024-07-31 10:51:36浏览次数:13  
标签:python plot back-testing

目前我有一个数据框,其中索引是配置了东部标准时间 (EST) 的 DateTime 对象。

当我在 backtesting.py 中使用plot() 绘制此数据框时,x 轴显示为 UTC 时区,而不是EST 时区。有没有办法让我更改它以显示 EST 时区?

谢谢!


很遗憾, backtesting.py 库的 plot() 函数本身没有提供直接在图表 x 轴上显示特定时区(例如 EST)的功能。

解决方案:

可以尝试以下方法来解决这个问题:

  1. 使用 Matplotlib 自定义 x 轴:

backtesting.py 库的 plot() 函数是基于 Matplotlib 构建的。可以利用 Matplotlib 的强大功能来定制 x 轴显示。

```python import matplotlib.pyplot as plt import matplotlib.dates as mdates from backtesting import Backtest, Strategy

# ... 的代码 ...

bt = Backtest(data, MyStrategy, ...) result = bt.run()

fig, ax = plt.subplots() result.plot(fig=fig) # 将 fig 参数传递给 plot 函数

# 设置 x 轴为 EST 时区 formatter = mdates.DateFormatter('%Y-%m-%d %H:%M:%S', tz=pytz.timezone('US/Eastern')) ax.xaxis.set_major_formatter(formatter)

# 旋转 x 轴标签以提高可读性 plt.xticks(rotation=45)

plt.show() ```

解释:

  • 我们首先导入必要的库 matplotlib.pyplot matplotlib.dates
  • 使用 result.plot(fig=fig) 将图表绘制到 Matplotlib 的 fig 对象上。
  • 使用 mdates.DateFormatter 创建一个格式化器,并指定 US/Eastern 时区。
  • 使用 ax.xaxis.set_major_formatter 将格式化器应用于 x 轴。
  • 使用 plt.xticks(rotation=45) 旋转 x 轴标签以提高可读性。

  • 在绘图前将数据转换为 EST:

另一种方法是在将数据传递给 plot() 函数之前,将其转换为 EST 时区。

```python import pandas as pd # ... 的代码 ...

# 假设的数据框名为 'df',并且索引为 DateTimeIndex df.index = df.index.tz_convert('US/Eastern')

bt = Backtest(df, MyStrategy, ...) result = bt.run() result.plot() ```

解释:

  • 我们使用 pandas 库中的 tz_convert 函数将数据框的索引转换为 US/Eastern 时区。
  • 然后,我们将转换后的数据传递给 Backtest plot() 函数。

请注意,需要安装 pytz 库来处理时区。 可以使用以下命令安装它:

pip install pytz

希望这些方法可以帮助在 backtesting.py 生成的图表中正确显示 EST 时区!

标签:python,plot,back-testing
From: 78814265

相关文章

  • 三种语言实现二维前缀和(C++/Python/Java)
    题目输入一个n行m列的整数矩阵,再输入q个询问,每个询问包含四个整数x1,y1,x2,y2表示一个子矩阵的左上角坐标和右下角坐标。对于每个询问输出子矩阵中所有数的和。输入格式第一行包含三个整数n,m,q接下来n行,每行包含m个整数,表示整数矩阵。接下来q行,每行包含四个整数......
  • Python rocketMq 客户端的同步和异步模式
    同步模式fromrocketmq.clientimportPushConsumer,ConsumeStatusimporttimedefcallback(msg):print(msg.id,msg.body,msg.get_property('property'))returnConsumeStatus.CONSUME_SUCCESSdefstart_consume_message():consumer=PushCon......
  • python中元组的学习
    元组目录元组元组的概念元组操作元组的常用方法元组的遍历元组的概念Tuple(元组)与列表相似,不同之处遭遇元组的元素不能修改元组表示多个元素组成的序列用于储存一串信息,数据之间使用,分隔元组用()定义#元组的创建info_tuple=("zhangsan",18,1.75)info_tuple2=(1,)#......
  • 尝试通过Python访问.zip文件中的.gz文件
    我有一个包含大量.gz文件的.zip文件,我需要对其进行处理。我想打开.zip,我可以通过以下代码轻松完成:zf=zipfile.ZipFile("file.zip","r")forgzfileinzf.filelist:withgzip.GzipFile(fileobj=zf.open(gzfile.filename,"r"),mode="r")asf:df......
  • python导入包报错ImportError: cannot import name ‘Protocol‘
    python32.pyTraceback(mostrecentcalllast):File"2.py",line5,in<module>importptwt#use"fromsrcimportptwt"foraclonedtherepoFile"……lib/python3.6/site-packages/ptwt/_util.py",line2......
  • Python - Creating your own Iterator
    Inourfirstexample,wewillcreateiterableobjects,which,wheniteratedover,willgiveoutcubesofnumbers,andtheseobjectswillsupportmultipleiterations.classCubes:def__init__(self,start,stop):self.start=startsel......
  • 三种语言实现前缀和(C++/Python/Java)
    题目输入一个长度为n的整数序列。接下来再输入m个询问,每个询问输入一对l,r对于每个询问,输出原序列中从第l个数到第r个数的和。输入格式第一行包含两个整数n和m。第二行包含n个整数,表示整数数列。接下来m行,每行包含两个整数l和r,表示一个询问的区间范围。......
  • Python - 旨在通过命令提示符执行数据清理,但代码似乎无法运行
    我从一位同事那里收到了这段代码,我打算用它来处理100csv文件以提取有关粒子的值。代码如下所示:importsysimportcsv#Usage#skdata_decode.py[inputfile1][inputfile2]...#(Itispossibletousefiledcardtospecifyinputfiles.)##l......
  • 如何在 python 终端中的 x,y 位置上书写(基于文本)
    我想在python(基于文本)的终端中的定义位置(x,y)上写入字符。假设,我有一个大小为25x80的终端,并且想要在位置(2,20)上写入字符。我可以在Python中执行此操作吗?现在,我使用25x80数组,并写入该数组。为了在屏幕上显示,我清除屏幕并将该数组的全部内容写入屏幕,但这效......
  • Python - Composition
     classEngine:def__init__(self,power):self.power=powerdefstart(self):self.draw_current()self.spin()self.ignite()defdraw_current(self):print('Drawingcurrent')defspin(sel......