2011-08-28 4 views
9

私はquantumodを使ってhttps://stat.ethz.ch/pipermail/r-sig-finance/attachments/20110826/19da3834/attachment.pngのようなプロットを作りたいと思います。quantmodを使ってchartSeries plotに線を描くには?

私は少し不満ですが、これは非常に簡単な作業です。私は、quantmodを使ってグラフ上に線を描きたいと思っています。試して数日後、私はどこにも行きません。私はquantmod :: addLines関数でこれを行う方法の例を見ることができません(これは私が見つけた唯一の似た質問ですが、回答を見つけることができませんでしたhttp://r.789695.n4.nabble.com/quantmod-plot-trendline-td894632.html

私の問題はこれです:私はプロットしたい指定された日付/時刻/棒グラフの横の横線。この行は、特定のバーから始まる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) 

をしかし、これは実際にラインではありません...そして、私はテキストを追加するOWを知らない...

その後、私は

これを試してみました
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) 

再度、テキストを追加することはできません。このアプローチのもう一つの問題は、私が一番上の伝説を取り除くことができないということです。私は数十または1つのグラフの凡例にこれらの行の数百人を描きたいので、あなたのアイデア/コード例については、事前に...

感謝を表示すべきではない/ ...

敬具、 サモ。

+0

私は良い答え/ソリューションhttps://mailman.stat.ethz.ch/pipermail/r-sig-finance/2011q3/008425.htmlを受け取りました。ありがとう。 – Samo

答えて

3

(私はStergios MarinopoulosのR-sig-financeの回答をコピーしています) 新しいchart_Series()関数をテキストとセグメントと共に使用します。

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) ; 

私には追加の解説があります。メッセージを追加するには:text(x,y,"message")ここで、xはバーの番号(左端のバーは1です; 0またはマイナスを使用して左側を描画します)、およびyはグラフの値です。 adjの場合、0は左揃え、1は右揃え、0.5は中央整列を意味します。 0..1の範囲外ではそれに応じてそれをずらします(ただし、それに頼るのは賢明ではありません)。

セグメント(x1、y1、x2、y2)は、(x1、y1)から(x2、y2)まで線を描く。ここでもxは棒指標であり、yは価格である。

以下、20%不透明な赤で、二等辺三角形を描く: ポリゴン(C(20,30,40)、C(5290,5320,5290)、COL = "#1 ff000033")

すなわちすべてのRグラフィックス機能が利用可能です。 chart_Series()を使用する必要があります。

+0

ダレン、thnx。関数require(quantmod)内にコードを埋め込むと、このアプローチに問題があります。 getSymbols( "SPY") drawSomething <-function(){ \t chart_Series(SPY、subset = "2011-08 :: "、type =" candlesticks ") \tテキスト(9,112.00、" SOME TEXT "、adj = 0); \tセグメント(9,111.5,12,111。5)。 } drawSomething()私がそうした場合、text.default(9,112、 "SOME TEXT"、adj = 0)でエラーが発生します。 plot.newはまだ呼び出されていません。私はプロット(chart_series(...)を使用して問題を解決することを理解していますが、私は何世紀にもわたって再描画を行うので、何百もの行、テキスト、およびadd_TAを持っています。 – Samo

+0

@ Samo問題は前の行であるため、エラーメッセージは気を散らすものです。関数にプロットを作成する関数を使用するときは、それを印刷する必要があります。私。最初の行を 'print(chart_Series(SPY、subset =" 2011-08 :: "、type =" candlesticks "))に変更してください。 –

+0

これは解決策がありますかhttp://stackoverflow.com/questions/8639928/issue-with-quantmod-add-ta-and-chart-series-linesとtext-nexの質問は私が投稿しましたか? – Samo

関連する問題