DCA bot(ドルコスト平均法ボット)とは、決めた金額や条件にしたがって同じ銘柄を機械的に買い増していき、平均取得単価をならすことを目的とした自動売買機能である。結論を先に言うと、Bitgetには「DCA bot」という単一の名前の機能はなく、目的別に2つの機能へ分かれている。時間で淡々と積み立てたいなら「スポット自動積立」、価格が下がるたびに買い増して反発で利確したいなら「マーチンゲール」である。この2つを取り違えると、想定とまったく違うリスクを取ることになる。

この記事では、2026年7月時点のBitgetのボット構成を確認したうえで、どちらを選ぶべきか、設定値をどう決めるか、そして自分でAPIから組む場合のコードまでを、そのまま使える形で示す。

この記事でできること・できないこと

項目 DCA系botでできること DCA系botでもできないこと
買い付け 決めたルールで機械的に買い増す 「底で買う」ことを保証する
感情の排除 相場を見ずに済むので狼狽売り・高値掴みが減る 下落そのものを止める
平均単価 下落局面で取得単価を引き下げる 平均単価が下がる=含み損が減る、ではない
手間 一度設定すれば毎回の発注が不要になる 銘柄選定とリスク量の判断を代わりにやってくれる
資金効率 一括投入より高値掴みの影響を薄める 上昇相場での一括投入に利回りで勝つ
出口 利確条件を設定して自動で決済する 損切りを勝手に判断する(設定しない限り)

表の3行目と5行目が誤解されやすい。平均取得単価が下がることと、損失が減ることは別の話である。下落し続ける銘柄でDCAを回すと、単価は下がりながら投入額が増え、含み損の絶対額はむしろ拡大する。DCAは「価格の変動を時間で薄める手法」であって、「価格が戻ることを前提にした賭け」ではない、という区別が出発点になる。

BitgetのDCAに相当する機能は2種類ある

2026年7月時点で、Bitgetが提供しているトレーディングボットは次の通りである。現物側がスポットグリッド、スポットマーチンゲール、スポット自動積立、スマートポートフォリオ、スポットトレンド追従。先物側が先物グリッド、先物ポジショングリッド、先物マーチンゲール、先物トレンド追従、先物シグナルボット。このうちDCAの考え方に当たるのは、次の2つである。

スポット自動積立(Auto-invest) マーチンゲール
買い増しの引き金 時間(毎日・毎週・毎月など) 価格の下落幅(前回から◯%下がったら)
1回の金額 一定額 回を追うごとに増える(倍率設定)
想定する相場 長期の右肩上がり・方向感を問わない レンジまたは一時的な下落からの反発
利確 自分の判断で売る(保有が前提) 設定した利益率で自動決済し、サイクルを再開
主なリスク 下落局面が長引くと含み損が膨らむ 下げ続けると必要資金が急激に増え、資金が尽きる
向いている人 積立で数量を増やしたい人 レンジ相場で回転させたい中上級者
レバレッジ なし(現物) 現物版はなし/先物版はあり

初心者が「DCA bot」という言葉から想像するのは前者のスポット自動積立である。一方、海外の解説記事で「DCA bot」と呼ばれているものの多くは後者のマーチンゲール型を指しており、ここが混乱の元になっている。マーチンゲールは「下がるほど大きく買い増す」性質上、下落が続いた場合の必要資金が指数的に増える。倍率1.5倍で7段階まで買い増す設定なら、初回1万円でも累計は約20万円を超える。設定時に必ず「最終段まで刺さったときの総額」を電卓で出すべきなのはこのためである。

手順1:国内取引所を経由して資金を用意する

海外取引所を使う前提として、日本円の入出金は金融庁登録の国内取引所で行い、Bitgetはその先の運用先として位置づけるのが基本になる。国内取引所で日本円を入金して暗号資産を購入し、それを送金して運用する。国内取引所はUSDTを扱っていないことが多いため、海外へはUSDT/USDCのまま、国内へ戻すときはBTCやETHに変換して送るのが定石だ。

送金時の注意点は2つ。ネットワークの選択(TRC20/ERC20など)を送金元と送金先で必ず一致させること、そして初回は必ず少額でテスト送金することである。ネットワークを取り違えた送金は戻らないことがある。

手順2:Bitgetで口座を作りボット画面へ入る

