Pythonで自動売買Botを作る②~仮想通貨取引所からビットコインの価格を取得する

前回までのあらすじ

前回は自動取引botを作るために必要なモノ、自動取引を取り巻く状況などについてまとめました↓

それでは前回の続きということで、「ビットバンク(bitbank)」で動くpythonを使った自動取引botの作成に入りたいと思います。

自動売買というと株式や為替などを思い浮かべると思いますが実際のところ株式やFXで自動取引をするのは結構手間とお金がかかります。

ですが、仮想通貨の場合だと取引所がAPIを設けてくれているため開発が簡単であるのと、最低取引額が小さい(100円からでも可能)、という点からBotによる取引が株や為替よりも簡単に行うことができます。

仮想通貨・ブロックチェーン自体も革命的なテクノロジーですが、そういった点からもビットコインを始めとした仮想通貨取引はBot取引を行うのにオススメです。

ビットコイン(Bitcoin)とは?

ビットコインは2009年に誕生した始めての仮想通貨です。ビットコインの大きな特徴としてはブロックチェーンという技術を使っているという点です。これによってデータの改ざんを困難し、低コストで高いセキュリティー性を生み出すことに成功しました。

このビットコインに使われているブロックチェーン技術は銀行やサーバーなどなど既存の様々な社会インフラに幅広く応用することができるため現在世界中で注目されています。ビットコインの大きな特徴としては管理者がおらず分散自立型のシステムであるという点です。

これは現在の中央集権型のシステムへの挑戦と移行の可能性を模索する取り組みでもあり、世界中でビットコインが注目されている大きな理由の1つです。詳しく話すととても長くなるので興味が沸いた方は下の記事を読んでください。

APIとは何か?

さて本題に入りますが、今日はPythonを使って取引所からビットコインの価格を取得してみます。これには仮想通貨取引所のAPI機能を使います。(APIとは何ぞやという方は↓の記事で説明しているのでどうぞ)

API(アプリケーションプログラミングインターフェース)は自分のソフトウェアの内部処理を一部公開して、他のソフトウェアと機能を共有できるようにしたもので、ソフトウェアの一部をWEB上にAPIとして公開することで誰でも外部からその機能を利用することができるようになります。

それによって、他のソフトウェアの機能を自分のプログラムの中に簡単に埋め込むことができるようになるので、アプリケーション同士で連携することが可能になるのです。

今回の場合であれば、取引所の内部の一部システムをAPIという形で公開してくれていることで、私たちユーザー側からすると口座残高や価格情報を調べたり、注文を送信するといったような処理が簡単に行うことができるようになります。

他にもLineやtwitterのAPIを利用することで自動で呟くbotを作ることができたり、今回のように取引所に注文を出したりなどなどAPIを利用すれば高度なプログラミングが簡単に行うことが可能になります。

関連記事:【Python】TwitterのAPIを簡単操作できる「Tweepy」の使い方

ビットコイン/仮想通貨の価格を取得する

国内の仮想通貨取引所と言えばCMでお馴染みのビットフライヤーとZaifですがPythonを使ってビットコインの価格を取得したり自動で売買するプログラムを作るのであればbitbank(ビットバンク)という仮想通貨取引所がオススメです。

「bitbank(ビットバンク)」のメリットとしてはアルトコインを取引所形式で購入できるため、コインチェックなどの販売所で購入するより、断然安く購入できます。(3月まで取引手数料無料です)

加えて「Bitbank(ビットバンク)」は取り扱っている仮想通貨の種類も多くセキュリティがしっかりしているのもオススメできる点ですね。

bitbankでの取り扱い通貨(2018/2/20)

・BTC(ビットコイン)
・LTC(ライトコイン)
・XRP(リップル)
・ETH(イーサリアム)
・MONA(モナーコイン)
・BCH/BCC(ビットコインキャッシュ)

 

「bitbank(ビットバンク)」は他の大手取引所のように宣伝にあんまり力を入れていないため一般的な知名度はあまりありませんが、穴場な良取引所です。私も2018年1月に登録したのですが、1週間程度で本人確認も完了し口座開設ができました。

