見出し画像

【AI投資への道】GMOコインAPI入門!自動売買への扉を開ける鍵

今回は、自動売買のキモ、APIってやつについてだ。

自動売買システムを作るってことは、取引所とプログラムを繋ぐ必要がある。

その「繋ぎ役」がAPI(Application Programming Interface)ってわけだ。
今回は、俺が選んだ戦場、GMOコインのAPIの使い方を、俺なりに噛み砕いて説明してやる。

なんでGMOコインかって? まあ、大手だし、APIの情報も比較的分かりやすそうだったからだ。深い理由はねぇ。

GMOコインAPIって何ができる? - 公開情報と秘密の操作

GMOコインのAPIは、大きく分けて2種類ある。

  • Public API (公開API):

    • こっちは誰でもアクセスできる。いわば「見学自由」なエリアだ。

    • 取引所が開いてるか閉まってるか(稼働状況)、今のビットコインいくらよ?(最新レート)、売りと買いの注文がどれくらい並んでるか(板情報)、過去の取引履歴なんかの情報が取れる。

    • これだけでも、相場分析の自動化とか、AI 投資のためのデータ収集に役立ちそうだ。認証とか面倒な手続きは要らねぇ。


  • Private API (非公開API):

    • こっちは「会員専用」エリア。お前の金に関わる操作をするためのもんだ。

    • 自分の口座にいくら入ってるか(資産残高)、ビットコイン買え!(新規注文)、やっぱ今の注文やめ!(注文取消)とかができる。

    • 自動売買のメインはこっちだな。当然、勝手に使われたらヤバいから、APIキーっていう「秘密の合鍵」を使った認証が必要になる。


どっちもHTTPSって安全な通信方法でやり取りする。現物もレバレッジもイケるぜ。

秘密の合鍵「APIキー」を手に入れろ!


Private APIを使うには、まず「APIキー」と「APIシークレット」ってのを手に入れなきゃ始まらん。金庫の鍵と暗証番号みたいなもんだな。
取得手順はこうだ:

  1. GMOコインにログイン: まずは自分のアカウントに入れ。持ってなきゃ作れよ。

  2. メニューから「API」へ: 会員ページ探せばあるはずだ。

  3. 「APIキーを新規追加」をクリック: そのまんまだな。

  4. 設定:

    • ラベル名: 自分で分かりやすい名前つけろ。「俺様専用自動売買キー」とか。

    • パーミッション(権限): これが重要。「資産残高の取得」だけとか、「注文もできるようにする」とか、このキーで何ができるかを設定する。最初は必要最低限にしとくのが安全策だな。

    • IP制限: 特定の場所からしかアクセスできないようにする設定。セキュリティ高めたいなら設定しとけ。俺? もちろん設定するぜ。

  5. 「追加する」で生成!: クリックすると、APIキーとAPIシークレットが表示される。

超重要: このAPIキーAPIシークレットは、絶対に他人に教えるなよ! 銀行の暗証番号と同じか、それ以上に大事なもんだ。

漏れたら、お前の口座が勝手に操作されて、資金を抜かれる可能性だってあるからな! スクショ撮ってSNSに上げるとか、もってのほかだぞ! 厳重に保管しろ!

APIの基本構造と「認証」という名の関所


APIを使うってのは、特定の住所(エンドポイントって言う)に手紙(リクエスト)を送るようなもんだ。

  • Public APIのエンドポイント: https://api.coin.z.com/public

  • Private APIのエンドポイント: https://api.coin.z.com/private

Public APIなら、この住所に「最新レート教えて」って手紙(GETリクエスト)を送れば、返事が来る。

だが、Private APIはそうはいかねぇ。「俺は正当なユーザーだ!」って証明(認証)が必要になる。関所を通るための通行手形みてぇなもんだな。

その通行手形に必要なのが、さっき取得したAPIキーと、いくつかの「おまじない」だ。
リクエストに含めるヘッダー情報:

  • API-KEY: さっき取得したAPIキー。

  • API-TIMESTAMP: リクエストを送る瞬間の時間(UNIXタイムスタンプってやつ。ミリ秒単位)。「今、この瞬間に送ってますよ」って証明だな。

  • API-SIGN: これが一番ややこしい。「署名」だ。リクエスト内容が改ざんされてないか、本人が送ったものかを証明するための暗号みてぇなもん。

署名 (API-SIGN) の作り方(呪文詠唱):

  1. 以下の4つの文字列を順番にくっつける。

    • タイムスタンプ (API-TIMESTAMP)

    • HTTPメソッド (POST とか GET)

    • リクエストパス (/v1/order とか)

    • リクエストボディ (注文内容とかをJSON形式にした文字列。GETの場合は空)

  2. 出来上がった長い文字列を、APIシークレットを「鍵」にして、HMAC-SHA256っていう方式で暗号化(ハッシュ化)する。

「は? 何言ってんだ?」って感じだろ? 俺も最初はそうだった。
ここは理屈より、コード見た方が早いかもしれん。

提供されてたPythonのサンプルコードを載せとくぜ。これはBTC/JPYを430万円で0.01BTC買うっていう指値注文の例だ。

import requests
import json
import hmac
import hashlib
import time

