0

私は R プログラミングの初心者で、現在 R と対話するシステムを開発しています。私の質問は次のとおりです。

「yahoo」「google」などのさまざまなソースからではなく、スクリプトからハードコードされた引用を取得するにはどうすればよいですか?

スクリプトに引用符をハードコーディングする必要があるのはなぜですか?

私はダウンストリーム システムとして Rserve を使用しています。メイン システムはデータのフェッチを行い、他のポートフォリオ チェックを実行してからR-TTR-quantmod、財務数値の計算のためにパッケージを呼び出します。したがって、Rにこれらの引用を再取得させたくないので、引用をハードコーディングしてシステムからRserve実行場所に送信し、そこから結果が返されるようにします。このようにして、私のコードは R の標準的な計算に依存し、ユーザーは他のビジネス ロジックに集中できます。

csv ファイルのアプローチを使用しないのはなぜですか?

私はリアルタイム システムを使用しており、ファイル io には膨大な時間がかかり、システムの速度が低下します。

例えば:

library(quantmod)

library(TTR)

Yahoo! から S&P500 インデックス データを取得します。ファイナンス

getSymbols("^RIL", from="2000-01-01", to="2008-12-07")

RSI指標を計算する

rsi <- RSI(Cl(RIL),2)

これが私が必要とするものです:

  • 呼び出すのではなくgetSymbol、データをスクリプト内の変数として渡したいと思います。
  • データが非常に大きい場合もあれば、非常に小さい場合もあると思います。
  • では、このシナリオではどうすればよいでしょうか?
4

1 に答える 1

0

load/save を使用して xts オブジェクトをキャッシュするコードに取り組んでいます。コードは簡単です:

getSymbols("^RIL", from="2000-01-01", to="2008-12-07")
save(RIL,file="cache/RIL.rdata")

次に、分析を行う他のスクリプトで:

load("cache/RIL.rdata")
rsi <- RSI(Cl(RIL),2)

追加のボーナスとして、.rdata ファイルは gzip されています。

いくつかの統計: 図表 1

私の以前のアプローチでは、1 日あたり 1 つの csv ファイルとして 1 分バーがありました。合計 12MB になる 303 個のファイルを 86,590 行の XTS オブジェクトにロードするのに 5.64 秒かかりました (経過、ユーザー時間は 5.34 秒)。

.rdata ファイルは 2.8MB で、0.056 秒かかります。

資料 2:

最初のアプローチ: RSI をデータに対して新たに実行します (別の計算の前処理として)。2 番目の方法: 別のオフライン プロセスでデータに対して RSI を実行し、それを .rdata ファイルにキャッシュします。

RSI ファイルの読み込みは、RSI データを新たに計算するよりも 3 倍速くなりました。

警告: 私のタイミング テストでは、パス 1 で作成/保存され、パス 2 から 20 でロードされるループを使用しました。私がタイミングを取ったのは後者のロードでした。したがって、どの OS ファイル キャッシュでも新鮮だったはずです。

于 2012-08-08T00:16:26.827 に答える