他の大物インフルエンサーが取り上げて良さがバレると申し込みが殺到し鯖もZaifやビットフライヤーみたいにパンクするかもですが、今のところ快適です。

そして、単にユーザーとしてではなく、APIを使った自動売買を行うプログラマーから見た側面からも「bitbank(ビットバンク)」はオススメで何がいいのかというと、Python用にAPIをさらに使いやすくしたライブラリがあること・鯖落ちが無いことが上げられます。

一応他の日本の取引所である「Bitflyer(ビットフライヤー)」や「Liqid(リキッド)」にも同じようなAPI機能は用意されているのですが、僕はこの2つの取引所を利用していて鯖落ちで大損してえらい目にあったので、トラウマからあんまり使っていません。

まあ使えないことはないですし、そっちはレバレッジ取引がAPIからできるので俺はレバレッジをふんだんに効かせたプログラムで大儲けするぜ!という人はそっちでもいいと思いますが、今回は自動売買のチュートリアルという事でAPIの仕様が分かりやすかった「bitbank(ビットバンク)」を使っていきます。

スポンサーリンク

ビットバンクからビットコイン(仮想通貨)の価格を取得する

Bitbank(ビットバンク)からAPIを使って仮想通貨の価格を取得したり、取引できるようにしてくれるコードはBitbank(ビットバンク)側が、Githubというプログラマーがコードをアップロードするサイトにライブラリ(python_bitbankcc)としてGithubというサイトにアップロードしてくれているので、簡単にインストールできます。

まずはコマンドライン(コマンドプロンプト・アナコンダプロンプト)からライブラリをインストールします。(Win10/64Bit版)

#python_bitbankccをインストールする
pip install git+https://github.com/bitbankinc/python-bitbankcc.git

この時 Win GITがインストールされていないと

f:id:oruka199665:20180227224923j:plain

と返されます。原因はGitをインストールしていないことにあります。Gitをインストールしていない人は Git for Windows からインストールしましょう。

製作者側としてGitを使う場合は ssh や config の設定を行わなければいけませんがユーザーとして使う分には言われるままにインストールすれば問題ないです。(※Gitをインストールした後はいったんcmd.exeを閉じて再起動しないと python_bitbankccはインストールできません。)

f:id:oruka199665:20180227233344j:plain

Gitをインストールしているとこんな感じで成功します。そして、本題のBitbank(ビットバンク)の仮想通貨価格の取得に入ります。

###Bitbankのビットコイン価格を取得する###
import json
import python_bitbankcc

pub = python_bitbankcc.public()
value = pub.get_ticker('btc_jpy')

print(value)

※実行結果
{'sell': '1157555', 'buy': '1157000', 'high': '1163000', 'low': '1080180', 'last': '1157001', 'vol': '2228.4126', 'timestamp': 1519740289992}

これで取引所のビットコインの価格情報を取得できます。tickerとは相場情報という意味なので、get_tickerで価格を取得するという関数になります。

そして要求する通貨ペアをbtc‗jpyをイーサリアム(eth_jpy)・リップル(xrp_jpy)・ビットコインキャッシュ(bch_jpy)などに変更することで、他のアルトコインの価格を取得することができます。

ただ取引所の提供しているAPIだと直前の価格情報(ticker)しか取得できず、まとまった期間の価格データは取得することができません。なので、前の記事で書いたように、テクニカル指標の計算のためなどに。まとまった価格データが欲しい場合はSQLかなんかに継続的に保管するプログラムをレンタルサーバーかなんかにおいて常時作動させるか、価格情報サイトから取得してくる必要があります。

関連記事:【Python】CoinGeckoのAPIからビットコイン・アルトコインの価格データを取得する

まあ、ビットコインの価格データ集めに関する知見はこのような感じです。次はAPIを使って板情報を取得し取引所へと売買注文を出してみます。

ビットコインの板情報を取得する

とりあえず、価格が取得出来たら次は板情報を取得していきます。板情報とは↓の画像のようなものでこのを見れば、どの価格にどれくらいの注文が入っているのかが一目でわかります。

引用元:https://diamond.jp/articles/-/121153

# ライブラリーのインポート
import python_bitbankcc
import json

 
# クラスの呼び出し
pub = python_bitbankcc.public()