Bitgetは2018年創業の取引所で、現物手数料は0.1%(BGB払いで0.08%)、先物はメイカー0.02%・テイカー0.06%、日本語UIに対応している(いずれも2026年7月時点)。ボットは「取引Bot」メニューから利用でき、現物残高があれば追加の申請なしにそのまま作成できる。

口座開設からボット稼働までは、おおむね次の順序で進む。

  1. メールアドレスまたは電話番号で登録し、二段階認証を有効にする。
  2. 本人確認(KYC)を完了させる。書類の不備で差し戻されることがあるため、氏名の表記ゆれと有効期限に注意する。
  3. 国内取引所から暗号資産を送金し、必要に応じて現物取引でUSDTに替える。
  4. 「取引Bot」メニューを開き、スポット自動積立またはマーチンゲールを選ぶ。

手順3:スポット自動積立を設定する(時間ベースのDCA)

時間で淡々と積み立てるタイプの設定項目は少ない。決めるのは「銘柄」「1回あたりの金額」「頻度」「開始時刻」の4つである。

初心者が最初に置く設定として、次のテンプレートをそのまま使える。

【スポット自動積立 初期設定テンプレート】
銘柄        : BTC / ETH のみ(時価総額上位・出来高が厚いもの)
1回の金額    : 月の余剰資金 ÷ 4  (例: 月2万円なら1回5,000円)
頻度        : 毎週1回
実行曜日・時刻 : 毎週水曜 21:00(出来高が極端に薄い時間帯を避ける)
配分        : BTC 70% / ETH 30%
継続期間     : 最低12か月は評価しない(3か月で判断しない)
見直し頻度    : 3か月に1回、銘柄と金額のみ見直す
停止条件     : 生活資金に手を付ける必要が出たら即停止

銘柄を増やしすぎないことが最大のコツである。5銘柄、10銘柄に分散すると、1銘柄あたりの積立額が小さくなり、手数料の比率が上がるうえに、後から損益を追いきれなくなる。最初はBTCとETHの2銘柄で十分だ。

頻度は「毎日」「毎週」「毎月」から選べるが、長期で見た成績の差はほとんど出ない。それより重要なのは、選んだ頻度を相場が荒れても変えないことである。下落したときに積立を止めてしまうと、DCAの前提そのものが崩れる。

手順4:マーチンゲール型を設定する(価格ベースのDCA)

価格の下落幅を引き金に買い増すタイプは、設定項目が一気に増える。ここが実際の分かれ目になる。

設定項目 意味 保守的な初期値
初回買付額 最初に投じる金額 想定総投入額の1/10以下
価格下落幅 次の買い増しを行う下落率 3〜5%
買い増し倍率 前回に対する金額の倍率 1.2〜1.5倍
最大買い増し回数 何段まで刺すか 5〜7回
利確率 平均取得単価に対する利益率 1.5〜3%
損切り条件 サイクルを諦める価格 必ず設定する

必ず先に電卓を叩く。 最大買い増し回数まで刺さったときの総投入額は、初回買付額 ×(倍率の等比級数)で決まる。

【必要資金の計算式(コピーして使う)】
総投入額 = 初回額 × (1 - 倍率^(段数+1)) / (1 - 倍率)

例1) 初回 5,000円 / 倍率 1.3 / 段数 6
     → 5,000 × (1 - 1.3^7) / (1 - 1.3) ≒ 約 105,000円

例2) 初回 5,000円 / 倍率 1.5 / 段数 7
     → 5,000 × (1 - 1.5^8) / (1 - 1.5) ≒ 約 232,000円

判定基準:
  総投入額 <= 「この銘柄で全額失っても生活に影響しない金額」
  を満たさない設定は、倍率か段数を下げて作り直す。

例1と例2で、初回額は同じ5,000円なのに必要資金が倍以上違う。マーチンゲールの危険は倍率と段数の掛け算に潜んでいる。倍率1.5倍・段数7回のような設定は、下げ相場で「最後の1段を刺す資金が足りずに止まる」という最悪の形になりやすい。

利確率は低めに設定するほどサイクルが早く回るが、往復の手数料(現物0.1%、往復で0.2%)を差し引いて残るかを確認する必要がある。利確率1%未満の設定は、手数料でほぼ相殺されると考えたほうがよい。

