Contents
Pythonでビットコインの自動売買プログラムを作る
現在、日本でビットコインの売買ができる
取引所は何カ所かあります。
そしてそれぞれでビットコインのAPIを提供しています。
APIでは、板情報やTickerなどの情報取得のほか、
Order処理なども可能です。
ビットコインは値動きが大きく、
新たな投資先としても着目されつつあります。
「投資先」としては依然不確定な要素が多い
ビットコインですが、小遣いの余りで
試しに買ってみるというのなら
いいのではないでしょうか。
ビットコインのAPIは売買まで
できるものが公開されていますので、
プログラムで自動売買できるところまで
実装したいと思います。
今回は準備編として、データを格納する
データベース環境の構築を行います。
以下の環境で構築を進めていきます。
OS:Windows10
プログラム:Python(Anaconda)
DB:MySQL
Linuxサーバーとかで
安定して稼働させるのがよいので
自動売買プログラムで儲かって仕方がない
という状況になったら
別途サーバーを用意して
そちらで運用したいと思います。
MySQLをインストールする
必要ファイルをダウンロード
MySQLのダウンロードサイトから、
必要なファイルをダウンロードします。
ダウンロードするのは、MySQL Communityからです。
左メニューから自分の環境を選択します。
私の場合はWindowsなので、
MySQL on Windowsをクリックします。
MySQL本体をPCにインストールしたいので、
「MySQL Installer」をクリックします。
インストーラーのダウンロードページに
移動するので、ダウンロードを行います。
ダウンロードするファイルですが、
ネット接続がある環境なら
「mysql-installer-web-community」を
なければ「 mysql-installer-community」を
選びましょう。
ダウンロードボタンをクリックすると
LoginするかSign Upを求められるので、
OracleのWebアカウントを持っていない人は
登録しましょう。
ログイン後、ダウンロードできます。
MySQLのインストール
ダウンロードしたファイル
(mysql-installer-web-community-5.7.17.0.msi等)
を実行します。
インストール画面が立ち上がります。
最初はライセンス画面なので、
問題なければチェックを入れて次へ進みます。
次の画面ではSetupの種類を選びます。
今回はサーバーとクライアントの両方を
インストールしたいので
Fullを選びました。
Python3.4がないと言われました。
AnacondaからインストールしたPythonは3.5です。
Connectorは別途インストールするとして、
そのまま次へ進みます。
確認ボックスが表示されました。
後でインストールするということで、
ここでは「はい」を選びます。
インストールの準備が整ったので
「Execute」ボタンをクリックします。
インストールが開始されます。
次の画面に進むと、サーバー設定を行います。
まずConfig Typeを選択します。
これは、選ぶタイプによって使用メモリが変わってきます。
Development Machineが使用メモリが一番小さく
Server Machineが中程度、
Dedicated Machineは使えるだけ使います。
それほどメモリの使用量は増えない見込みなので
ここではDevelopment Machineを選びました。
次の画面では、MySQLのRootアカウントのパスワードと
ユーザーの追加を行います。
次の画面では、Windows Serviceとして
設定するかを指定します。
ここはデフォルトのままにしました。
次はMySQLをDocument Storeとするか
ですが、これは初期値のまま設定しませんでした。
次の画面で「Execute」をクリックすると
変更内容が反映され、MySQLが立ち上がります。
以上でMySQLのインストールは終了です。
PyMySQLをインストール
続いてPythonからMySQLを使うために
PyMySQLをインストールします。
以下のコマンドを発行するだけです。
1 2 3 4 5 6 |
>pip install PyMySQL Collecting PyMySQL Downloading PyMySQL-0.7.10-py2.py3-none-any.whl (78kB) 100% |################################| 81kB 515kB/s Installing collected packages: PyMySQL Successfully installed PyMySQL-0.7.10 |
データベースを作成する
各ビットコイン取引所のAPIから取得したデータを
保存するためのデータベースを作成します。
取得結果をそのまま放り込めるように
項目を作成します。
各ビットコイン取引所のAPIから同じ時間に
取得した結果を1レコードにまとめる形です。
以下のSQL文を発行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
create table btc ( id BIGINT NOT NULL AUTO_INCREMENT, bf_total_bid_depth DECIMAL(15.8), bf_total_ask_depth DECIMAL(15.8), bf_ltp DECIMAL(10.1), bf_tick_id BIGINT, bf_volume DECIMAL(15.8), bf_best_bid DECIMAL(10.3), bf_best_ask_size DECIMAL(5.1), bf_volume_by_product DECIMAL(15.8), bf_product_code VARCHAR(8), bf_timestamp datetime, bf_best_bid_size DECIMAL(5.1), bf_best_ask DECIMAL(10.3), fx_total_bid_depth DECIMAL(15.8), fx_total_ask_depth DECIMAL(15.8), fx_ltp DECIMAL(10.1), fx_tick_id BIGINT, fx_volume DECIMAL(15.8), fx_best_bid DECIMAL(10.3), fx_best_ask_size DECIMAL(5.1), fx_volume_by_product DECIMAL(15.8), fx_product_code VARCHAR(8), fx_timestamp datetime, fx_best_bid_size DECIMAL(5.1), fx_best_ask DECIMAL(10.3), cc_last DECIMAL(10.3), cc_bid DECIMAL(10.3), cc_ask DECIMAL(10.3), cc_high DECIMAL(10.3), cc_low DECIMAL(10.3), cc_volume DECIMAL(13.8), cc_timestamp datetime, qo_id int, qo_product_type VARCHAR(20), qo_code VARCHAR(8), qo_name VARCHAR(20), qo_market_ask DECIMAL(10.3), qo_market_bid DECIMAL(10.3), qo_indicator smallint, qo_currency VARCHAR(4), qo_currency_pair_code VARCHAR(8), qo_symbol VARCHAR(2), qo_fiat_minimum_withdraw DECIMAL(10.3), qo_pusher_channel VARCHAR(32), qo_taker_fee DECIMAL(5.2), qo_maker_fee DECIMAL(5.2), qo_low_market_bid DECIMAL(10.3), qo_high_market_ask DECIMAL(10.3), qo_volume_24h DECIMAL(15.8), qo_last_price_24h DECIMAL(10.3), qo_last_traded_price DECIMAL(10.3), qo_last_traded_quantity DECIMAL(12.8), qo_quoted_currency VARCHAR(4), qo_base_currency VARCHAR(4), qo_exchange_rate DECIMAL(22.20), zf_last DECIMAL(10.3), zf_high DECIMAL(10.3), zf_low DECIMAL(10.3), zf_vwap DECIMAL(10.3), zf_volume DECIMAL(15.8), zf_bid DECIMAL(10.3), zf_ask DECIMAL(10.3), bb_high DECIMAL(10.3), bb_low DECIMAL(10.3), bb_buy DECIMAL(10.3), bb_sell DECIMAL(10.3), bb_last DECIMAL(10.3), bb_vol DECIMAL(15.8), bid_max DECIMAL(10.3), bid_min DECIMAL(10.3), bid_diff DECIMAL(10.3), ask_max DECIMAL(10.3), ask_min DECIMAL(10.3), ask_diff DECIMAL(10.3), created datetime, primary key(id) ); |
準備ができたので、いよいよ
Bitcoin取引所API呼び出しプログラムの作成に入ります。
ここからは現在開発中ですので、
完成次第、本ブログで公開します。