我试图将1分钟的股市数据样本缩减到多个盘中时间段。你知道吗
我是新的所有这些编码和堆栈溢出,所以请与我忍受。 最初,我将1min数据重新采样为5、30和45min增量,没有问题。然后,当我尝试将采样减少到1hour增量时,输出是从一个不在原始1min数据集中的时间索引开始的;它将从9:00:00开始,此时数据集中最早的索引是9:31:00。经过一番搜索,我发现解决这个问题的方法是在.resample()函数中包含'base=30'。你知道吗
newDf = df.resample('60min', closed='right', base=30 ).agg(dict(open='first', high='max', low='min', close='last', volume='sum', vwap='mean'))
(旁注:此代码仅在重采样率以分钟形式输入而不是每小时输入时提供正确的输出…'60分钟=有效,'1小时'=不起作用。请解释一下原因,但这不是我的主要问题。)
我试过了,成功了。你知道吗
但是,当我尝试对超过“60min”的任何内容进行下采样时,输出是错误的,dateime索引start会移回原始1min数据集中不存在的datetime。我试着使用'base=60'参数,但没有成功。然后,我尝试使用'loffset=90',并且能够成功地获得输出,使其在正确的日期时间9:30:00开始,就像我所做的其他重采样一样,但是值(open、high、low、close等)与最初的1min数据集相比不一致。你知道吗
new5minDf = df.resample('5t', closed='right').agg(dict(open='first', high='max', low='min', close='last', volume='sum', vwap='mean'))
new45minDf = df.resample('45min', closed='right', base=30 ).agg(dict(open='first', high='max', low='min', close='last', volume='sum', vwap='mean'))
new60minDf = df.resample('60min', closed='right', base=30 ).agg(dict(open='first', high='max', low='min', close='last', volume='sum', vwap='mean'))
new60minDf = df.resample('1h', closed='right', base=30 ).agg(dict(open='first', high='max', low='min', close='last', volume='sum', vwap='mean'))
new120minDf = df.resample('2h', closed='right', base=30 ).agg(dict(open='first', high='max', low='min', close='last', volume='sum', vwap='mean'))
new120minDf = df.resample('120t', closed='right', base=30 ).agg(dict(open='first', high='max', low='min', close='last', volume='sum', vwap='mean'))
据我所知,我相信重采样是使用一天中的第一部分来输出截断的重采样数据。换句话说,如果我尝试重采样到2小时或120分钟,那么每一天都会有一个索引位置,其中只包含30分钟的数据点。这是因为股票市场的正常交易时间为6.5小时。6.5小时或390分钟不能平均除以2小时或120分钟,因此每一天会有一个指数在数据点上实际上比其他指数短。你知道吗
在传统的交易平台,如tradingview.com,截断的数据将在一天结束时显示(2h数据从15:30:00开始到16:00:00结束),而不是在一天开始时显示。当我重新采样时,截短的数据以相反的方式显示(2小时截短发生在9:30:00到10:00:00之间),即使我使用loffset给出正确的起始日期时间。 如何修正重采样索引的不精确性,使其不仅在2小时的时间范围内减少采样,输出从正确的日期时间(9:30:00)开始,而且在一天结束时显示截断的时段(对于2小时和3小时,它将是15:30:00-16:00:00,对于4小时,它将是13:30:00-16:00:00等等)。我希望能够重新采样任何时间范围正确,不只是那些提到。如果我想做一个33分钟,65分钟,2天或5周的重采样,我想知道如何进行给定的期望输出上述。我之所以强调这一点,是因为“60min,base=30”的解决方案只适用于1h重采样,没有任何更大的时间范围。谢谢你的时间和努力。我对这一切都是陌生的,我很感激你的帮助。你知道吗
附言。 我试着从我的数据集中粘贴一天一分钟的数据,这样你们就可以用它来达到预期的效果,但结果是字符太多,所以我不得不删除它。如果访问数据集会有帮助,并且有其他方法可以在这里共享,请告诉我。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