Site cover image

仮想通貨の自動積立、取引所でできないから自分で作った話

きっかけ

暗号資産(仮想通貨)の積立投資を始めようと思って、日本の取引所を色々調べていたんですが、これがまた残念な状況でした。

どこの取引所も自動積立サービスはあるんですが、全部「販売所」でしか買えないんです。

で、販売所で買うと何が問題かというと、買った瞬間に約1.5%損している状態になるわけです。


販売所のスプレッドとは

これ、最初よくわからなかったんですが、要するにこういうことです。

販売所で値段を見ると:

  • 買う時: 40万円
  • 売る時: 39万4千円

って表示されています。

「え、同じタイミングなのになんで?」って思いますよね。

この差額6,000円がスプレッドというもので、取引所の利益になっています。

実際どうなるか

3万円でETHを買ってみるとします。

買った瞬間の状態:
- 支払ったお金: 3万円
- 手に入れたETH: 0.075 ETH
- すぐに売ったらいくらになる?: 29,550円

あれ?450円消えた...

何もしていないのに450円マイナス。これがスプレッドの正体です。

1回だけなら「まあいいか」と思うかもしれませんが、毎月積立だと:

450円 × 12ヶ月 = 5,400/10年続けたら54,000...

これは無視できないコストです。


取引所なら安いのに

一方、「取引所」(板取引)で買うと、手数料は0.05%程度。

3万円買っても15円くらいしかかかりません。

1回年間10年
販売所450円5,400円54,000円
取引所15円180円1,800円

10年で5万円以上の差になります。

絶対に取引所で買いたいところです。


でも問題が

調べたところ、日本の取引所で「取引所形式の自動積立」をやっているところがゼロでした。

主要どころを全部チェックしましたが:

  • Coincheck → 販売所のみ
  • bitFlyer → 販売所のみ
  • GMOコイン → 販売所のみ
  • bitbank → そもそも自動積立なし

なぜないのかは明確ではありませんが、おそらく販売所の方が収益性が高いからでしょう。


じゃあ作ろう

「ないなら作ればいい」ということで、bitbankのAPIを使って自動積立システムを自作しました。

技術スタックはこんな感じです:

  • Cloudflare Workers - サーバーレスで動かす
  • Cron Triggers - 毎月自動実行
  • bitbank API - 取引所で注文
  • SendGrid - 結果をメール通知

仕組み

シンプルな構成です。

毎月16日の朝9時になったら
  ↓
ETHの現在価格を取得
  ↓
3万円で買える量を計算
  ↓
取引所に成行注文を出す
  ↓
結果をメールで通知

これだけです。

コアロジックはこんな感じ:

// 現在のETH価格を取得const ticker = await fetch('https://public.bitbank.cc/eth_jpy/ticker');const price = ticker.data.last;// 3万円で買える量を計算(手数料考慮して0.999倍)const amount = (30000 * 0.999) / price;// 署名を生成して注文送信const signature = hmacSHA256(secret, nonce + orderData);await fetch('https://api.bitbank.cc/v1/user/spot/order', {
  // 認証ヘッダー等});

HMAC-SHA256の署名まわりは少し複雑でしたが、bitbankのドキュメントを参照しながら実装できました。


Cloudflare Workersを選んだ理由

AWSやGCPも検討しましたが、Cloudflare Workersを選んだ理由:

  1. 無料枠が十分 - 月1回の実行なら余裕
  2. Cronが標準装備 - wrangler.tomlに記述するだけ
  3. サーバー管理不要 - メンテナンスフリー
  4. デプロイが簡単 - npx wrangler deployで完了

設定ファイル:

name = "bitbank-eth-dca"main = "src/index.ts"[triggers]crons = ["0 0 16 * *"]  # 毎月16JST 09:00

環境変数はSecretsで管理:

npx wrangler secret put BITBANK_API_KEY
npx wrangler secret put BITBANK_API_SECRET
npx wrangler secret put BUDGET_JPY  # 30000

これでサーバーを立てる必要なく、完全放置で動作します。


メール通知について

SendGridの無料枠を使って、購入成功時にこのようなメールが届くようにしました:

件名:[成功] ETH積立実行のお知らせ

本文:
ETHの積立が正常に実行されました.

---

{
  "when": "2025-10-16T00:00:12.345Z",
  "pair": "eth_jpy",
  "price": 395000,
  "budget_jpy": 30000,
  "amount": 0.07582278,
  "order": { ... }
}

朝起きてメールを確認すれば「今月も買えた」と安心できます。

失敗時も通知が来るため、残高不足などの問題にすぐ気づけます。

ちなみに、Cloudflareが2025年11月からEmail Service(プライベートベータ)を公開予定とのこと。

Cloudflare内で完結できるならそちらの方がスッキリしますが、今のSendGridも:

  • 無料枠で十分(月1通のみ)
  • すでに動作している
  • 特に問題ない

という状況なので、今のところ乗り換える必要性は感じていません

正式リリース後、評判が良ければ検討する程度の温度感です。


実際の運用状況

数ヶ月運用していますが、非常に快適です。

良かった点
  • PCの電源を入れていなくても自動実行される
  • 販売所より手数料が10分の1以下
  • メール通知があるので忘れても安心
  • Cloudflareのダッシュボードでログ確認可能
注意点
  • ネット銀行の自動振込設定で解決(毎月15日に自動入金)
  • 相場が急変している時は想定外の価格で約定する可能性
  • APIキーの管理は慎重に

コスト比較

ランニングコストはこのようになっています:

項目月額
Cloudflare Workers0円(Free)
SendGrid0円(Free)
bitbank取引手数料約15円
合計約15円

販売所の自動積立だと月450円かかるところ、月435円の節約になります。

年間で5,220円のコスト削減です。


なぜ取引所は自動積立を提供しないのか

これは疑問ですが、おそらく:

  1. 販売所の方が収益性が高い - スプレッドで1.5%の利益
  2. 技術的な複雑さ - 板取引だと約定保証が難しい
  3. サポートコスト - 「注文が通らなかった」等のクレーム対応

という事情があるのでしょう。

ただ、ユーザー目線では明らかに取引所での自動積立の方が有益です。

業界関係者の方、ぜひご検討いただけると嬉しいです。


まとめ

  • 日本の取引所の自動積立は販売所形式のみ
  • 販売所のスプレッドは約1.5%と高コスト
  • 取引所APIを使えば手数料を10分の1以下に削減可能
  • Cloudflare Workersなら無料で運用できる
  • 年間5,000円以上のコスト削減効果

プログラミングができる方であれば、自作する価値は十分にあると思います。

できない方は…販売所を利用するか、誰かがサービス化してくれるのを待つか。

ただ、本来は取引所側がきちんとしたサービスを提供してくれるのが理想だと考えています。


免責事項

投資は自己責任でお願いします。APIキーの管理などセキュリティ面にも十分ご注意ください。