手順5:少額で1サイクル回して挙動を確認する

設定を保存したら、いきなり本番資金を入れず、想定額の10分の1以下で最低1サイクルを完走させる。確認するのは次の4点である。

  1. 買い増しが設定した下落率どおりのタイミングで発動しているか
  2. 平均取得単価の表示が自分の計算と一致するか
  3. 利確が設定した利益率で執行されているか
  4. 手数料を差し引いた後に、実際に利益が残っているか

4番目でつまずくケースが最も多い。画面上の損益は手数料を含まない表示になっていることがあるため、取引履歴のCSVを落として自分で差し引いて確認する

手順6:稼働後の監視と停止基準を決めておく

ボットを動かし始めた後にやることは、実は「見ないこと」と「止める基準を守ること」の2つしかない。事前に次を紙に書いておく。

【停止基準テンプレート】
- 総投入額が当初計画の 100% に達した  → 新規サイクルを停止
- 対象銘柄に上場廃止・重大なプロジェクト側の問題が出た → 即停止
- 3か月連続で手数料控除後の損益がマイナス → 設定を作り直す
- 生活資金・生活防衛費に手を付ける必要が出た → 全停止・出金
- 自分が設定内容を説明できなくなった → 一度全部止める

やってはいけないこと・実際に起きる失敗例

ここが最も差がつくので、記事の中盤に置く。

  1. 「平均単価が下がる=損が減る」と考える:単価は下がるが投入額は増える。含み損の絶対額は拡大しうる。この誤解がマーチンゲールで資金を溶かす最大の原因である。
  2. 最終段までの総投入額を計算しない:上の計算式を使わずに設定すると、想定の5倍以上の資金が必要になることがある。
  3. 下落局面で積立を止める:時間ベースのDCAは、安い時期に多く数量を買えることが唯一の利点である。下がったから止めるのは、手法の効果を自分で消す行為になる。
  4. 利確率を手数料より低く設定する:現物の往復手数料0.2%を無視した0.5%利確などは、実質的にほぼ利益が残らない。
  5. 流動性の薄い銘柄で回す:出来高の少ない銘柄は、買い増しのたびに自分の注文で価格が動く。時価総額上位から選ぶ。
  6. 損切り条件を設定しない:マーチンゲールで損切りを置かないのは、資金が尽きるまで買い続ける設定にすることと同義である。
  7. 複数のボットを同じ資金で並行して動かす:残高の取り合いになり、必要なタイミングで買い増しが発動しない。ボットごとに資金を明確に分ける。
  8. 短期で判断して設定を頻繁に変える:1〜2か月の成績で設定をいじると、単に高値で買って安値で止めるだけの動きになる。見直しは3か月単位にする。
  9. 税金の集計を後回しにする:ボットは取引回数が膨らみやすい。海外取引所は年間取引報告書が出ないことが多いため、月次で履歴を保管しておかないと申告時に破綻する。

編集部では2026年4月からClaude Codeに売買判断を任せる検証運用を実口座で続けているが、初期の失敗は「ロジックの良し悪し」ではなく「コストの見積もり漏れ」に集中していた。手数料やネットワーク費用に対して1回あたりの建玉が小さすぎ、勝ちトレードでも実質マイナスになる状態が続いたため、建玉に下限を設ける対処を入れている。DCA系のボットでも構造はまったく同じで、1回の買付額が小さすぎると手数料負けする。検証結果は運用実績ページで公開している。

対決:他の手段とどちらを選ぶか

対 グリッドbot

グリッドbotは価格帯を格子状に区切り、下がったら買い・上がったら売りを繰り返す。レンジ相場での回転数はグリッドのほうが多いが、上下両方向に注文を出す都合上、資金効率と設定の難易度が上がる。一方DCAは買い一方向で、保有数量を増やすことが目的になる。「値幅を取りたい」ならグリッド、「数量を増やしたい」ならDCA、という切り分けが分かりやすい。

対 国内取引所の積立サービス

国内の金融庁登録業者にも自動積立サービスがある。日本円の口座振替でそのまま積み立てられ、税務書類も整いやすく、手軽さと安全性では国内サービスに分がある。ただしスプレッドが実質的な手数料として乗る設計のものが多く、取扱銘柄も限られる。日本円からの積立を第一の柱にし、海外取引所のボットは補助に留める構成が、リスク配分としては現実的である。

