R-programming- Ошибка в get.current.chob(): неправильно настроено или отсутствует графическое устройство

library(quantmod)
getSymbols("LT.NS")
plot(LT.NS["2013-12-01::2014-12-01"])
close<-Cl(LT.NS["2013-12-01::2014-12-01"])
open<-Op(LT.NS["2013-12-01::2014-12-01"])
close<-as.matrix(close)
open<-as.matrix(open)
bbands<-addBBands(n=20,sd=2)
values_bbands<[email protected]
values_bbands[is.na(values_bbands)]<-0
bbands<-as.matrix(values_bbands)
up<-bbands[,1]
up<-as.matrix(up)
down<-bbands[,3]
down<-as.matrix(down)
data<-read.table("c:\\temp\\dates.txt")
attach(data)
head(data)
stock<-as.matrix(data)

for(i in 131:261)
{
    if(close[i]>down[i])
    {
    print("the selling date is:")
    print(i)
    big.red.dot <- xts(open[i], as.Date(stock[i,1]))
    points(big.red.dot, col="red", pch=19, cex=0.5  )
    }
    if(close[i]<up[i])
    {
        print("the buying date is:")
        print(i)
        big.green.dot <- xts(open[i], as.Date(stock[i,1]))
        points(big.green.dot, col="green", pch=19, cex=0.5  )
    }

}

Когда я запускаю этот код в R, я получаю «****Ошибка в get.current.chob(): неправильно установлено или отсутствует графическое устройство»****. 2-3 раза я мог получить вывод с правильным графиком с сигналами покупки и продажи, указанными на графике, но теперь, когда я запускаю код, эта ошибка отображается, я попробовал это и на другой версии R-1.3, все равно появляется ошибка. Подходит ли в приведенном выше коде bbands‹-addBBands(n=20,sd=2)? Потому что, когда я запускаю свой код в отдельных строках, для этой строки отображается та же ошибка. Я хочу, чтобы конечный результат представлял собой график с точками покупки и продажи, указанными в соответствующих точках.


person IceIceIce    schedule 17.03.2015    source источник


Ответы (1)


Нет, bbands <- addBBands(n=20,sd=2) не подходит.

addBBands следует вызвать, чтобы добавить полосы Боллинджера к уже существующему графическому устройству, созданному chartSeries. Вы также можете включить его непосредственно в вызов chartSeries:

library(quantmod)
getSymbols("LT.NS")
chartSeries(LT.NS, TA="addBBands(n=20)", subset="2013-12-01::2014-12-01")

Если вы просто хотите рассчитать полосы Боллинджера, просто вызовите TTR::BBands (что и делает addBBands).

bbands <- BBands(HLC(LT.NS), n=20, sd=2)

Все остальное, что вы делаете, можно сделать с помощью пары вызовов addPoints после создания необходимых объектов для построения.

# sells
sell <- Op(LT.NS)
is.na(sell) <- which(!Cl(LT.NS) > bbands$dn)
addPoints(1:nrow(sell), sell, col='red', pch=19, cex=0.5)
# buys
buy <- Op(LT.NS)
is.na(buy) <- which(!Cl(LT.NS) < bbands$up)
addPoints(1:nrow(buy), buy, col='green', pch=19, cex=0.5)

Но обратите внимание, что ваши покупки и продажи не исключают друг друга.

> head(cbind(buy,sell))
           LT.NS.Open LT.NS.Open.1
2007-01-01     1445.9       1445.9
2007-01-02     1447.0       1447.0
2007-01-03     1458.0       1458.0
2007-01-04     1489.7       1489.7
2007-01-05     1500.0       1500.0
2007-01-08     1471.0       1471.0
person Joshua Ulrich    schedule 17.03.2015
comment
Большое спасибо. @Джошуа Ульрих. Это отвечает на мой вопрос. - person IceIceIce; 18.03.2015