Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何将技术指标应用于股票清单_R_Lapply_Quantstrat_Technical Indicator - Fatal编程技术网

R 如何将技术指标应用于股票清单

R 如何将技术指标应用于股票清单,r,lapply,quantstrat,technical-indicator,R,Lapply,Quantstrat,Technical Indicator,我试图将MACD和RSI技术指标应用于一系列股票的调整价格。代码的最终目标是根据这两个指标为每只股票生成一个买入/卖出信号。但是,我在使用lappy函数应用指示器时遇到问题。我会感谢你的帮助。谢谢 #Load Packages library(quantstrat) #Initialise Settings start.date <- "2016-01-01" end.date <- as.character(Sys.Date()) #Stock Tic

我试图将MACD和RSI技术指标应用于一系列股票的调整价格。代码的最终目标是根据这两个指标为每只股票生成一个买入/卖出信号。但是,我在使用lappy函数应用指示器时遇到问题。我会感谢你的帮助。谢谢

#Load Packages
    library(quantstrat) 

#Initialise Settings
    start.date <- "2016-01-01"
    end.date <- as.character(Sys.Date())

#Stock Tickers
    tickers <- c("JPM", #JP Morgan
    "FB", #Facebook
    "SPY", #S&P 500
    "AMZN", #Amazon
    "WMT", #Wal-Mart
    "LVMUY", #LVMH
    "MCD", #Mac Donald's
    "BMW", #BMW
    "KO", #Coca-Cola
    "G13.SI", #Genting Sg
    "Z74.SI" #Singtel   
    )

#Retrieving Stock Data
    options("getSymbols.yahoo.warning"=FALSE)
    suppressMessages(getSymbols(Symbols = tickers, from = start.date, to = end.date, src = "yahoo", adjust = TRUE))

#Grouping Adjusted Prices
    AdjPrices <- do.call(merge, lapply(tickers, function(x) Ad(get(x))))

#Apply MACD Indicator
    MACD <- lapply(AdjPrices, MACD, list(AdjPrices, nFast =12, nSlow = 26, nSig = 9))
#加载包
图书馆(quantstrat)
#初始化设置
start.date尝试以下方法:

MACD <- lapply(AdjPrices, FUN = MACD, nFast =12, nSlow = 26, nSig = 9)

您好,很抱歉回复太晚,再次感谢您的帮助。你能给我解释一下你的代码是怎么工作的吗?为了回答你的问题,是的,我最终希望它看起来像这样。此外,我希望包括RSI指标,然后如果两个指标的标准都满足,则生成买入/卖出信号。关于此代码还有什么不清楚的地方,我将进行扩展?您首先在问题中使用了这些函数(如do.call等),因此不确定您不清楚的是什么。您能向我解释一下方括号{}在do.call函数中的作用吗?谢谢
    z <- do.call(merge, lapply(AdjPrices, function(x, nFast, nSlow, nSig) {
        y <- MACD(x, nFast, nSlow, nSig) 
        colnames(y) <- paste0(colnames(y),".", gsub(pattern = ".Adjusted", replacement = "", x = colnames(x)))
        y
        }, nFast = 12, nSlow = 26, nSig = 9))

> tail(z)
            macd.JPM signal.JPM   macd.FB signal.FB  macd.SPY signal.SPY
2017-06-23 0.5439033  0.2746984 0.7333757 0.6242897 0.4931503  0.5617852
2017-06-26 0.5628315  0.3323250 0.7378923 0.6470103 0.4735852  0.5441452
2017-06-27 0.6455863  0.3949773 0.5754388 0.6326960 0.3884193  0.5130000
2017-06-28 0.8647098  0.4889238 0.5809413 0.6223450 0.3883060  0.4880612
2017-06-29 1.1460891  0.6203568 0.4633677 0.5905496 0.3134080  0.4531306
2017-06-30 1.3738249  0.7710504 0.3627919 0.5449980 0.2656285  0.4156302
use_MACD <- function(x, nFast, nSlow, nSig) {
               y <- MACD(x, nFast, nSlow, nSig) 
               colnames(y) <- paste0(colnames(y),".", gsub(pattern = ".Adjusted", replacement = "", x = colnames(x)))
               y
}


tickerLst <- lapply(AdjPrices, FUN = use_MACD, nFast = 12, nSlow = 26, nSig = 9)
# Now have a list of "macd" values for each ticker.

#Combine into one xts object:
z <- do.call(merge, tickerLst)