対 自分でAPIから組む自作DCA

取引所の機能に頼らず、APIを叩いて自分で積み立てる方法もある。銘柄・条件・記録のすべてを自由に設計でき、取引所のボット仕様変更にも影響されない。手間はかかるが、「いつ・いくらで・いくつ買ったか」を自分の手元に完全な形で残せるのは、確定申告と戦略検証の両面で大きい。次章にそのまま動くコードを置く。

自分でDCAを組む場合の最小コード

BitgetのREST APIは、ACCESS-KEY、ACCESS-SIGN、ACCESS-TIMESTAMP、ACCESS-PASSPHRASEの4つのヘッダーで認証する。署名は「タイムスタンプ+メソッド+リクエストパス(+クエリ)+ボディ」を連結した文字列をHMAC SHA256で処理し、Base64エンコードした値である。

# dca.py  —  毎週1回、指定額だけ成行で買い増す最小構成
import base64, hmac, hashlib, json, time, os, csv, datetime
import requests

BASE = "HTTPS://api.bitget.com"   # スキームの大文字小文字は区別されません
KEY  = os.environ["BITGET_API_KEY"]
SEC  = os.environ["BITGET_API_SECRET"].encode()
PASS = os.environ["BITGET_API_PASSPHRASE"]

SYMBOL      = "BTCUSDT"
AMOUNT_USDT = "20"        # 1回あたりの買付額
LOG_PATH    = "/var/log/dca/history.csv"

def sign(ts, method, path, body):
    msg = f"{ts}{method.upper()}{path}{body}"
    return base64.b64encode(
        hmac.new(SEC, msg.encode(), hashlib.sha256).digest()
    ).decode()

def call(method, path, body=None):
    ts = str(int(time.time() * 1000))
    body_str = json.dumps(body, separators=(",", ":")) if body else ""
    headers = {
        "ACCESS-KEY": KEY,
        "ACCESS-SIGN": sign(ts, method, path, body_str),
        "ACCESS-TIMESTAMP": ts,
        "ACCESS-PASSPHRASE": PASS,
        "Content-Type": "application/json",
        "locale": "en-US",
    }
    r = requests.request(method, BASE + path, headers=headers,
                         data=body_str or None, timeout=10)
    r.raise_for_status()
    return r.json()

def buy_once():
    # 現物の成行買い(size は建玉ではなく USDT 建ての金額で指定)
    body = {
        "symbol": SYMBOL,
        "side": "buy",
        "orderType": "market",
        "force": "gtc",
        "size": AMOUNT_USDT,
        "clientOid": f"dca-{int(time.time())}",
    }
    return call("POST", "/api/v2/spot/trade/place-order", body)

def append_log(res):
    os.makedirs(os.path.dirname(LOG_PATH), exist_ok=True)
    new = not os.path.exists(LOG_PATH)
    with open(LOG_PATH, "a", newline="", encoding="utf-8") as f:
        w = csv.writer(f)
        if new:
            w.writerow(["datetime", "symbol", "amount_usdt", "response"])
        w.writerow([datetime.datetime.now().isoformat(timespec="seconds"),
                    SYMBOL, AMOUNT_USDT, json.dumps(res, ensure_ascii=False)])

if __name__ == "__main__":
    for attempt in range(3):            # 一時的な失敗は3回まで再試行
        try:
            res = buy_once()
            append_log(res)
            print("[ok]", res)
            break
        except Exception as e:
            print(f"[error] attempt={attempt} {e}")
            time.sleep(2 * (attempt + 1))

定期実行はcronに任せる。必ずCSVに履歴を残す設定にしておくと、確定申告と成績評価の両方でそのまま使える。

# APIキーは環境ファイルに分離し、所有者しか読めないようにする
sudo tee /etc/dca/env > /dev/null <<'EOF'
BITGET_API_KEY=
BITGET_API_SECRET=
BITGET_API_PASSPHRASE=
EOF
sudo chmod 600 /etc/dca/env

# crontab -e に追記:毎週水曜 21:00 に実行
0 21 * * 3 set -a && . /etc/dca/env && set +a && /usr/bin/python3 /opt/dca/dca.py >> /var/log/dca/run.log 2>&1

