はじめに
仮想通貨の自動売買に向けて、Python から API で GMO コインでの売買ができるようにします。
bitFlyer の API に関しては下記を参考にしてください。

bitFlyer は SFD の手数料がきつかったので、今回は GMO コインについても使えるようにしていきます。

GMO コインの API
GMO コインの API は Public API と Private API があります。
それぞれの API の特徴は下記の通りです。
API | 認証 | できること |
---|---|---|
Public API | あり | 誰でも確認できる情報の取得(板情報など) |
Private API | なし | 個人アカウントに関する操作(注文や資産残高確認など) |
Private API の API キーの取得
Private API を使うためには、API Key と API Secret を作成する必要があります。
GMO コインからログインして、メニューから「API」を選択します。
「API キーを新規追加」をクリックします。
API キーを使って操作できる権限を選択して、API Key と API Secret を作成します。
API Key と API Secret の取り扱いには注意しましょう。
Python で GMO コイン API
基本的には、ドキュメントにいくつかの言語でのサンプルコードが記載されているので、そちらを参考に実装が可能です。
ここでは、よく使いそうな 2 つの API を紹介します。
ローソク足の取得(Public API)
ローソク足の取得は下記になります。YYYYMMDD
もしくはYYYY
で日付を指定して、その日付のローソク足を取得してくれます。
import requests
import json
endPoint = 'https://api.coin.z.com/public'
path = '/v1/klines'
symbol = "BTC_JPY"
date = "20230601"
interval = "15min"
params = {"symbol": symbol, "interval": interval, "date": date}
response = requests.get(endPoint + path, params).json()
print(json.dumps(response))
注文(Private API)
注文は下記になります。注文は Private API なので、API Key と API Secret が必要になります。
import requests
import json
import hmac
import hashlib
import datetime
apiKey = 'YOUR_API_KEY'
secretKey = 'YOUR_SECRET_KEY'
timestamp = datetime.datetime.now().date().strftime('%Y%m%d')
method = 'POST'
endPoint = 'https://api.coin.z.com/private'
path = '/v1/order'
reqBody = {
"symbol": "BTC_JPY",
"side": "BUY",
"executionType": "MARKET",
"size": "0.01"
}
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
}
response = requests.post(endPoint + path, headers=headers, data=json.dumps(reqBody)).json()
print (json.dumps(response))
気になった点
少し使ってみた中で気になった点をまとめます。
日付の切り替えのタイミング
日付の切り替えのタイミングです。
ドキュメントにも記載されてますが、日付の切り替えは日本時間の朝 6:00になります。つまり、20230601
という日付を指定した場合は、2023/06/01 06:00 ~ 2023/06/02 05:45
のデータを取得することになります。