标签: quantmod

在R中创建交易信号

我正在构建一个交易策略,我被困在两个关键领域.当使用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)

r trading quantmod

9
推荐指数
1
解决办法
2088
查看次数

如何使用quantmod在chartSeries图上画一条线?

我想使用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)

同样,添加文本是不可能的.这种方法的另一个问题是我无法摆脱顶部的传说.因为我想在一个图表上绘制数十或数百个这样的线条,所以不应该显示图例...

在此先感谢您的想法/代码示例/ ...

最好的问候,萨莫.

charts r quantmod

8
推荐指数
1
解决办法
6971
查看次数

R中的quantstrat:设置基于日期的退出信号

许多量子计和附带的例子似乎是通过交叉某种技术指标来围绕进入和退出交易.

但是,假设你有一个任意指标,你用它来触发交易进入,但是你想在第二天开盘或收盘时解除交易.你最好如何实现这个例子?

我们来看下面的例子:

  • 两种仪器:XYZ和ABC
  • 进入信号:可以是任何东西 - 我们只想在我们的"信号"评估为真时进入交易.对于这个例子,假设任何时候XYZ/ABC的比率在T + 0从开放到关闭的任一方向变化超过1%
  • 退出信号:市场活动,如开盘或平仓.让我们说,在这个例子中,我们想要在第二天开放时解除我们在上面设置的交易.

例如,使用blotter这样的东西写相对容易:

假设ratio用列调用xts对象:

  1. ABC OHLC,
  2. XYZ OHLC,
  3. ABC/XYZ的比率表示为OHLC
  4. 货币OHLC"CCY"(这是一个交叉货币对)
  5. 我们的指标(OpCl(ABC/XYZ)),
  6. "发出信号?" 如果指标> 1%,则评估为1,否则评估为0
  7. "信号dn?" 如果指标<-1%,将评估为1,否则为0

我们的代码将是:

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)

r quantitative-finance xts quantmod quantstrat

8
推荐指数
1
解决办法
2186
查看次数

在R编程中修正波动率曲面图的插值

下面的脚本通过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)

3d interpolation r rgl quantmod

8
推荐指数
1
解决办法
4188
查看次数

Python中是否有像quantmod中类似的库可以下载财务报表数据?

Python中是否有像quantmod中类似的库可以下载财务报表数据?我想用Python下载每个股票的历史收入.有人能给我一个暗示吗?谢谢.

python r quantmod

8
推荐指数
1
解决办法
7148
查看次数

如何使用R找到支持/阻力水平

我还没有找到关于如何在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的东西:

FINVIZ

r quantmod

8
推荐指数
1
解决办法
829
查看次数

quantmod::getSymbols() 无法从雅虎财经检索数据

更新: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 次尝试后无法建立会话。

尝试了什么:

  1. 远程服务器上的 Jupyter Notebook中的相同代码会产生相同的超时。
  2. 不同 Windows 10 计算机上的新 RStudio(或 R)会话中的相同代码会产生相同的超时。
  3. 如果会话是昨天在任一 Windows 10 计算机上启动的,则 RStudio(或 R)会话中的相同代码可以工作。
  4. 如果会话是昨天在任一 Windows 10 计算机上启动的,则相同的代码可以在以前版本的 R 或 RStudio …

yahoo finance r quantmod

8
推荐指数
0
解决办法
931
查看次数

垂直直方图

我想做一个垂直直方图.理想情况下,我应该能够每天在一个地块上放置多个.

如果这可以与quantmod实验chart_Series或其他一些能够绘制条形图的库相结合,那么这个时间序列会很棒.请参阅随附的屏幕截图.理想情况下,我可以绘制这样的东西.

是否有内置或现有的库可以帮助解决这个问题?

市场概况示例

r quantmod

7
推荐指数
2
解决办法
6817
查看次数

尝试复制答案时,Quantmod,getSymbols出错

我刚下载了包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)

r quantmod

7
推荐指数
1
解决办法
6216
查看次数

使用getSymbols()的最快和/或更好的方法是什么?将每个股权分开或全部分开?

让我们假设您想从2000年以来从雅虎和Alpha Vantage(AV)获得大量股票(> 100)的数据.

我想知道是否有人调查过以下两个问题中的任何一个:

1)使用getSymbols()时更快的是什么?在一次调用getSymbols()时,将每个股权分开或全部分开?

2)什么会少出错?与所有股票分开看涨或打电话?

感谢您在2分中的任何一点提供任何帮助或建议.

HL

r quantmod

7
推荐指数
1
解决办法
85
查看次数