2011-08-28 17 views
9

Ben quantmod kullanarak bu https://stat.ethz.ch/pipermail/r-sig-finance/attachments/20110826/19da3834/attachment.png gibi bir arsa üretmek istiyorum.Grafikte bir çizgi nasıl çizilir Quantmod kullanarak grafikleri çizme?

Birazcık hüsrana uğramıştım, sanırım çok basit bir görev. Ben quantmod kullanarak grafik üzerinde bir çizgi çizebilmek istiyorum. Birkaç gün uğraştıktan sonra hiçbir yere gitmiyorum. Ben quantmod :: addLines fonksiyonu ile bu nasıl bir örnek göremiyorum (Bu bulduğum ama bu bir cevap bulamadı sadece benzer bir soru bu http://r.789695.n4.nabble.com/quantmod-plot-trendline-td894632.html)

Benim sorun şu: Ben komplo istiyorum Belirtilen tarih/saat/satırda yatay bir çizgi nad y değeri. Bu satırın yalnızca belirli bir çubukta başlayan n (örneğin 5) çubuk olmasına izin verilir (ek olarak, belirtilen y değerinin satırının hemen yukarısındaki metni de eklemek istiyorum).

denedim birkaç şey: Ben bu

denedi Sonra

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) 

Ama bu ... aslında çizgileri olmayan Ve ow metin eklemek için bilmiyorum ...

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) 

Yine, metin eklenmesi mümkün değildir. Bu yaklaşımdaki diğer problem, üstteki efsaneden kurtulamam. Ben onlarca veya bir grafik efsanesine o çizgilerin yüzlerce çekmek istiyorum beri fikir/kod örnekleri için şimdiden ...

Teşekkür görüntülenmesi gerektiğini/...

Saygılarımızla, Samo.

+0

İyi bir yanıt/çözüm https://mailman.stat.ethz.ch/pipermail/r-sig-finance/2011q3/008425.html aldım. Teşekkürler. – Samo

cevap

3

(Sadece R-sig-finans, Stergios Marinopoulos tarafından yanıt kopyalıyorum) Metin ve kesimleri ile birlikte yeni chart_Series() işlevini kullanın.

require(quantmod) 
getSymbols("SPY") 
chart_Series(SPY, subset="2011-08::", type = "candlesticks") 
text(9, 112.00, "SOME TEXT", adj=0); 
segments(9, 111.5, 12, 111.5) ; 

Bana göre bazı ek yorumlar. Bir mesaj eklemek için: text(x,y,"message") Burada x çubuğun numarasıdır (en soldaki çubuk için 1, sol taraftan çekmek için 0 veya negatif kullanabilirsiniz) ve y grafikteki değerdir. Adj için, 0 sol hizalama, 1 sağa hizalama, 0,5 orta anlamına gelir. 0..1 aralığının dışında buna göre değişir (ama belki de buna güvenmek için yanlış bir şekilde).

kesimleri (x1, y1, x2, y2), (x1, y1) ile (x2, y2) arasında bir çizgi çizer; burada x, bir çubuk dizini ve y bir fiyattır.

şu% 20 opak kırmızı renkli bir ikizkenar üçgen çizer: çokgen (C (20,30,40), c (5290,5320,5290), sütun = "# ff000033")

yani tüm R grafik fonksiyonları kullanılabilir; ancak chart_Series() kullanmalısınız.

+0

Darren, thnx. Ben bir işlev içinde kodunuzu gömmek zaman bu yaklaşımın bir sorun var gerektirir (quantmod) getSymbols ("SPY") drawSomething Samo

+0

@Samo Sorun, önceki satır olduğu için bir dikkat dağınıklığıdır. Bir işlevde bir çizim oluşturan bir işlevi kullandığınızda, onu yazdırmanız gerekir. Yani ilk satırınızı 'print (chart_Series (SPY, subset =" 2011-08 :: ", type =" candlesticks ") olarak değiştirin) –

+0

Bu http://stackoverflow.com/questions/8639928 için bir çözümünüz olabilir mi?/issue-with-quantmod-add-ta-ve-chart-series-lines-ve-text-disappear-after-nex soru gönderdim? – Samo