# ↓↓↓ 自分のAPIキーとシークレットに置き換えろよ! ↓↓↓
api_key = 'YOUR_API_KEY'
api_secret = 'YOUR_API_SECRET'
# ↑↑↑ 絶対に他人に見せるな! ↑↑↑

endpoint = 'https://api.coin.z.com/private'
path = '/v1/order' # 新規注文のエンドポイントパス
method = 'POST'   # 注文はPOSTメソッド

# --- 注文内容を作る ---
body = {
    "symbol": "BTC_JPY",   # 通貨ペア
    "side": "BUY",         # 買い
    "executionType": "LIMIT", # 指値注文
    "price": "4300000",    # 価格
    "size": "0.01"         # 数量
}
# Pythonの辞書をJSON形式の文字列に変換
body_json = json.dumps(body)

# --- 認証のための準備 ---
# 1. タイムスタンプ取得 (ミリ秒単位のUNIX時間)
timestamp = str(int(time.time() * 1000))

# 2. 署名を作成するための元データ作成
#    TIMESTAMP + METHOD + PATH + BODY を連結
text = timestamp + method + path + body_json

# 3. HMAC-SHA256で署名を作成
sign = hmac.new(
    api_secret.encode('utf-8'), # APIシークレットをバイト文字列に変換
    text.encode('utf-8'),       # 連結した文字列をバイト文字列に変換
    hashlib.sha256              # ハッシュアルゴリズム指定
).hexdigest()                   # 16進数文字列で取得

# --- ヘッダーを設定 ---
headers = {
    'API-KEY': api_key,
    'API-TIMESTAMP': timestamp,
    'API-SIGN': sign,
    'Content-Type': 'application/json' # POSTでJSON送る場合は必要
}

# --- リクエスト送信! ---
try:
    response = requests.post(endpoint + path, headers=headers, data=body_json)
    response.raise_for_status() # エラーがあったら例外発生させる
    print("リクエスト成功!")
    print(response.json()) # 返ってきた結果を表示
except requests.exceptions.RequestException as e:
    print(f"リクエスト失敗…: {e}")
    # エラーレスポンスの内容も確認すると原因究明に役立つ
    if hasattr(e, 'response') and e.response is not None:
        try:
            print(e.response.json())
        except json.JSONDecodeError:
            print(e.response.text)


正直、俺もこの署名の仕組みは、相棒のChatGPTに「おい、このHMAC-SHA256って何だよ?」「このコード何やってんの?」って聞きまくって、ようやく理解したレベルだ。

AIはこういう面倒な説明も嫌な顔せず(?)付き合ってくれるから助かるぜ。

でもな、ここを乗り越えれば、プログラムから自由自在に取引所を操作できる世界が待ってるんだ。やるしかねぇだろ!

APIでどんなコマンドが使える? - 代表的なエンドポイント


GMOコインのAPIで使えるコマンド(エンドポイント)はたくさんあるが、代表的なやつをいくつか紹介しとく。
Public API (認証不要):

  • /v1/status: 取引所、ちゃんと動いてる?

  • /v1/ticker: 今のレート教えて! (BTC, ETHとか色々指定できる)

  • /v1/orderbooks: 板情報見せて! (売り買いの注文状況)

  • /v1/trades: 最近の取引履歴ちょーだい!

Private API (認証必要):

  • /v1/account/assets: 俺の財布の中身(資産残高)見せて!

  • /v1/order: 注文出すぜ!(買い or 売り、指値 or 成行、量とか指定)

  • /v1/cancelorder: さっきの注文、やっぱキャンセル!

  • /v1/orders: 今出してある注文の一覧見せて!

  • /v1/executions: 約定した取引の履歴見せて!

これらを組み合わせれば、「常に最新レートを監視して、特定の価格になったら自動で買い注文を出す」みたいなプログラムが組めるわけだ。AI 投資の基本的な仕組みも見えてくるだろ?

まとめ

今回はGMOコインAPIの基本について、俺なりに解説してみた。

認証のところが少しややこしいが、ここさえクリアすれば、自動売買システムの開発が一気に現実味を帯びてくる。

プログラム組めなくても、既存のツール使うにしても、APIの仕組みを知っておくことは絶対に無駄にならん。

さて、次回は…いよいよこのAPIを使って、実際に何か動かしてみるか?
まずは資産残高を取得してみるとか、簡単なレート取得ボットを作ってみるとか…

相棒のChatGPTと相談しながら、次のステップに進むぜ。
今回も長々付き合ってくれてありがとな!


この元パチプロとAIの挑戦、面白そうだと思ったら、フォロースキを頼むぜ! モチベーションになるからよ!
それじゃ、また次回!
#AI投資 #ChatGPT投資 #GMOコイン #API #自動売買 #暗号資産 #仮想通貨 #プログラミング #Python #初心者 #元パチプロ


【免責事項】
この記事は、俺個人の調査や理解に基づいたものであり、情報の正確性や完全性を保証するもんじゃねぇ。特にAPIの仕様は変更される可能性があるから、必ずGMOコインの公式ドキュメントを確認してくれ。この記事に掲載された情報やサンプルコードに基づいて行ったいかなる行為、およびその結果について、俺は一切の責任を負わねぇ。暗号資産取引は高リスクだから、投資は自己責任で、余裕資金でやれよ! APIキーの管理も自己責任だぞ!


いいなと思ったら応援しよう!