# ビットコインの板情報を取得
value = pub.get_depth(
 'btc_jpy' # ペア
)

# 取得したビットコインの板情報を出力
print(json.dumps(value))

※実行結果
{"asks": [["1152900", "0.0274"], ["1152997", "0.3500"], ["1152998", "0.0138"], ["1153000", "0.0235"], ["1153020", "0.0009"], ["1153035", "0.0320"], ["1153392", "0.0078"], ["1153422", "0.2408"], ["1153427", "0.0001"], ["1153476", "0.0279"], ["1153537", "0.0006"], ["1153647", "0.0033"], ["1154000", "0.2418"], ["1154072", "0.0433"], ["1154972

これで板情報が取得できました。板情報はデータが大きいためシェル画面に出力するのはあまりオススメしません。

今回はテクニカル指標をシグナルとした自動売買botですが、板情報から買い圧と売り圧を比較してそれをトレードのシグナルにするという手法もあります。

次はビットバンクでプライベートAPIからビットコインを売買する方法と移動平均を使った自動取引Botの作り方について解説していきます。

→(続き)PythonでシストレBotを作る③~ビットバンクのプライベートAPIで仮想通貨を売買する

プログラミングの独学はとても難しい


プログラミングは小学校の義務教育にも導入され始めており、これから社会人として生きていく上でプログラミングはもはや出来て当たり前、出来なれば論外というエクセルレベルの必須スキルになりつつあります。そしてそういう話を聞いて参考書なりを購入して独学でプログラミング勉強しようと思っている人も少なくないでしょう。しかしプログラミングを独学で勉強し始めようと思うものの



・「分からない箇所で詰まって挫折してしまった」

・「勉強する時間が足りない」

・「ネットの記事だと情報が断片的でよくわからない」

・「コードのエラーの原因が分からない」



という壁にぶち当たって、プログラミングの勉強を止めてしまう方が少なくありません。独学でプログラミングを勉強してる時間のほとんどはつまづいている時間です。実際僕も最初のころ独学でプログラミングを勉強していた頃はエラーの原因が分からず丸1日を不意にしてしまった・・・そんな苦い経験がありました。それで僕は一度はプログラミングの学習を諦めてしまいましたが、就活で現実を知る中で



「プログラミングを勉強して、いずれフリーランスとして自由な生き方がしたい」

「エンジニアとして若いうちから高収入を得たい」



という強い気持ちから一念発起して「侍エンジニアのwebサービスコース」に申し込み、プロのエンジニアの方に対面でマンツーマンでPythonによるWebサービス作り方とWeb技術の基本を教えてもらい、ようやくプログラミングが理解でき、今ではエンジニアとしてそこそこの暮らしができるようになりました。





侍エンジニアでは、とりあえずプログラミングやインターネットの基本を知っておきたい人から、HTML・cssなどでWebサイトやWebアプリを作ってみたい人やPythonを勉強してデータサイエンティストやAIエンジニアになりたい人まで幅広いニーズに応えた様々なコースが用意されています。



IT業界と言ってもエンジニアの仕事はプログラミング言語次第でサーバーから機械学習・ディープラーニングまで多種多様ですし、侍エンジニアの無料レッスン(カウンセリング)を受けてみて、自分のやりたいITの仕事は何なのか?を見つけるのがエンジニアへの第一歩になります。ちなみに今侍エンジニアの無料レッスンを受けると1000円分のAmazonギフト券がもらえるので、試しに受けてみるだけもお得です。


自分は半端に独学やオンラインスクールで勉強して金と時間を無駄にするくらいなら、リアルのプログラミングスクールに通ってしっかりプログラミングを勉強した方がいいと思います。ちなみに今、侍エンジニアに申し込むと、25歳以下の学生の方であれば、受講料が20%OFFになるので超お得です。


そして、プログラミングは大勢で授業を受けたり漫然とオンライン学習をするよりも自分が分からない箇所をピンポイントでプロの講師に直接質問して、ちゃんと納得するというスタイルの方がお金は確かに少し掛かりますが、独学で学ぶよりも絶対にモノになります。


シェアする

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

フォローする

   侍エンジニア塾       
侍エンジニアの無料体験レッスンを予約する -->