【仮想通貨の自動売買を目指して】PythonでGMOコイン API

2023.06.04
2024.03.24
仮想通貨
GMOコインPython

はじめに

仮想通貨の自動売買に向けて、Python から API で GMO コインでの売買ができるようにします。

bitFlyer の API に関しては下記を参考にしてください。

unknown link

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

unknown link

GMO コインの API

GMO コインの API は Public API と Private API があります。

それぞれの API の特徴は下記の通りです。

API認証できること
Public APIあり誰でも確認できる情報の取得(板情報など)
Private APIなし個人アカウントに関する操作(注文や資産残高確認など)
unknown link

Private API の API キーの取得

Private API を使うためには、API Key と API Secret を作成する必要があります。

GMO コインからログインして、メニューから「API」を選択します。

「API キーを新規追加」をクリックします。

API キーを使って操作できる権限を選択して、API Key と API Secret を作成します。

API Key と API Secret の取り扱いには注意しましょう。

Python で GMO コイン API

基本的には、ドキュメントにいくつかの言語でのサンプルコードが記載されているので、そちらを参考に実装が可能です。

unknown link unknown link

ここでは、よく使いそうな 2 つの API を紹介します。

ローソク足の取得(Public API)

ローソク足の取得は下記になります。YYYYMMDDもしくはYYYYで日付を指定して、その日付のローソク足を取得してくれます。

1import requests
2import json
3
4endPoint = 'https://api.coin.z.com/public'
5path     = '/v1/klines'
6symbol = "BTC_JPY"
7date = "20230601"
8interval = "15min"
9params = {"symbol": symbol, "interval": interval, "date": date}
10
11response = requests.get(endPoint + path, params).json()
12print(json.dumps(response))

注文(Private API)

注文は下記になります。注文は Private API なので、API Key と API Secret が必要になります。

1import requests
2import json
3import hmac
4import hashlib
5import datetime
6
7apiKey    = 'YOUR_API_KEY'
8secretKey = 'YOUR_SECRET_KEY'
9
10timestamp = datetime.datetime.now().date().strftime('%Y%m%d')
11method    = 'POST'
12endPoint  = 'https://api.coin.z.com/private'
13path      = '/v1/order'
14reqBody = {
15    "symbol": "BTC_JPY",
16    "side": "BUY",
17    "executionType": "MARKET",
18    "size": "0.01"
19}
20
21text = timestamp + method + path + json.dumps(reqBody)
22sign = hmac.new(bytes(secretKey.encode('ascii')), bytes(text.encode('ascii')), hashlib.sha256).hexdigest()
23
24headers = {
25    "API-KEY": apiKey,
26    "API-TIMESTAMP": timestamp,
27    "API-SIGN": sign
28}
29
30response = requests.post(endPoint + path, headers=headers, data=json.dumps(reqBody)).json()
31print (json.dumps(response))

気になった点

少し使ってみた中で気になった点をまとめます。

日付の切り替えのタイミング

まず、日付の切り替えのタイミングです。

ドキュメントにも記載されてますが、日付の切り替えは日本時間の朝 6:00になります。つまり、20230601という日付を指定した場合は、2023/06/01 06:00 ~ 2023/06/02 05:45のデータを取得することになります。

参考

Support

\ この記事が役に立ったと思ったら、サポートお願いします! /

buy me a coffee
Share

Profile

author

Masa

都内のIT企業で働くエンジニア
自分が学んだことをブログでわかりやすく発信していきながらスキルアップを目指していきます!

buy me a coffee