ビットコイン自動売買の作り方|GMOコインAPIでリピート注文を組む手順

ビットコイン自動売買入門

カエルさん

ビットコインをトラリピのように繰り返し売買したい。GMOコインのAPIで、どう作ればいいの?
GMOコインの暗号資産APIで取引所の現物注文を自動化できます。価格を読むだけの検証から始め、買い・売り・再注文の条件と停止条件を順番に作りましょう。

たけたけ

GMOコインには暗号資産の取引所向けAPIがあります。ただし、APIキーを発行するだけで「トラリピ型」の売買が始まるわけではありません。価格確認、注文、約定確認、次の注文を自分のプログラムでつなぐ必要があります。ここではビットコインの現物取引に絞り、発注しない検証から運用開始までの設計を説明します。

📖 この記事でわかること

・ BTCのリピート売買を自作する流れ

・ GMOコインAPIで確認する価格・残高・注文・約定

・ 二重注文を防ぐ方法と停止時に残るもの

GMOコインAPIでビットコインのリピート売買はできる?

APIでつなぐ自動売買

できます。GMOコインの暗号資産APIは取引所の現物取引に対応し、レート取得、残高確認、注文、取消をプログラムから実行できます。一方、「買ったら売り注文を出し、売れたらまた買う」処理は自分で組み立てる必要があります。FXのトラリピと同じ商品や設定画面ではありません。

まず、口座開設とAPIキーの発行、Public APIとPrivate APIの違いを知りたい方は、次の記事から確認できます。

GMOコインで学ぶ 仮想通貨の自動売買 GMOコインで仮想通貨の自動売買を始める方法|API設定と検証手順

現物取引とレバレッジ取引を分けて考える

この記事の例は取引所の現物BTCです。購入額を上限として保有する形で、価格が下がれば評価損が発生します。レバレッジ取引の建玉・証拠金・ロスカットは扱いません。この記事では購入額と保有数量を基準に管理します。

MEMO

GMOコインの暗号資産APIは、販売所・暗号資産FX・外国為替FXの注文を同じ手順で扱うものではありません。記事中の銘柄「BTC」は取引所現物のAPI表記です。

買い・売り・再注文のルールを具体例で決める

売買ルールを先に決める

先に決めるのは、買値、売値、1回の数量、同時に保有する上限です。売れたら再び買い注文を出す仕組みでも、買いだけが連続して成立するとビットコインの保有額と含み損が増えます。利益幅だけで設定を決めないでください。

次は計算を理解するための仮例です。現在のBTC価格や注文条件を示すものではありません。

項目仮の設定確認すること
買い指値1 BTC=1,000万円買い注文が重複していないか
数量0.001 BTC注文時の必要額は1万円+手数料相当額
売り指値1 BTC=1,050万円買いの約定数量だけ売る
値幅50万円/BTC0.001 BTCなら差額500円(費用前)
保有上限0.003 BTC上限に達したら新規買いを止める

計算は(1,050万円-1,000万円)×0.001 BTC=500円です。実際の損益には売買手数料と約定価格が影響します。売り指値まで戻らなければ、利益は確定せず保有したBTCの評価額は変動します。買い注文を繰り返す前に、保有上限と追加購入を止める条件を決めます。

リピート処理は「約定」を起点にする

確認した状態プログラムの次の判断
買い注文が未約定新しい買い注文を追加せず、注文状態を監視
買いが一部または全部約定約定数量とBTC残高を照合し、売りの数量を決定
売り注文が未約定同じ数量の売りを二重に出さない
売りが約定保有上限・予算・停止条件を再確認して次の買いを判断
APIエラー・通信切断発注を止め、既存注文を照会してから再実行

注文受付の返答と約定は別です。注文IDを保存し、実際の約定数量を確認してから次の注文を作ります。部分約定、取消、残高不足でも同じ処理を繰り返さないことが重要です。

GMOコインAPIで自動売買を組む5ステップ

価格取得から始めるビットコイン実装

価格取得→売買判定→残高・既存注文の照合→発注→約定確認の順に作ります。GMOコインの公式ドキュメントには各APIのリクエストと応答例があります。

STEP.1
取引ルールと価格を読み取る
Public APIの GET /public/v1/symbols でBTCの最小注文数量、数量刻み、価格刻み、Maker・Taker手数料を取得します。次に GET /public/v1/ticker?symbol=BTC で価格を読みます。
STEP.2
注文しない状態で判定を記録
設定した買値・売値で、プログラムが「買い候補」「売り候補」「見送り」を出すかを記録します。通信失敗、価格が飛んだ場面、取引所の停止中は発注判定を進めません。
STEP.3
残高と未約定注文を照合
Private APIの GET /private/v1/account/assets で日本円・BTC残高を、GET /private/v1/activeOrders で有効注文を確認します。未約定の買いと保有BTCを合算して、予算と保有上限を守ります。
STEP.4
小さな注文を出して注文IDを保存
検証後、権限を限定したAPIキーで POST /private/v1/order を使います。clientOrderId または返却された注文IDを保存し、通信が途切れた場合も先に GET /private/v1/orders で受付状態を調べます。確認せずに再送しません。
STEP.5
約定を確認して次の注文を決める
GET /private/v1/executions などで約定数量と手数料を照合します。買いが約定した分だけ売りを検討し、売れた後は上限を確認して次の買いを判断します。

