日足データ取得の自動化に向けて

このエントリーをはてなブックマークに追加

皆さんは日経高値更新の波に乗れていますか?こういった時シストレしている人は二極化されるのではないでしょうか?私のシステムは腹立たしいタイプで、発狂しそうです。

本サイトはRubyでバックテストツールを作成し、それを使ってストラテジーの検証を行うことを目的としています。そのためには株価のデータがなければ始まりませんので、まずデータの取得と利用方法について説明して行きたいと思います。今回は動くものを用意しましたので、細かい話は行いません。

なお私の環境はUbuntu16.04、Ruby2.3となります。 他環境での動作は確認しておりませのでご容赦ください。

早速始めましょう。

目次

実践

環境構築

まずは、Rubyのインストールから始めます。Ruby native extensionが必要になるためCコンパイラが必要になります。Ruby native extensionはRubyからC言語プログラムを呼び出すためのものです。Rubyで書かれたライブラリーをgemと呼びますが、nokogiriとsqliteというgemで必要になります。この2つのgemが利用するライブラリーもインストールする必要があります。nokogiriのインストールはすんなり行かない場合が有るかもしれません。そういった場合は多くのサイトで試行錯誤されているので調べて見てください。 ターミナルを開いて次のコマンドを叩いて行ってください。

sudo apt-get update
sudo apt-get install ruby
sudo apt-get install ruby-dev
sudo apt-get install build-essential
sudo apt-get install libxml2
sudo apt-get install libxml2-dev
sudo apt-get install zlib1g-dev
sudo apt-get install sqlite3
sudo apt-get install libsqlite3-dev
sudo apt-get install git
sudo gem install bundler

確認します。

$ruby -v
ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu]
$gem -v 
 2.5.1
$sqlite3 --version
3.11.0 2016-02-15 17:29:24 3d86....

株価取得のためのコードの取得、設定

Gitを利用してコードを取得し、セットアップを行います。

git clone git://github.com/Traver1/sok
cd sok
bundle install --path vendor/bundler
bundle exec rake db:migrate
bundle exec ruby exe/setup
bundle exec rake db:seed

必要なライブラリーが揃っていないと、bundle install …でnokogiriやsqlite3のインストールに失敗する場合があります。最後手前のexe/setupは株価データサイトk-db様のサイトへアクセスして、証券コード情報取得しています。日足データについても同サイトより取得していきます。利用にあたってはサーバーに負荷のかからぬよう適度な間をおいてご利用ください。もっとも、あまり頻度が高いと制限がかかると思いますが。

日足データの取得、保存

続いて日足データを取得してみましょう。ダイワ上場投信の2017年の株価を取得します。

bundle exec ruby exe/download 1305 2017

取得されたデータをSQLを叩いて確認してみます。

 sqlite3 db/development.sqlite3
 select * from soks;

確認できたでしょうか?sqlite3を終了します。

.exit

日足データの読み込み

日足データをcsv形式でコンソールにダンプしてみましょう。

bundle exec ruby exe/dump 1305 20170101 20170201

左から順に、証券コード-取引所、日付、初値、高値、安値、終値、出来高の情報が出力されたと思います。

まとめ

Rubyやその他もろもろをインストールした後に、sokを用いて株価の取得と読み書きを行いました。これで皆さんの環境でも日足データの読み書きが出来るようになったと思います。

しかし1日ごとに全銘柄の情報を更新したりだとか、チャートを表示したりだとか、そういった機能はありません。これからツールを作っていく過程で、中身の説明とともに実装して行こうと考えています。

Recent Entries
Categories
    Tags
    Archives
    Search