GnuCashで日本株の株価を自動取得する(PostgreSQL&Perl連携)

GnuCashで日本株の株価を自動取得する(PostgreSQL&Perl連携)

GnuCashの株価取得問題とは

日本の株価の取得は長らく
http://liosk.blog103.fc2.com/blog-entry-185.html
https://github.com/LiosK/Finance–Quote–YahooJapan
にお世話になってきました。GUI,CLIとも取得できていたのですが、 gnucash-cli --quotes get ではあるバージョンから取得できなくなりました。これは GnuCash が内部で「yahoo_japan」というデータ源を認識していないためです。

なぜこんなことが起きる?

GnuCash の GUI版では初期化順序が異なるため動作しますが、CLI版では未知のデータ源をスキップしてしまいます。つまり、CLI でyahoo_japanを使用するには、別のルートでデータを集める必要があるということです。

解決策:Finance::Quote で直接 DB に書き込む

GnuCash-CLI を使わず、Perl の Finance::Quote モジュールを使って、PostgreSQL データベースに直接株価を書き込みます。この方法なら yahoo_japan をCLIからも使えて問題を回避でき、Windows・Ubuntu の両環境で動作します。

GnuCash株価取得スクリプト実行画面

セットアップ手順

【Windows の場合】

  • Strawberry Perl をインストール
  • スクリプト内の DB接続先(PostgreSQL IP)を確認
  • 環境変数 ALPHAVANTAGE_API_KEYFQ_CURRENCY を設定
  • Perl スクリプトを実行

【Ubuntu の場合】

注意点

  • 日本株シンボル:「7203.T」ではなく「7203」(4桁)で指定
  • Alpha Vantage の制限:無料枠は 1日 25リクエストまで
  • GnuCash の DB ロック:GUI版を起動しながらでは動作しません。スクリプト実行時は GUI を閉じてください

まとめ

GnuCash と PostgreSQL、Perl を組み合わせることで、日本株を含むあらゆる資産の株価を自動取得・更新できます。一度セットアップすれば、cron等で毎日自動で最新の価格情報が DB に反映されるため、管理がより正確になります。Windows・Linux 両対応なので、どのような環境でも導入可能です。