程式

在 tidyquant 中計算多個指標

  • January 29, 2017

我正在嘗試使用 R 中的 tidyquant 包獲取股票的多個指標值,例如 RSI 和 EMA。我嘗試了小插圖中的範例:

tq_get("AAPL", get = "stock.prices")%>% tq_transform_xy_(x_fun = 'close', transform_fun = 'periodReturn',period = 'weekly') %>% tq_mutate(x_fun = Cl, mutate_fun = RSI, n = 14, period = 'weekly') %>% tq_mutate(x_fun = Cl, mutate_fun = EMA, n = 14, period = 'weekly')

導致錯誤:

Error in match(x, table, nomatch = 0L) : argument ".x" is missing, with no default
  1. 如何將收盤價轉換為每週?和
  2. 如何在具有 RSI 和 EMA 列名稱的一個 tq_mutate 行中獲取 RSI 和 EMA?(兩者都是 EMA 列名的結果)。

我將使用tidyquant0.3.0 版本來回答這個問題,它從x_fun變為ohlc_funintq_mutatetq_transform添加了新col_rename參數來解決像你這樣的非直覺列名的情況。

第 1 部分:如何將收盤價轉換為每週價格?

您正在使用periodReturns函式 from quantmod,並且您更可能想要使用to.period函式 from xts

有幾種方法可以做到這一點。第一個版本是您正在嘗試的。第二種是使用quantmodOHLC 表示法的替代方法。

1A,使用tq_transform_xy_它只返回收盤價:

tq_get("AAPL", get = "stock.prices") %>% 
   tq_transform_xy_(x = 'close', transform_fun = 'to.period', period = 'weeks')

1B,tq_transform如果您使用,使用返回開盤價、最高價、最低價、收盤價和成交量ohlc_fun = OHLCV

tq_get("AAPL", get = "stock.prices") %>% 
   tq_transform(ohlc_fun = OHLCV, transform_fun = to.period, period = 'weeks')

第 2 部分:如何在具有 RSI 和 EMA 列名稱的 tq_mutate 行中獲取 RSI 和 EMA?

您正在使用管道 () 的程式碼片段%>%轉換後的周期返回到 RSI 和 EMA 突變。這可能不是您想要做的。相反,您首先要使用該xts函式將數據轉換為每週週期to.period(參考第 1 部分)。一旦有了每週週期,您就可以使用具有周期數的每週收盤價來計算 RSI 和 EMA n = 14(請注意,由於週期性變化,這是一個 14 週的間隔,這可能不是您想要的)。這是我將如何做到這一點:

tq_get("AAPL", get = "stock.prices") %>% 
   tq_transform(ohlc_fun = OHLCV, transform_fun = to.period, period = "weeks") %>%
   tq_mutate(ohlc_fun = Cl, mutate_fun = RSI, n = 14, col_rename = "RSI.14") %>% 
   tq_mutate(ohlc_fun = Cl, mutate_fun = EMA, n = 14, col_rename = "EMA.14")

引用自:https://quant.stackexchange.com/questions/31983