gpt4 book ai didi

r - 基于 xts 对象的购买填充保留

转载 作者:行者123 更新时间:2023-12-02 00:19:09 26 4
gpt4 key购买 nike

当股票 (IBM) 的每日跌幅超过 10% 时,下面的示例创建了一个买入信号 (1)。

然后它会再创建一个保持信号 4 天。如果保留天数增加,代码将变得更加不守规矩。有没有什么方法可以使用 apply 函数或类似效率的东西(即,不是 for 循环)来重写 holdig 代码?

library(quantmod)
getSymbols("IBM")
buysig <- Lag(ifelse(dailyReturn(IBM) < -.10,1,0))
holdsig <- ifelse( Lag(sig) == 1 | Lag(sig, k=2) == 1 | Lag(sig, k=3) == 1 | Lag(sig, k=4) == 1, 1, 0)

每当我觉得自己在 apply 上变得更好时,我就会后退两步。

最佳答案

首先,请注意 Lag 可以采用 k 值的向量:

head(Lag(buysig, k=1:4)
# Lag.1 Lag.2 Lag.3 Lag.4
# 2007-01-03 NA NA NA NA
# 2007-01-04 NA NA NA NA
# 2007-01-05 0 NA NA NA
# 2007-01-08 0 0 NA NA
# 2007-01-09 0 0 0 NA
# 2007-01-10 0 0 0 0

这让事情变得非常简单:然后您可以逐行检查(apply with MARGIN = 1)值等于 1:

apply(Lag(buysig, k=1:4) == 1, 1, any)

(如果您需要将 {TRUE,FALSE} 转换为 {1,0},您可以通过 as.numeric 传递输出)

关于r - 基于 xts 对象的购买填充保留,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11679084/

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