Utilizaré tidyquant
versión 0.3.0 para responder a esta pregunta, que cambia de x_fun
a ohlc_fun
en tq_mutate
y tq_transform
y añade el nuevo col_rename
para resolver situaciones como la suya con nombres de columna no intuitivos.
Parte 1: ¿Cómo transformar las comillas de cierre en semanales?
Está utilizando el periodReturns
función de quantmod
y lo más probable es que quiera utilizar el to.period
función de xts
.
Hay un par de maneras de hacerlo. La primera versión es la que estás intentando. La segunda es una alternativa utilizando el quantmod
Notación OHLC.
1A, Utilizando tq_transform_xy_
que devuelve sólo los precios de cierre:
tq_get("AAPL", get = "stock.prices") %>%
tq_transform_xy_(x = 'close', transform_fun = 'to.period', period = 'weeks')
1B, Utilizando tq_transform
que devuelve los precios de apertura, alta, baja, cierre y volumen si se utiliza ohlc_fun = OHLCV
:
tq_get("AAPL", get = "stock.prices") %>%
tq_transform(ohlc_fun = OHLCV, transform_fun = to.period, period = 'weeks')
Parte 2: ¿Cómo puedo obtener el RSI y la EMA en una línea tq_mutate con los nombres de las columnas RSI y EMA?
El fragmento de código que está utilizando tuberías ( %>%
) el período transformado vuelve a las mutaciones del RSI y la EMA. Esto no es probablemente lo que usted quiere hacer. Más bien, usted quiere primero transformar los datos a la periodicidad semanal utilizando el xts
función to.period
(ref. Parte 1). Una vez que tenga la periodicidad semanal, puede calcular el RSI y la EMA utilizando los precios de cierre semanales con el número de períodos, n = 14
(tenga en cuenta que este es un intervalo de 14 semanas debido al cambio de periodicidad, que puede no ser lo que usted desea). Así es como yo haría esto:
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")