【问题标题】:How to get maximum high or minimum low for each week in a daily timeseries data then make it a weekly timeseries?如何在每日时间序列数据中获得每周的最大高点或最小低点,然后使其成为每周时间序列?
【发布时间】:2018-01-29 13:13:18
【问题描述】:

我有一个美股的 ohlc 每日数据。我想从中得出每周的时间序列并计算 SMA 和 EMA。但是,为了能够做到这一点,要求是从每周的最高高点创建每周时间序列,并从每周的最低低点创建另一个每周时间序列。之后,我将计算他们的 sma 和 ema,然后分配给一周中的每一天(向前一个时期)。所以,首先是第一个问题,我如何从每天使用 R(任何包)中获得每周,或者如果你可以向我展示它的算法更好,但首选的任何语言是 Golang?无论如何,如果需要,我可以用 golang 重写它。

   Date           High     Low     Week(High)   Week(Low)   WkSMAHigh 2DP     WkSMALow 2DP 
                                                         (one period forward)   
Dec 24 Fri         6        3           8            3            5.5              1.5       
Dec 23 Thu         7        5                                     5.5              1.5
Dec 22 Wed         8        5                                     5.5              1.5
Dec 21 Tue         4        4                                     5.5              1.5
Assume Holiday (Dec 20)
Dec 17 Fri         4        3           6            2           None
Dec 16 Thu         4        3
Dec 15 Wed         5        2
Dec 14 Tue         6        4
Dec 13 Mon         6        4
Dec 10 Fri         5        1           5            1           None
Dec 9 Thu          4        3
Dec 8 Wed          3        2
Assume Holiday (Dec 6 & 7)

【问题讨论】:

    标签: r go


    【解决方案1】:

    我将首先生成一个列,指定它是哪一周。

    您可以使用lubridate 包来执行此操作,这需要将您的日期转换为Date 类型。它有一个名为 week 的函数,它返回自 1 月 1 日 + 1 日以来经过的完整 7 天期间的数量。但是我不知道这些数据是否超过了几年。另外,我认为有一种更简单的方法可以做到这一点。

    我将在下面给出的示例将通过创建一个仅将整数重复 7 次直到数据框长度的列来实现。

    假装你的数据框叫做ohlcData

    # Create a sequence 7 at a time all the way up to the end of the data frame
    # I limit the sequence to the length nrow(ohlcData) so the rounding error
    # doesn't make the vectors uneven lengths
    ohlcData$Week <- rep(seq(1, ceiling(nrow(ohlcData)/7), each = 7)[1:nrow(ohlcData)]
    

    创建好之后,我们可以继续使用plyr 包,它有一个非常有用的函数ddply。此函数将函数应用于由另一列数据分组的数据列。在这种情况下,我们将根据我们的新列 Week 对数据进行分组,将 maxmin 函数应用于您的数据。

    library(plyr)
    
    weekMax <- ddply(ohlcData[,c("Week", "High")], "Week", numcolwise(max))
    weekMin <- ddply(ohlcData[,c("Week", "Low")], "Week", numcolwise(min))
    

    这将为您提供每周的最小值和最大值。为 weekMax 和 weekMin 返回的数据框将有 2 列,即 Week 和 value。将这些组合起来,但你认为合适。也许weekExtreme &lt;- cbind(weekMax, weekMin[,2])。如果您希望能够将日期范围与周数结合起来,那么从您的第一次约会开始,每隔 7 个日期就可以了。

    【讨论】:

      猜你喜欢
      • 2021-01-06
      • 2014-08-17
      • 1970-01-01
      • 2013-04-30
      • 2012-08-07
      • 2014-07-17
      • 1970-01-01
      • 2020-02-20
      • 2014-03-15
      相关资源
      最近更新 更多