gpt4 book ai didi

R XTS to.minutes5(), 没有按照预期的 "I"进行转换

转载 作者:行者123 更新时间:2023-12-04 12:20:06 27 4
gpt4 key购买 nike

您好,我正在将一些 1 分钟的数据转换为 5 分钟的数据,我发现第一次增量需要 4 分钟,然后继续进行 5 分钟的增量。

我试过弄乱所有“indexAt”参数,但没有一个给我想要的,从 5 开始,然后是 10、15、20 等等。

我试过了

x5 <- to.minutes5(x)

x <- to.period(x,
period = 'minutes',
k = 5,
OHLC = TRUE)

1分钟数据

                     Open  High   Low Close Volume
2013-01-16 00:01:00 93.55 93.60 93.54 93.58 5
2013-01-16 00:02:00 93.59 93.60 93.58 93.58 5
2013-01-16 00:03:00 93.59 93.60 93.58 93.58 5
2013-01-16 00:04:00 93.58 93.58 93.57 93.57 12
2013-01-16 00:05:00 93.57 93.57 93.55 93.70 21
2013-01-16 00:06:00 93.56 93.56 93.56 93.56 5
2013-01-16 00:07:00 93.56 93.56 93.55 93.55 3
2013-01-16 00:08:00 93.55 93.55 93.55 93.55 2
2013-01-16 00:09:00 93.55 93.56 93.55 93.56 2
2013-01-16 00:10:00 93.56 93.56 93.56 93.56 1
2013-01-16 00:11:00 93.57 93.57 93.57 93.57 3

转换为 5 分钟后

                    clemtest.Open clemtest.High clemtest.Low clemtest.Close clemtest.Volume
2013-01-16 00:04:00 93.55 93.60 93.54 93.57 27
2013-01-16 00:09:00 93.57 93.57 93.55 93.56 33
2013-01-16 00:14:00 93.56 93.57 93.56 93.57 8
2013-01-16 00:19:00 93.56 93.58 93.51 93.53 77
2013-01-16 00:24:00 93.53 93.55 93.49 93.49 121
2013-01-16 00:29:00 93.49 93.51 93.49 93.51 121

计算是正确的,只是不是从前 5 分钟的数据开始,而是从 4 分钟开始,然后继续到 5 分钟。

(使用 indexAt='startof' 给出了正确的 5、10、15... 但是在检查条形图时,5 分钟数据表示该 5 分钟的开始(例如 5 - 10 分钟)而不是 0 - 5)

这里是1min数据的尾部,供引用。

                         Open  High   Low Close Volume
2013-01-17 23:53:00 95.52 95.52 95.52 95.52 2
2013-01-17 23:55:00 95.51 95.52 95.51 95.52 2
2013-01-17 23:56:00 95.51 95.51 95.51 95.51 1
2013-01-17 23:57:00 95.52 95.52 95.52 95.52 1
2013-01-17 23:59:00 95.52 95.52 95.51 95.51 4
2013-01-18 00:00:00 95.51 95.51 95.51 95.51 8

最佳答案

这是您要查找的内容吗(仅使用 12 分钟的数据,因为这就是您发布的所有数据)?

x <- read.table(text ="
2013-01-16 00:01:00 93.55 93.60 93.54 93.58 5
2013-01-16 00:02:00 93.59 93.60 93.58 93.58 5
2013-01-16 00:03:00 93.59 93.60 93.58 93.58 5
2013-01-16 00:04:00 93.58 93.58 93.57 93.57 12
2013-01-16 00:05:00 93.57 93.57 93.55 93.70 21
2013-01-16 00:06:00 93.56 93.56 93.56 93.56 5
2013-01-16 00:07:00 93.56 93.56 93.55 93.55 3
2013-01-16 00:08:00 93.55 93.55 93.55 93.55 2
2013-01-16 00:09:00 93.55 93.56 93.55 93.56 2
2013-01-16 00:10:00 93.56 93.56 93.56 93.56 1
2013-01-16 00:11:00 93.57 93.57 93.57 93.57 3")

colnames(x) <- c("Date", "time", "Open", "High", "Low", "Close", "Volume")


xt <- xts(x[, 3:7], order.by = as.POSIXct(paste0(x$Date, x$time, " ")) - 0.000001)



xt5 <- to.period(xt, period = "minutes", k =5)
xt5 <- align.time(xt5, n = 300)
xt5

# xt.Open xt.High xt.Low xt.Close xt.Volume
# 2013-01-16 00:05:00 93.55 93.60 93.54 93.70 48
# 2013-01-16 00:10:00 93.56 93.56 93.55 93.56 13
# 2013-01-16 00:15:00 93.57 93.57 93.57 93.57 3

在包含区间 ["2013-01-16 00:00:00", "2013-01-16 00:04:59.99999"],您可以将基础时间减少一秒(稍微负数,这里说 -0.000001),以便它包含在前 5 分钟内间隔。

我认为,如果您决定说明 OHLC 柱数据上的时间戳是在柱的开始还是柱的结束,那么您的评论中的混淆就可以避免。即“2013-01-16 00:01:00”是否表示间隔 (2013-01-16 00:00:00 至 2013-01-16 00:00:59.999) 或 (2013-01-16) 的 OHLC 00:01:00、2013-01-16 00:01:59.999)。在您的情况下,它位于栏的末尾(前一种情况)。

并且时间戳作为 OHLC 数据柱的开始并不是一个好主意,因为当您将不同柱间隔上的 xts 对象合并在一起时,它会引入前瞻性偏差。

关于R XTS to.minutes5(), 没有按照预期的 "I"进行转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32020409/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com