程式
在 tidyquant 中計算多個指標
我正在嘗試使用 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
- 如何將收盤價轉換為每週?和
- 如何在具有 RSI 和 EMA 列名稱的一個 tq_mutate 行中獲取 RSI 和 EMA?(兩者都是 EMA 列名的結果)。
我將使用
tidyquant
0.3.0 版本來回答這個問題,它從x_fun
變為ohlc_fun
intq_mutate
並tq_transform
添加了新col_rename
參數來解決像你這樣的非直覺列名的情況。第 1 部分:如何將收盤價轉換為每週價格?
您正在使用
periodReturns
函式 fromquantmod
,並且您更可能想要使用to.period
函式 fromxts
。有幾種方法可以做到這一點。第一個版本是您正在嘗試的。第二種是使用
quantmod
OHLC 表示法的替代方法。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 和 EMAn = 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")