首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用dplyr生成交易信号和策略

使用dplyr生成交易信号和策略
EN

Stack Overflow用户
提问于 2017-02-10 18:16:19
回答 1查看 258关注 0票数 0

我最近一直在玩R的技术交易技巧。

我确实发现其中一个问题,特别是对于大量的高频信息,是从信号向量生成策略向量。我想知道是否有更快的方法使用dplyr

让我们从下载苹果股票开始,并生成短期和长期移动平均线

代码语言:javascript
复制
library("TTR")
library("quantmod")
library("PerformanceAnalytics")
library("dplyr")

getSymbols("AAPL", src = "google")
stock <- AAPL
stock <- window(stock['2015-10-01::2017-01-01'])

# Plot if you want to see
#lineChart(stock)

Short <- EMA(Cl(stock), n=5)
Long <- EMA(Cl(stock), n=6)

现在我们有了选定的股票,让我们生成信号向量,当两条移动均线交叉时,该信号向量指示买入和卖出订单

代码语言:javascript
复制
# Signal
Signal <-
  Lag(ifelse(
    Lag(Short) < Lag(Long) & Short > Long, 1,
    ifelse(
      Lag(Short) > Lag(Long) & Short < Long, -1, 0)
  ))
Signal[is.na(Signal)] <- 0

然后,我们使用这个信号来构建策略-这是高频数据中耗时较长的部分-这显然是由于for循环

代码语言:javascript
复制
# Strategy
Strategy <- ifelse(Signal > 1, 0, 1)
for (i in 1:length(Cl(stock))) {
  Strategy[i] <-
    ifelse(Signal[i] == 1, 1, ifelse(Signal[i] == -1, 0, Strategy[i - 1]))
}
x <- as.numeric(Strategy$Lag.1)
x[is.na(x)] <- 0

我当前的dplyr方法如下所示,但它生成了错误的策略

代码语言:javascript
复制
dplyr_strat <-
Signal %>% tbl_df() %>% 
  mutate(Change = if_else(Lag.1 == -1, "Sell", "Buy", "NoChange") ) %>% 
  mutate(Strategy = ifelse(Change == "Buy", 1, 
                           ifelse( Change == "Sell", 0, 
                                   lag(Strategy)) ) ) %>% select(Strategy)
y <- as.numeric(dplyr_strat$Strategy)

和测试

代码语言:javascript
复制
all.equal(x,y)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-10 22:38:48

我同意ep99关于保持它与你最初的for循环一致的评论。我使用了data.table,得到了一个完全匹配的结果,如下所示:

代码语言:javascript
复制
## Using data.table
dt.Signal <- setDT(as.data.frame(Signal))
dt.Signal[, Strategy := ifelse(Lag.1 == 1, 1, ifelse(Lag.1 == -1, 0, lag(Strategy)))]
dt.Signal[is.na(dt.Signal)] <- 0
z <- as.numeric(dt.Signal[, Strategy])

all.equal(x,z)

你遇到的问题很可能是“买”、“卖”和“不变”的逻辑

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42156792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档