この記事ではビットコイントレードbotの準備を行います。
取引所はBitMexを使用。
サーバーはWidows,Macでも動かせるWEB上のサービスであるCloud9を使います。
ブラウザのみでプログラムコードを記述できます。
AWSはサーバーの環境設定がサクッとできるので、プロジェクトの立ち上げまでがとても簡単に早くできます。
・関連記事 暗号通貨自動取引botを作るにはどうしたら良いか?
じわじわ人気が出てきている仮想通貨自動取引botを作るにはどうしたら良いか?
AWS(Amazon Web Service)
Amazonが買収して「Amazon Cloud9」という名称になっています。
AWSのアカウントは12ヶ月AWS無料利用枠があります。
過度の使用や容量をオーバーの場合には利用料が発生します。
AWSのアカウントの登録
AWSのアカウントはAmazonでお買い物するアカウントは「別」のものです。
AWSアカウントが無い場合には新規作成します。
AWS Cloud9を開き、「まずは無料で始める」のボタンを押します。
名前・住所・クレジットカード情報の登録が必要です。
名前・住所はアルファベットで入力します。
AWSのサービスを利用しようとしたときに下の「サービスへのお申し込みはあと少しで完了です!」の画面が出る場合には
クレジットカード、電話番号の登録が不足しています。
電話番号は登録後、自動ガイダンスで電話がかかってきますので
ブラウザに表示される4ケタのピンコードをキーパッドで入力すればOK.
「コンソールにサインイン」します。
コンソールへログインしたらAWSサービスの欄に「Cloud9」を入力し,選択します。
AWS Cloud9 a cloud IDE for writing, running, and debugging code
の画面が表示されます。
右側にある「Create environment」を押します。
Name environmentの画面です。
Name:自分でわかる名前を入れます。
Description: 説明を書き込みます。空でOK
「Next step」を押します。
Configure settingsの画面です。
使用するサーバーの設定です。
特に変更なしで「Next step」を押します。
Review(確認画面)画面が表示されます。
「Create environment」を押します。
サーバーの設定が自動で始まります。
少し時間がかかるので処理が終わるまで待ちます。
設定が終わると下の画面が表示されます。
BitMEXのAPIキーを取得する方法
取引所のAPIキーを取得します。
ここではBitMexを使った例。
BitMexへログインして、メニューのAPIを選択。
「APIキー」を押してAPIキーを作成の画面を開きます。
名前:botの名前
CIDR:空
キーのアクセス許可: 注文
2要素トークン :二段階認証アプリの数値を入力
AWSのコマンド入力
AWSの画面に戻ります。
画面下にある「bash」と書かれているウィンドウ(コンソール)にコマンドを打ち込めます。
AWSにサーバーを入れた直後はpython3.6.2がインストール済です。
CCXT(仮想通貨取引用ライブラリ)をインストール
CCXTは仮想通貨取引をするためのプログラムライブラリです。
JavaScript,Python,PHPに対応
世界中にある多くの取引所に対応していて,日本の取引所だとbitFlyer、BtcBox、bitbank,coincheck,QUOINEX,Zaifに対応。
プログラムはPython3.6を利用します。
コンソールへ下のコマンド入力して
CCXTをインストールします。
sudo pip-3.6 install ccxt
CCXTのテスト
メニューの「File」より「New File」を選択。
以下のコードを書いて、コマンド+Sを押して保存画面を開きます。
適当な名前で保存。text_ccxt.pyとしました。
取引所のリストを取得する例
ccxtで取引所のリストを取得します。
import ccxt print(ccxt.exchanges)
text_ccxt.pyを開いた状態で、右上の「RUN」を押します。
Runnerを「Python3」に変更します。
「Python2」のままだとエラーが出ます。
Traceback (most recent call last): File "/home/ec2-user/environment/text_ccxt.py", line 1, inimport ccxt ImportError: No module named ccxt
コンソールに下の結果がでればOK.
['_1broker', '_1btcxe', 'acx', 'allcoin', 'anxpro', 'bibox', 'binance', 'bit2c', 'bitbank', 'bitbay', 'bitfinex', 'bitfinex2', 'bitflyer', 'bithumb', 'bitlish', 'bitmarket', 'bitmex', 'bitso', 'bitstamp', 'bitstamp1', 'bittrex', 'bitz', 'bl3p', 'bleutrade', 'braziliex', 'btcbox', 'btcchina', 'btcexchange', 'btcmarkets', 'btctradeim', 'btctradeua', 'btcturk', 'btcx', 'bxinth', 'ccex', 'cex', 'chbtc', 'chilebit', 'cobinhood', 'coincheck', 'coinegg', 'coinex', 'coinexchange', 'coinfloor', 'coingi', 'coinmarketcap', 'coinmate', 'coinnest', 'coinone', 'coinsecure', 'coinspot', 'coolcoin', 'cryptopia', 'dsx', 'ethfinex', 'exmo', 'exx', 'flowbtc', 'foxbit', 'fybse', 'fybsg', 'gatecoin', 'gateio', 'gdax', 'gemini', 'getbtc', 'hadax', 'hitbtc', 'hitbtc2', 'huobi', 'huobicny', 'huobipro', 'ice3x', 'independentreserve', 'indodax', 'itbit', 'jubi', 'kraken', 'kucoin', 'kuna', 'lakebtc', 'lbank', 'liqui', 'livecoin', 'luno', 'lykke', 'mercado', 'mixcoins', 'negociecoins', 'nova', 'okcoincny', 'okcoinusd', 'okex', 'paymium', 'poloniex', 'qryptos', 'quadrigacx', 'quoinex', 'southxchange', 'surbitcoin', 'therock', 'tidex', 'urdubit', 'vaultoro', 'vbtc', 'virwox', 'wex', 'xbtce', 'yobit', 'yunbi', 'zaif', 'zb'] Process exited with code: 0
BitMEXのAPIを使った例
BTC/USDの情報を取得します。
import ccxt bitmex = ccxt.bitmex({ 'apiKey': 'API KEYのIDK', 'secret': 'API の秘密カギ', }) print(bitmex.fetch_ticker('BTC/USD'))
コンソールに下の結果がでればOK.
{'symbol': 'BTC/USD', 'timestamp': 1522658596728, 'datetime': '2018-04-02T08:43:17.728Z', 'high': 7100.0, 'low': 6766.0, 'bid': 7032.5, 'bidVolume': None, 'ask': 7033.0, 'askVolume': None, 'vwap': 6957.9738, 'open': 6817.0, 'close': 7033.0, 'last': 7033.0, 'previousClose': None, 'change': 216.0, 'percentage': 3.1685492151973005, 'average': 6925.0, 'baseVolume': 121336.48123350999, 'quoteVolume': 844188847.0, 'info': {'timestamp': '2018-04-03T00:00:00.000Z', 'symbol': 'XBTUSD', 'open': 6817, 'high': 7100, 'low': 6766, 'close': 7033, 'trades': 184692, 'volume': 844188847, 'vwap': 6957.9738, 'lastSize': 100, 'turnover': 12133648123351, 'homeNotional': 121336.48123350999, 'foreignNotional': 844188847}}
自動取引botをもっと勉強してみたくなったら
botを作りたいけどプログラミングなんてしたことないし、昔ちょっと触ってみたけど参考書買うたびに辞めちゃうなんてことはありませんか?
実はbot作成をオンライン動画で学べるカリキュラムがあります。
このカリキュラムで使われているプログラミング言語は「Ruby」ですが、
プログラミング初心者がゼロの状態から、APIを使ってビットコイン取引をできることを目的としたた自動取引botの作成チュートリアルです。
『プログラミングスキルを習得すること』に重きが置かれています。
使うAPIはbitFlyerFXのものを利用するので、bitFlyerユーザーはカリキュラム終了後そのまま利用ができます。
カリキュラムは全21本の10分前後の動画で構成されており、カリキュラムの値段も4000円前後と買いやすいのがありがたい。
Udemyでは頻繁に特別価格セールを行っているのでタイミングが合えばお買い得価格でカリキュラムを買取りできます。
自分なりのbotをカスタマイズしていくためにはPython3の基礎知識が必須です。
もっとプログラミング学習したいならオンラインプログラミングスクールでRubyやPythonを学習するにはTechAcademyを利用する手段があります。
ネット上で完結するのでお手頃価格なのが強み。もちろん質問もできます。
無料体験プランもあります。
教室に通うような強制力がないと勉強が続かない人には
未経験からエンジニアを目指せる転職保証付きプログラミングスクールWebCamp
締め切りが決まっている3ヶ月短期集中教室なので、きっちり詰め込み学習できます。
2020年度から小学校でプログラミング教育が必修化されます。
プログラミングスキルはこれから必須になるスキルですので、少しでも早い段階で抵抗感をなくしておくことが大切です。
□失敗例のメモ
よくわからなくなった場合には、コンソールに戻りCreate environmentsを押してサーバーを作り直しした方が早いです。
pip install ccxtでccxtのインストールが上手く行かず、
python3のリンクを書き換えたりしていました。
結果としてはsudo pip-3.6 install ccxtでインストールし、Runnerを切り替えることで動作しました。
pip install ccxt
・エラーメッセージ
You are using pip version 9.0.1, however version 9.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
pip3 install ccxt
・エラーメッセージ
bash: pip3: command not found
Pip3のコマンドが用意されていない。
python3に設定
pip --versionのコマンドを打つとpython 2.7が使われているのがわかります。
$pip --version pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7)
右上の歯車ボタンを押してPreferencesを開きます。
左側のメニュー「Python Support」を選択。
Python Versionを「Python3」にします。
2行のコマンドを打ち込みリンク変更
$ sudo mv /usr/bin/python /usr/bin/python2 $ sudo ln -s /usr/bin/python3 /usr/bin/python
vi ~/.bashrc
alias python=python27から alias python=python36へ書き換え
bashrcの変更反映
source ~/.bashrc
sudo update-alternatives --config python
update-alternativesを実行して
「2」を選択。