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

スポンサーリンク

はじめに

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

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

【仮想通貨の自動売買を目指して】PythonでbitFlyer API
はじめに仮想通貨の自動売買に向けて、PythonからAPIでbitFlyerの売買ができるようにします。bitFlyerでの自動売買を目指すので、bitFlyerAPIについてとbitFlyerAPIをPythonで動かすときの便利なライブ...

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

手数料一覧・税 | 仮想通貨ビットコイン(Bitcoin)の購入/販売所/取引所【bitFlyer(ビットフライヤー)】
bitFlyer(ビットフライヤー)でビットコインの取引をする際に必要な各種手数料を表示しています。ご本人様確認のお手続きのために必要な資料、ビットコインに関する税等について案内しています。

GMO コインの API

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

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

API認証できること
Public APIあり誰でも確認できる情報の取得(板情報など)
Private APIなし個人アカウントに関する操作(注文や資産残高確認など)
APIドキュメント| GMOコイン
GMOコインが提供するAPIのドキュメントページです。認証不要のPublicAPIと、APIキーによる認証が必要なPrivateAPIをご提供。価格の自動取得や、取引所サービス(現物取引とレバレッジ取引)での自動取引(Botトレード)などにご利用いただけます。GMOインターネットグループの暗号資産FX・売買サービス、G...

Private API の API キーの取得

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

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

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

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

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

Python で GMO コイン API

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

APIドキュメント| GMOコイン
GMOコインが提供するAPIのドキュメントページです。認証不要のPublicAPIと、APIキーによる認証が必要なPrivateAPIをご提供。価格の自動取得や、取引所サービス(現物取引とレバレッジ取引)での自動取引(Botトレード)などにご利用いただけます。GMOインターネットグループの暗号資産FX・売買サービス、G...
APIドキュメント| GMOコイン
GMOコインが提供するAPIのドキュメントページです。認証不要のPublicAPIと、APIキーによる認証が必要なPrivateAPIをご提供。価格の自動取得や、取引所サービス(現物取引とレバレッジ取引)での自動取引(Botトレード)などにご利用いただけます。GMOインターネットグループの暗号資産FX・売買サービス、G...

ここでは、よく使いそうな 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のデータを取得することになります。

参考

タイトルとURLをコピーしました