> >

[python]bitcoinの平均相場情報を10秒おきに取得してみた

スポンサーリンク

bitcoin平均相場取得の経緯

bitcoinのデイトレードを始めたのですが、いずれシステムトレードもやってみたいなーと思い、pythonの勉強がてら相場情報の取得を開始しました。

まぁ先月から既にC#で取得開始してたので、単なるそのリプレイスなのですがw

とりあえず必要になるライブラリをインストールします。

今回は、pybitflyerとmysqlclientを利用します。

pythonライブラリのインストール

pip install pybitflyer
pip install mysqlclient

MySQLテーブルの定義

次にMySQLにテーブルを用意します。

CREATE TABLE `tbl_bitcoin_price_hogehoge` (
  `log_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `log_date` DATETIME NOT NULL,
  `bitcoin_kind` VARCHAR(255) NOT NULL DEFAULT '',
  `bitcoin_side` VARCHAR(255) NOT NULL DEFAULT '',
  `bitcoin_price` BIGINT(20) NOT NULL DEFAULT '0',
  `bitcoin_size` DECIMAL(65,20) NOT NULL,
  PRIMARY KEY (`log_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8

pythonのコーディング

続いてpythonのコーディングです。

import MySQLdb
import pybitflyer

api = pybitflyer.API(api_key='hohohoge', api_secret='hogegegegegegege')
board_li = ['BTC_JPY','FX_BTC_JPY']
price_li = []

for i in range(len(board_li)):
    board = api.board(product_code = board_li[i])
    price_li.append(board['mid_price'])

connection = MySQLdb.connect(host='hogehoge.hoge', user='hoge', passwd='hogegegege', db='hoge_db', charset='utf8')
cursor = connection.cursor()

for i in range(len(board_li)):
    str_sql = ("INSERT INTO hoge_db.tbl_bitcoin_price_hogehoge(log_date,bitcoin_kind,bitcoin_side,bitcoin_price,bitcoin_size)")
    str_sql += ("VALUES (NOW(),'%%bitcoin_kind%%','MID',%%bitcoin_price%%,1);")
    str_sql = str_sql.replace('%%bitcoin_kind%%',board_li[i])
    str_sql = str_sql.replace('%%bitcoin_price%%',str(price_li[i]))
    cursor.execute(str_sql)

connection.commit()
connection.close()

実行ファイルの作成

続いて実行用にshファイルを作ります。

# btc_mid_price_hogehoge.sh
python /home/hogehoge/btc_mid_price_getter.py

cron登録

最後にcronへの登録です。

# PATHの記載を忘れずに。[echo $PATH]
PATH=hogehogehogehoge/bin:hogegege

* * * * * for i in `seq 0 10 59`;do (sleep ${i}; /home/hogehoge/btc_mid_price_getter.py) & done;

こんな感じで、10秒おきにbitcoinの平均相場を取得することができました。

これでようやく自宅のwindowsをシャットダウンできるようになった・・・!

スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です