2011-12-15 11 views
1

OK、これは別の「私が過去の株価データを取得するにはどうすればいいですか」という質問ではありません。OHLCの過去の株式相場のキャッシュと更新

私は既に、Google Finance、Yahoo、FinvizなどのCSVダウンロードに直接エクスポートされていても、すぐに入手可能な情報源をたくさん見つけました。

ソフトウェア私は積極的にYahooFinanceとDirk EddelbuettelのBeancounterを含む便利なツールを使用して書き込みます。

私の質問は、誰かがbeancounterに精通している場合、単価の最終日の価格を照会するときに、その履歴データがすべてキャッシュされるようにするにはどうすればよいですか(たとえばローカルテキストやsqliteファイル)ウェブをあまりにも打つことを最小限に抑え、時間枠を重ね合わせて繰り返しクエリを高速化するように?

現在のリアルタイム価格をネットワークルックアップすることは不可能ですが、それ自体は問題ありません。 私のpricehist.shスクリプトは、N日後の株価のOHLCV価格とそれを結合します。これはまた、例えば簡単に把握することもできます。右のURL +適切なGET変数にwgetまたはカールします。インスタンスで

$ ./pricehist.sh VQT 6 
VQT 2011-12-14 125.50 125.50 124.43 124.49 20360 
VQT 2011-12-13 128.00 128.00 125.28 125.39 24400 
VQT 2011-12-12 127.50 127.50 126.36 126.66 9100 
VQT 2011-12-09 128.00 128.31 127.82 128.14 12100 

私はにpricehist.shをしたいと思います上:

  • あればそうでないセッションを超える場合の価格は、実際に最後の価格で閉じ、今日の現在の市場データを検索します。 DONE
  • そのティッカーシンボルの残りの履歴がローカルに保存されていないかチェックします。それ以外の場合は、それ以外の場合:
  • VQTの履歴を6日間戻して保存し、代わりに、Perlの財務モジュールを使用して

    $ setup_beancounter -l beancounter.stockdata.sqlite 
    $ beancounter addstock VQT ACPW 
    $ beancounter backpopulate --prevdate '1 month ago' --date 'today' VQT ACPW 
        Adding VQT from 20111114 to 20111214 
        Adding ACPW from 20111114 to 20111214 
    
    $ beancounter dayendreport --prevdate '1 month ago' --date 'today' VQT 
    ## ..... hoping for OHLCV table of VQT only but get this instead: 
    =============================================================================== 
    Profit/loss   from 12 Dec 2011 to 14 Dec 2011 abs, rel change 
    ------------------------------------------------------------------------------- 
    Citigroup, Inc. N USD 2690.00 26.90 2605.00 26.05 -85.00 -3.16% 
    Exxon Mobil Corpo USD 6039.75 80.53 5958.00 79.44 -81.75 -1.35% 
    Google Inc.  USD 15640.75 625.63 15451.75 618.07 -189.00 -1.21% 
    International Bus USD 9557.50 191.15 9436.00 188.72 -121.50 -1.27% 
    ------------------------------------------------------------------------------- 
    Grand Total  USD 33928.00   33450.75   -477.25 -1.41% 
    =============================================================================== 
    

    :私はまだかかわらず、ポートフォリオの単純出力1社の株式のOHLCVテーブルにbeancounterを取得する方法がわからないよ私のすべての検索...しないでこの出力にもかかわらず

をDONE私はキャッシングをアクティブにする場所や、ストレージに使用されるローカルデータファイルについては認識しません。 yahoofinance.rbを呼び出すたびに、squidプロキシログにWebトラフィックが表示されます。私のエンジンのいくつかの処理段階にわたって、しばしば重複している何千ものEODクエリが、これらのWebルックアップを大きなボトルネックにしています。

私は、このホイールはすでに発明されていると考えています。私はそれがMySQLクライアントでRuby、Perl、Bashのスクリプトに課税されても、完全なRDBMSバックエンドを使用します。

私はポーランドの株式市場のために、およそ700個のシンボルのそれぞれについてテキストファイルのみを保守し、grep、sed、awkだけで処理したものは信じられないほど高速です。何千ものサイクルスクリプト - 私のソフトウェアのGPW交換のための毎日の市販前の処理は数時間で行われます。

答えて

0

私は何かをしています。

SQLiteのファイルBeancounterが使用するには、これらのOHLCV毎日レコードを持つテーブルが含まれます。

Table: stockprices 
# |symbol|date |previous_close|day_open  |day_low   |day_high  |day_close|day_change|bid |ask |volume  
----+------+--------+--------------+----------------+----------------+----------------+---------+----------+------+------+---------- 
1 |C  |20111214|26.9   |26.45   |25.92   |27.19   |26.05 |-0.85  |  |  |68284528 
2 |IBM |20111214|191.15  |189.84   |188.0   |190.28   |188.72 |-2.43  |  |  |5031717 
3 |GOOG |20111214|625.63  |621.49   |612.49   |624.32   |618.07 |-7.56  |617.59|618.95|3892889 
31 |HD |20111214|39.51   |39.45   |38.84   |39.57   |39.14 |-0.37  |  |  |12021824 
32 |IBM |20111213|    |193.46   |190.64   |194.3   |191.15 |   |  |  |5008400 
33 |IBM |20111212|    |193.64   |191.22   |193.9   |192.18 |   |  |  |3796100 
34 |IBM |20111209|    |192.91   |192.4   |194.87   |194.56 |   |  |  |4847900 

ので、次の、私は必要に応じて&更新の株式を追加するためにbeancounterを使用するために私のプロセスを書き換え、およびそのEODデータ以降ます報告が不足しているか、私のために働いていない、私はdbから直接それをプルする適切なsqliteコマンドを学び、sed/awkで必要に応じて出力をマッサージし、ここにポストします。

最後に、現在のライブ価格(利用可能な場合)+ キャッシュ履歴の終わりのレコードを組み合わせた単純なpricehist.shクエリが必要です。