この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
「暗号資産の自動売買に興味があるけど、やり方がわからない」
「Pythonで自動売買をするには具体的にどうすればいい?」
暗号資産の自動売買に興味がある人なら、そんな疑問を持っているのではないでしょうか?
私が暗号資産の自動売買のプログラミングを始めた頃は、ネット上にもあまり情報が無く、デバックに時間をかけながら開発していました。
当ブログのコンセプトは、「Pythonを学んで投資に活用する」です。自動売買のプログラミングで挫折しないように具体的なコードを紹介していきます。そしてプログラミングのスキルを身に付けていただければと思います。
今回は準備編として、GMOコインの口座開設方法とAPIの使い方の解説から始めていきます。
すでにGMOコインの口座をお持ちで、GMOコインでの自動売買の方法を具体的に知りたい方は、下記の記事をご覧ください。
【Python】GMOコインでビットコイン等の暗号資産の自動売買を始める方法(実践編)GMOコインの口座開設方法
GMOコインの口座開設は、3ステップ、最短10分で完了します。
アカウント登録
\登録は無料!/
個人情報の登録と本人確認
- アプリでかんたん本人確認(おすすめ)
- ウェブでかんたん本人確認
- 画像アップロード
①「アプリでかんたん本人確認」の場合
スマートフォンアプリにログインの上、画面の案内にしたがって、ICチップの読み取りおよび本人の顔写真などの撮影を行います。
②「ウェブでかんたん本人確認」の場合
画面の指示に従って本人確認書類及び本人の顔写真などの撮影を行います。
③「画像アップロード」の場合
本人確認書類は2点撮影して[口座開設申込]を選択します。
口座開設コードが届き、取引開始
APIキーとAPIシークレットの作成
GMOコインの会員ホーム画面の暗号資産のAPIをクリックして、APIキーを新規追加します。
[APIキーを新規追加]をクリックすると、次のような画面が表示されるので、ラベルの入力とAPIで操作できる範囲をチェックします。必要な項目にチェックを入れてもらえばいいです。チェックすれば[追加するを]クリックします。ここでチェックを入れた項目については、APIキーとシークレットを知っていれば、誰でも実行することができます。つまり万が一、APIキーとAPIシークレットが漏洩した場合には、実行されてしまう可能性のある項目ですので厳重に管理しましょう。
IP制限にご自身のグローバルIPアドレスを入力しておくことで、セキュリティ対策の強化ができます。
以上でAPIキーとAPIシークレットが作成できました。
GMOコインの会員ホーム画面の暗号資産のAPIをクリックするとAPIキーとAPIシークレットが確認できます。
GMOコインのAPIの使い方
ここからは、Pythonを使ってのプログラミングになります。
まだPythonを使用できる環境がない方は、下の記事を参考にして必要なソフトをインストールしてください。
APIとは、「アプリケーション・プログラミング・インターフェース(Application Programming Interface)」の略で、Pythonのプログラムで取引所の注文の操作ができるようになる仕組みです。これにより自動売買が可能になります。
GMOコインのAPIの仕様は、公式のAPIドキュメント(https://api.coin.z.com/docs/#outline)で確認できます。
認証が不要なPublic APIとAPIキーとAPIシークレットを使用するPrivate APIがあります。
Public APIでは、最新レートや板情報、取引履歴などの情報を取得することができます。
Private APIは、余力情報や資産残高、新規注文、注文取消などができるので、自動売買を行うためには必須のAPIです。
次に、自動売買に必要な基本的なAPIの使い方を解説します。
四本値と取引量を取得する方法
import requests
import json
endPoint = 'https://api.coin.z.com/public'
path = '/v1/klines?symbol=BTC&interval=1min&date=20210417'
response = requests.get(endPoint + path)
print(json.dumps(response.json(), indent=2))
四本値や取引量を取得するとインジケーターの計算をすることができて、取り引きのシグナルにすることができます。
symbolで取得する銘柄を指定できます。サンプルコードのBTCのところをETHやBCHに変えることで、取得するデータの銘柄を変更できます。
GMOコインでは、下記の銘柄を取り扱っています。
- BTC :ビットコイン
- ETH:イーサリアム
- BCH:ビットコインキャッシュ
- LTC:ライトコイン
- XRP:リップル
- XEM:ネム
- XLM:ステラルーメン
- BAT: ベーシックアテンショントークン
- XTZ:テゾス
- QTUM:クアンタム
- ENJ:エンジンコイン
- DOT:ポルカドット
- ATOM:コスモス
- MKR:メイカー
- DAI:ダイ
- XYM:シンボル
- MONA:モナコイン
- FCR:FCRコイン
- ADA:カルダノ
- LINK:チェーンリンク
- DOGE:ドージコイン
- SOL:ソラナ
- ASTR:アスター
- BTC_JPY:ビットコイン/円
- ETH_JPY:イーサリアム/円
- BCH_JPY:ビットコインキャッシュ/円
- LTC_JPY:ライトコイン/円
- XRP_JPY:リップル/円
- DOT_JPY:ポルカドット/円
- ATOM_JPY:コスモス/円
- ADA_JPY:カルダノ/円
- LINK_JPY:チェーンリンク/円
- DOGE_JPY:ドージコイン/円
- SOL_JPY:ソラナ/円
現物取引は取り扱っている銘柄はとても多いですね。しかし、現物取引は売りからエントリーできないので自動売買向きではありません。
レバレッジ取引では、上昇・下落局面いずれの相場であっても利益を狙え、2倍のレバレッジを効かせた資金効率のよい取引できるので自動売買向きです。
intervalでは、サンプルコードの1minのところを変更することで時間足を指定できます。
GMOコインでは次の種類を指定できます。
- 1min
- 5min
- 10min
- 15min
- 30min
- 1hour
- 4hour
- 8hour
- 12hour
- 1day
- 1week
- 1month
dateでは、データを取得し始める日の指定ができます。GMOコインでは、2021年4月15日以降が指定可能です。
YYYYMMDD の形(YYYYは年、MMは月、DDは日の意味)で指定できる時間足の種類は1分から1時間です。YYYYの形で指定できる時間足の種類は4時間から1ヶ月です。
取引ルールを確認するする方法
import requests
import json
endPoint = 'https://api.coin.z.com/public'
path = '/v1/symbols'
response = requests.get(endPoint + path)
print(json.dumps(response.json(), indent=2))
GMOコインでは様々な暗号資産を取り扱っていますが、暗号資産ごとに最小注文数量や最小注文単位が異なります。
これを間違えるとエラーが返ってきて注文が通らないので、取り引きする暗号資産ごとに確認するようにしましょう。
資産残高を取得する方法
import requests
import json
import hmac
import hashlib
import time
from datetime import datetime
apiKey = 'YOUR_API_KEY'
secretKey = 'YOUR_SECRET_KEY'
timestamp = '{0}000'.format(int(time.mktime(datetime.now().timetuple())))
method = 'GET'
endPoint = 'https://api.coin.z.com/private'
path = '/v1/account/assets'
text = timestamp + method + path
sign = hmac.new(bytes(secretKey.encode('ascii')), bytes(text.encode('ascii')), hashlib.sha256).hexdigest()
headers = {
"API-KEY": apiKey,
"API-TIMESTAMP": timestamp,
"API-SIGN": sign
}
res = requests.get(endPoint + path, headers=headers)
print (json.dumps(res.json(), indent=2))
資産残高を取得することで、適切なポジションサイズを計算して、2%ルールなどの資金管理を行うことができます。
注文する方法
import requests
import json
import hmac
import hashlib
import time
from datetime import datetime
apiKey = 'YOUR_API_KEY'
secretKey = 'YOUR_SECRET_KEY'
timestamp = '{0}000'.format(int(time.mktime(datetime.now().timetuple())))
method = 'POST'
endPoint = 'https://api.coin.z.com/private'
path = '/v1/order'
reqBody = {
"symbol": "BTC_JPY",
"side": "BUY",
"executionType": "LIMIT",
"timeInForce": "FAS",
"price": "430001",
"losscutPrice": "30012",
"size": "0.02"
}
text = timestamp + method + path + json.dumps(reqBody)
sign = hmac.new(bytes(secretKey.encode('ascii')), bytes(text.encode('ascii')), hashlib.sha256).hexdigest()
headers = {
"API-KEY": apiKey,
"API-TIMESTAMP": timestamp,
"API-SIGN": sign
}
res = requests.post(endPoint + path, headers=headers, data=json.dumps(reqBody))
print (json.dumps(res.json(), indent=2))
このプログラムを実行することで実際に注文を出すことができます。
ポイントとなるのは、reqBodyの中身です。これを変更することで注文する通貨や注文方法、数量を指定することができます。
- symbol
取り引き銘柄を指定します。 - side
買い(ロング)か売り(ショート)かを指定します。 - executionType
「MARKET(成行)」、「LIMIT(指値)」、「STOP(逆指値)」のいずれかを指定します。 - timeInForce
「FAS」、「FAK」、「FOK」の執行数量条件を指定できます。 - price
サンプルコードは指値注文をしているので、購入価格を入力します。 - losscutPrice
ロスカットレートを指定できます。 - size
注文数量を指定します。
APIを使って注文を出す方法について、外国為替FXの記事で詳しく解説しているので参考にしてみてください。
GMOコインのAPIを使って注文を出す方法を解説【FXの自動売買プログラムをPythonで自作しよう⑤】まとめ
APIを利用して暗号資産の自動売買ができる取引所はいくつかありますが、今回はGMOコインについて解説しました。
次回は実践編ということで、基本的な移動平均線のゴールデンクロスとデッドクロスで自動売買をするプログラムを具体的に紹介します。
【Python】GMOコインでビットコイン等の暗号資産の自動売買を始める方法(実践編)GMOインターネットグループの暗号資産FX・売買サービス
- 新たに「外国為替FX」のAPIサービスを開始
- 口座開設申し込みから最短10分で取引が可能
- 現物取引、レバレッジ取引ともにサービスが充実している
- 取引ツールが高性能かつ使いやすい