APIキーには発注権限のみを付け、出金権限は付けない。加えてIP許可リストに実行サーバーのグローバルIPだけを登録すれば、キーが漏れても資産の持ち出しは防げる。また、サーバーの時刻がずれていると署名が通らないため、sudo timedatectl set-ntp true を有効にしておく。

コストの実額

DCAで見落とされやすい費用を積み上げると、次のようになる(2026年7月時点)。

費目 実額の目安 備考
現物売買手数料 約定代金の0.1%(BGB払いで0.08%) 買いのみなら片道分
マーチンゲールの往復 約0.2% 利確率をこの倍以上に設定する
国内→海外の送金手数料 数百円〜/ネットワーク費用 送金回数を減らすほど有利
自作する場合のサーバー代 月1,100〜1,600円 国内VPSの2GBクラス
為替(円→USDT) スプレッド分 円建て評価では常に影響する

月5,000円の積立に対して送金手数料が毎回数百円かかる構成は、それだけで数%のコストになる。送金はまとめて行い、取引所内に待機資金を置いてから積み立てるほうが実質コストは下がる。

海外取引所を使う以上、理解しておくべきリスク

  1. 金融庁登録がない:Bitgetは日本の暗号資産交換業者として登録されていない。日本の法規制による保護や補償の対象外である。
  2. 出金が制限される可能性:本人確認の追加要求やメンテナンスで出金が一時的に止まることがある。全資産を一か所に置かないことが唯一の実務的な対策になる。積み立てた資産を定期的に一部出金しておく運用が望ましい。
  3. サービス方針の変更:日本居住者向けサービスの縮小・終了は実際に起きている。Bybitは日本居住者向けサービスを終了し、2026年3月23日にクローズオンリー、2026年7月22日正午に未決済ポジションが強制決済される扱いとなった。長期の積立ほど、この種の変更に当たる確率は上がる。
  4. 利益は確定申告が必要:暗号資産の利益は課税対象である。DCAは取得単価の管理が複雑になりやすいため、取引履歴のCSVを毎月保管しておく。扱いは個別事情で変わるため、税理士など専門家に相談することを勧める。
  5. ボット仕様の変更:取引所側の機能はアップデートで設定項目や手数料体系が変わることがある。稼働中のボットも定期的に設定画面を確認する。
  6. 相場環境そのもの:2026年7月時点の暗号資産市場は弱気で、上半期を通じて大きく下落している。下げ相場でDCAを始めた場合、含み損の期間が年単位で続くことは十分ありうる。過去の成績は将来の利益を保証しない。

稼働前チェックリスト

  • 時間ベース(自動積立)と価格ベース(マーチンゲール)のどちらを使うか決めた
  • マーチンゲールの場合、最終段までの総投入額を計算式で算出した
  • その総投入額が「全額失っても生活に影響しない金額」に収まっている
  • 利確率が往復手数料(約0.2%)の数倍以上に設定されている
  • 損切り・停止条件を事前に文章で書き出した
  • 対象銘柄が時価総額上位で出来高が厚い
  • 想定額の10分の1以下で1サイクルを完走させ、手数料控除後の損益を確認した
  • 取引履歴のCSVを毎月保管する運用を決めた
  • 資産を一か所に集中させず、定期的な一部出金の方針を決めた
  • 自作する場合、APIキーに出金権限がなくIP許可リストが設定されている

まとめ

BitgetでDCAをやるとき、最初にやるべきことは設定画面を開くことではなく、「自分がやりたいのは時間ベースか価格ベースか」を決めることである。淡々と数量を増やしたいならスポット自動積立、レンジでの反発を取りに行くならマーチンゲール。後者を選ぶ場合は、最終段までの総投入額を計算式で必ず出し、その金額を失っても生活が変わらない範囲に収める。ここさえ守れば、DCA系ボットで再起不能な損失を出す確率は大きく下げられる。

そして数字の面では、往復手数料に対して利確率が十分か、1回の買付額が手数料負けしていないか、この2点だけを繰り返し確認すればよい。自動化は判断の手間を減らすが、コスト構造の確認を代わりにやってはくれない。少額で1サイクル回して手数料控除後の実損益を自分の目で見る——この一手間が、長く続けられるかどうかを決める。

<!-- INTERNAL_LINKS_RELATED -->

関連記事

<!-- INTERNAL_LINKS_RELATED -->