Private APIにはAPIキーとAPIシークレットを使った署名が必要です。注文サンプルを貼り付けてキーを入力するだけでは、重複注文や停止時の処理は完成しません。GMOコインの暗号資産APIドキュメントの認証、注文、注文照会の仕様を使って実装します。

最初は読み取り専用のコードを動かす

PHPを使うなら、最初はAPIキーの要らない価格取得だけで接続を確認できます。下の例は価格情報を表示するだけで注文は出しません。

<?php
$url = 'https://api.coin.z.com/public/v1/ticker?symbol=BTC';
$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 10,
]);
$body = curl_exec($ch);
$http = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$data = $body !== false ? json_decode($body, true) : null;
if ($http !== 200 || !is_array($data) || ($data['status'] ?? null) !== 0) {
    throw new RuntimeException('価格の取得に失敗しました');
}
echo 'BTCの最終約定価格: ' . ($data['data'][0]['last'] ?? '取得不可') . '円';

次は注文しないまま、買い条件と売り条件の判定結果を記録します。実注文へ切り替える前に、同じ注文が二重に出ないこと、残高不足で止まること、注文情報が取れない時は再送しないことを確認します。

MEMO

GMOコインのAPIでは、注文価格や数量の許容値を /public/v1/symbols で取得できます。仮例の数量をそのまま実注文に使わず、当該銘柄の条件と取引余力を照合してください。

定期実行と停止時に確認すること

停止後の注文と残高を確認

Cronなどで定期実行できますが、サーバを契約するだけでは自動売買は完成しません。1回の処理が終わる前に次の処理が重ならない設定、エラー通知、実行ログ、発注停止の仕組みが必要です。特定のレンタルサーバや24時間つけっぱなしのPCが必須というわけではありません。

APIキーとシークレットは公開ディレクトリ、WordPressの記事本文、Gitの公開リポジトリへ置かず、サーバの秘密情報として保存します。IP制限を利用できる場合は利用し、キーには必要な機能だけ許可します。GMOコインは自動売買ツールに関係すると考えられる不正取引への注意喚起も出しています。

プログラムを止めても未約定注文は残る

Cronを止めることと、取引所に残った注文を取り消すことは別です。新規発注を停止したら、GMOコインの会員ページまたは GET /private/v1/activeOrders で未約定注文を確認し、不要な注文は POST /private/v1/cancelOrder などで取り消します。買って保有しているBTCは注文取消だけではなくなりません。売却するか保有するかは残高と価格を見て別に判断します。

API経由の取引履歴は会員ページで確認します。公式案内ではアプリ「GMOコイン 暗号資産ウォレット」とWeb Traderの取引履歴にAPI経由の取引は表示されません。停止後も注文ID、約定、BTC残高、日本円残高を照合します。

取引所の手数料は銘柄とMaker・Takerで異なります。値幅が小さいほど費用の影響が大きくなるため、取引手数料一覧を確認してから注文ルールを決めます。

よくある質問

自動売買の疑問と金色のコイン

QGMOコインの口座を開けば自動売買が始まりますか?
A

いいえ。口座開設とAPIキー発行の後、取引ルールを決め、プログラムで価格取得・注文・約定確認をつなぎます。
Qトラリピと同じ設定画面でBTCをリピート売買できますか?
A

いいえ。この記事はGMOコインのAPIを利用して自分でルールを実装する方法です。トラリピのFX注文とはサービスと取引対象が異なります。
Qプログラムを止めれば注文も取り消されますか?
A

いいえ。定期実行を止めても、取引所に送信済みの未約定注文は別に確認・取消が必要です。保有BTCも自動では売却されません。
Q同じ注文を二重に出さない方法は?
A

注文IDや顧客注文IDを保存し、既存注文と約定を照会してから次を発注します。通信タイムアウト時は注文が通っている可能性があるため、状態の確認なしに再送しません。
Q現物のリピート売買なら毎月利益が出ますか?
A

いいえ。相場が下落して売り価格に戻らなければ保有BTCの評価損が続きます。注文回数と保有数量の上限を先に決めてください。

まとめ|価格取得から検証し、発注条件を一つずつ実装する

価格取得を検証する投資入門

GMOコインの暗号資産APIを使えば、BTCの現物注文を自動化できます。まず価格と取引ルールを取得し、発注なしで買い・売り条件を検証します。実注文を有効にする前に、残高・未約定注文・保有上限・停止方法を揃えてください。

💡 今日からやること

 1回の数量・売買価格・保有上限を決める

 Public APIで価格取得と注文しない判定を試す

 実注文前に二重注文防止と停止手順を確認する

口座の準備が必要な方は、開設手順を確認できます。

GMOコインの口座開設:無料の範囲・本人確認・手順 GMOコインの口座開設方法|無料の範囲・本人確認5ステップ

APIキーの発行と学習の順番は、こちらの記事で説明しています。

GMOコインで学ぶ 仮想通貨の自動売買 GMOコインで仮想通貨の自動売買を始める方法|API設定と検証手順