我正在构建一个交易策略,我被困在两个关键领域.当使用Stoch和MACD时quantmod,我试图创建一个信号,当慢速随机交叉快速随机(1),反之亦然(-1),并在(0)之间平坦.除了列名MACD和Signal之外,MACD代码是相同的.最后,当所有三个信号等于1,-1,0时,我试图合并三个信号以创建主信号.
library(quantmod)
####################
## BOLINGER BANDS ##
####################
getSymbols("SPY", src="yahoo", from="2013-01-01", to="2015-05-01")
x <- na.omit(merge(SPY, BBands(Cl(SPY))))
x$sig <- NA
# Flat where Close crossed the mavg
x$sig[c(FALSE, diff(sign(Cl(x) - x$mavg), na.pad=FALSE) != 0)] <- 0
x$sig[Cl(x) > x$up] <- -1 # short when Close is above up
x$sig[Cl(x) < x$dn] <- 1 # long when Close is below dn
x$sig[1] <- 0 # flat on the first day
x$sig[nrow(x)] <- 0 # flat on the last day
# …Run Code Online (Sandbox Code Playgroud) 我想使用quantmod 生成这样的情节https://stat.ethz.ch/pipermail/r-sig-finance/attachments/20110826/19da3834/attachment.png.
我想,我有点沮丧,这是一项非常简单的任务.我希望能够使用quantmod在图表上绘制一条线.经过几天的尝试,我无处可去.我看不到有关如何使用quantmod :: addLines函数执行此操作的示例(这是我找到的唯一类似问题,但无法找到答案http://r.789695.n4.nabble.com/quantmod- plot-trendline-td894632.html)
我的问题是:我想在指定的日期/时间/条nad y值绘制一条水平线.这条线只允许从某个特定条形开始的n(例如5)条长(另外我还想在指定的y值的行上方添加文本).
我尝试了几件事:
getSymbols("SPY")
lines.SPY <- (Hi(SPY) + Lo(SPY))/2
names(lines.SPY) <- c("lines")
lines.SPY$BuySell <- ifelse(lag(lines.SPY$lines) > lines.SPY$lines, 1, -1)
chartSeries(SPY, subset="2011-08::", theme=chartTheme('white',
up.col='blue', dn.col='red'))
addTA(lines.SPY$lines[lines.SPY$BuySell == -1,], type='p', col='darkred', pch="_", on=1, cex = 2.5)
addTA(lines.SPY$lines[lines.SPY$BuySell == 1,], type='p', col='green4', pch="_", on=1, cex = 2.5)
Run Code Online (Sandbox Code Playgroud)
但这实际上不是线......而且我不知道要添加文字......
然后我试过这个
getSymbols("SPY")
subset = "2011-03::"
dev.new()
chartSeries(SPY, subset=subset, theme="white")
test <- xts(rep(coredata(last(Cl(SPY))), 20), order.by=index(last(SPY, n=20)))
addTA(test, on=1, col="red", legend=NULL, lwd=3)
Run Code Online (Sandbox Code Playgroud)
同样,添加文本是不可能的.这种方法的另一个问题是我无法摆脱顶部的传说.因为我想在一个图表上绘制数十或数百个这样的线条,所以不应该显示图例...
在此先感谢您的想法/代码示例/ ...
最好的问候,萨莫.
许多量子计和附带的例子似乎是通过交叉某种技术指标来围绕进入和退出交易.
但是,假设你有一个任意指标,你用它来触发交易进入,但是你想在第二天开盘或收盘时解除交易.你最好如何实现这个例子?
我们来看下面的例子:
例如,使用blotter这样的东西写相对容易:
假设ratio用列调用xts对象:
我们的代码将是:
for( i in 1:nrow(ratio) ) {
## Define the dates:
CurrentDate <- index(ratio[i,])
NextDate <- index(ratio[i+1,])
## Define the prices:
XYZClosePrice <- as.numeric(ratio$XYZ.Close[i,])
ABCClosePrice <- as.numeric(ratio$ABC.Close[i,])
XYZOpenPrice <- as.numeric(ratio$XYZ.Open[i+1,])
ABCOpenPrice <- as.numeric(ratio$ABC.Open[i+1,])
CCYClosePrice <- as.numeric(ratio$CCY.Close[i,])
CCYOpenPrice <- as.numeric(ratio$CCY.Open[i+1,])
## Define the spread:
SpreadOp <- ABCOpenPrice/XYZOpenPrice
SpreadCl <- ABCClosePrice/XYZClosePrice
## Define the …Run Code Online (Sandbox Code Playgroud) 下面的脚本通过quantmod中的函数提取雅虎数据,然后按摩数据以使用RGL库来创建3D图形,附加的是一个ggplot来显示我试图在单独的行geoms中创建表面的数据.问题是3D图表看起来非常难看并因为前月到期时点数量有限而减少..有谁能告诉我这里发生了什么,我能做些什么来解决这个问题..我需要顺利吗?每个到期的行然后插值.... ?? volsurface http://img15.imageshack.us/img15/7338/surface.png ggplot2_smile http://img402.imageshack.us/img402/1272/volatilitysmilegoog.png
library(RQuantLib)
library(quantmod)
library(rgl)
library(akima)
library(ggplot2)
library(plyr)
GetIV <- function(type, value,
underlying, strike,dividendYield, riskFreeRate, maturity, volatility,
timeSteps=150, gridPoints=151) {
AmericanOptionImpliedVolatility(type, value,
underlying, strike,dividendYield, riskFreeRate, maturity, volatility,
timeSteps=150, gridPoints=151)$impliedVol
}
GetDelta <- function(type, underlying, strike,
dividendYield, riskFreeRate, maturity, volatility,
timeSteps=150, gridPoints=149, engine="CrankNicolson") {
AmericanOption(type,underlying, strike, dividendYield, riskFreeRate, maturity, volatility,
timeSteps=150, gridPoints=149, engine="CrankNicolson")$delta
}
# set what symbol you want vol surface for
underlying <- 'GOOG'
# set what your volatility forcast or assumption is
volforcast <- …Run Code Online (Sandbox Code Playgroud) Python中是否有像quantmod中类似的库可以下载财务报表数据?我想用Python下载每个股票的历史收入.有人能给我一个暗示吗?谢谢.
我还没有找到关于如何在R中找到支撑/阻力位的任何好的答案.基本上我想要股票/区域或股票在哪里巩固,但发现很难这样做.
# loads quatmod & xts
library("quantmod")
# Retrive 'ESSI' TICKER OHLCV data
STOCK = getSymbols("ESSI",auto.assign = FALSE)
# last observation carried formward / facilitates NAs
STOCK <- reclass(apply(STOCK,2,na.locf),match.to=STOCK)
# To be used as a rolling window
K=20
# Find MAX for Each Open, High, Low, Close Column & merge them
MAX <- merge.xts(rollmax(Op(STOCK), k=K, na.pad=TRUE),rollmax(Hi(STOCK), k=K, na.pad=TRUE),rollmax(Lo(STOCK), k=K, na.pad=TRUE),rollmax(Cl(STOCK), k=K, na.pad=TRUE))
# Find the mean of each MAX row
MAX <- na.locf(reclass(apply(MAX,1,mean),match.to=MAX))
Run Code Online (Sandbox Code Playgroud)
我会为Low's做同样的事情,但我认为我会更好地使用DonchianChannel()但它不是我想要的......输出应该返回类似于FinViz的东西:
更新:2022 年 4 月 29 日
根据 Github 中的讨论,Joshua Ulrich 已将补丁上传到 Github 来解决该问题。
问题在于雅虎网站已停止提供人们所期望的但对于工作new.session()而言并非必需的面包屑。getSymbols()
要安装补丁,请退出所有 R 和 RStudio 会话。启动新的 R 或 RStudio 会话。执行命令
remotes::install_github("joshuaulrich/quantmod@358-getsymbols-new.session")
library("quantmod")
quantmod::getSymbols("TSLA")
Run Code Online (Sandbox Code Playgroud)
原问题
今天(2022 年 4 月 28 日)我遇到了一个不寻常的情况quantmod::getSymbols()。
如果在昨天启动的 RStudio 会话中执行以下代码,则该代码有效(R 版本 4.2.0,Windows 10):
if (!require("quantmod")) install.packages("quantmod")
library("quantmod")
quantmod::getSymbols("TSLA")
Run Code Online (Sandbox Code Playgroud)
但是,相同的代码在同一台计算机上的新 RStudio 会话中会产生超时错误:
new.session() 中的错误:5 次尝试后无法建立会话。
尝试了什么:
我想做一个垂直直方图.理想情况下,我应该能够每天在一个地块上放置多个.
如果这可以与quantmod实验chart_Series或其他一些能够绘制条形图的库相结合,那么这个时间序列会很棒.请参阅随附的屏幕截图.理想情况下,我可以绘制这样的东西.
是否有内置或现有的库可以帮助解决这个问题?

我刚下载了包Quantmod,一直在玩getSymbols.我希望能够获得多个股票的数据,就像这个问题:getSymbols并使用lapply,Cl和merge来提取收盘价.
不幸的是,当我试图复制答案时:
tickers <- c("SPY","DIA","IWM","SMH","OIH","XLY",
"XLP","XLE","XLI","XLB","XLK","XLU")
getSymbols(tickers, from="2001-03-01", to="2011-03-11")
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
Error in download.file(paste(yahoo.URL, "s=", Symbols.name, "&a=", from.m, :
cannot open URL
'http://chart.yahoo.com/table.csv?s=SPY&a=2&b=01&c=2001&d=2&e=11&f=2011&g=d&q=q&y=0&z=SPY&x=.csv'
In addition: Warning message:
In download.file(paste(yahoo.URL, "s=", Symbols.name, "&a=", from.m,
: cannot open: HTTP status was '0 (null)'
Run Code Online (Sandbox Code Playgroud)
这是我的sessionInfo()
R version 3.0.2 (2013-09-25)
Platform: x86_64-apple-darwin10.8.0 (64-bit)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] quantmod_0.4-0 TTR_0.22-0 xts_0.9-7 zoo_1.7-10 Defaults_1.1-1
loaded via a …Run Code Online (Sandbox Code Playgroud) 让我们假设您想从2000年以来从雅虎和Alpha Vantage(AV)获得大量股票(> 100)的数据.
我想知道是否有人调查过以下两个问题中的任何一个:
1)使用getSymbols()时更快的是什么?在一次调用getSymbols()时,将每个股权分开或全部分开?
2)什么会少出错?与所有股票分开看涨或打电话?
感谢您在2分中的任何一点提供任何帮助或建议.
HL