LoginSignup
6
4

More than 5 years have passed since last update.

日経平均やダウ平均の状況をモードラインに表示する

Last updated at Posted at 2016-12-22

はじめに

経済状況が気になって仕方がないEmacsユーザにオススメです.stock-ticker.elを使います.

Screen_Shot_2016-12-22_at_4_14_32_PM.png

NOTE: 最近繋がらないと思っていたら,YQLのデータベースのURLが変わっていました.stock-ticker--update にあるURLを http://www.datatables.org/alltables.env にすれば大丈夫です.ISSUE発行済.

NOTE: ISSUEが未解消なので,自分のリポジトリに置きました.

git clone https://github.com/takaxp/stock-ticker.git

導入

MELPA を使うか,Githubから入手できます.

関数の再定義(オプション)

stock-ticker.elをそのまま使うと,モードラインの表示が長くなる傾向があるので, stock-ticker--parse を再定義して,銘柄(3桁のみ)と変動率だけを表示するようにします

stock-ticker--parse.el
(defun stock-ticker--parse (data)
  "Parse financial DATA into list of display strings."
  (let ((qs (assoc-default
             'quote (assoc-default
                     'results (assoc-default 'query data)))))
    (mapcar
     (lambda (q)
       (let ((percent (assoc-default 'PercentChange q))
             (name (assoc-default 'Name q))
             (symbol (assoc-default 'Symbol q))
             (change (assoc-default 'Change q)))
         (format " %s:%s"
                 (substring
                  (if (or
                       (string-match "=" symbol)
                       (string-match "\\^" symbol))
                      name symbol) 0 3)
                 (if percent percent ""))))
     qs)))

設定

起動時には表示不要なので,ウィンドウにフォーカスが移った時に開始して,さらに指定秒数後に(デフォルト:90秒)でモードラインから消えるようにしています.表示秒数を指定したい場合は,my:activate-stock-tickerを引数付きで呼び出してください.

stock-ticker-config.el
;; 適宜,遅延読み込みに設定を書き換えてください.
;; 初めてstock-ticker-global-modeが呼ばれる時に,パッケージを読み込むようにすればOKです.
(require 'stock-ticker)

;; 一定時間後に表示を消す独自関数
(defun my:activate-stock-ticker (&optional duration)
  "Activate stock-ticker within the given duration."
  (stock-ticker-global-mode 1)
  (unless (numberp duration)
    (setq duration 90))
  (run-with-timer duration nil 'stock-ticker-global-mode -1))
(add-hook 'focus-in-hook 'my:activate-stock-ticker)

;; 銘柄表示の間隔を変える
(setq stock-ticker-display-interval 5)
;; 銘柄指定
(setq stock-ticker-symbols '("^N225" "DOW"))
;; 5分に一回サーバから最新の価格変動を取得
(setq stock-ticker-update-interval 300)

おわりに

需要は低そうですが,内部的には Yahoo の Developer APIを定期的に叩いているだけです.なので,APIの呼び出し先とかをカスタマイズしたパッケージを書くと,株価に限らず,欲しい情報をなんでもモードラインに定期的に表示することが可能と思います.

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4