1. はじめに|トレーリングストップとは?なぜ自動化するのか
「利確のタイミングが難しい…」「あとちょっと上がると思ってたのに、急落して損した…」
そんな経験、ありませんか?
仮想通貨のように価格の動きが激しいマーケットでは、いつ売るかの判断が利益を大きく左右します。ですが、それを人の手で24時間ずっと監視し続けるのは現実的ではありませんよね。
そこで登場するのが、**トレーリングストップ(Trailing Stop)**という便利な売却方法です。
🔁 トレーリングストップとは?
一言でいうと、
「利益を伸ばしながら、損は最小限に抑える」ための自動売却ルール
です。
たとえば、ビットコインが上昇しているときに「高値から5%下がったら売る」といったルールを決めておけば、
値上がりしている間は売らず、値下がりしたタイミングで**自動的に利確(利益確定)**してくれる仕組みです。
このように、トレンドを追いかけながら自動で売却ラインを更新してくれるのがトレーリングストップの大きな魅力です。
🤖 じゃあ、なぜPythonで自動化するの?
トレーリングストップは証券会社や一部の取引所に実装されている場合もありますが、
実はCoincheck(コインチェック)など多くの国内取引所にはこの機能がありません。
つまり、自分で実装する必要があるんです。
でもご安心を。Pythonなら、Coincheckの価格APIと売却APIを組み合わせることで、
このトレーリングストップのロジックを誰でも自動化できます!
一度プログラムを作っておけば、あとはPythonが24時間働き続けてくれるので、
寝ている間もチャンスを逃さず利確できるようになります。
2. トレーリングストップの仕組みを理解しよう
トレーリングストップ(Trailing Stop)は、名前こそカッコいいですが、仕組みはとてもシンプルです。
まずは基本からわかりやすく見ていきましょう!
📈 利益を追いかけて、下がったら自動で売る!
トレーリングストップとは、「価格の上昇にあわせて売却ラインも一緒に引き上げる」仕組みです。
ただし、価格が下がったときは売却ラインはそのまま。そして一定の下落幅に達したら、自動で売却を実行します。
💡具体例で見てみよう!
たとえばこんな設定だったとします。
- トレール幅(下落許容幅):3万円
- ビットコインのスタート価格:100万円
① ビットコイン価格が100万円 → 105万円 → 110万円と上がっていく
→ トレーリングストップも97万円 → 102万円 → 107万円と一緒に上昇!
② その後、価格が107万円 → 105万円 → 103万円と下落したら?
→ **価格が107万円のときに設定された「売却ライン=104万円」**を下回ったため、ここで自動売却!
📊「逆指値注文」と何が違うの?
| 項目 | 逆指値注文 | トレーリングストップ |
|---|---|---|
| 売却ライン | 固定(例:95万円) | 高値に追従して変化(例:高値−3万円) |
| 利益の伸びしろ | 高値を更新しても利確ラインは変わらない | 高値が上がると売却ラインも上がる |
| 柔軟性 | △ | ◎ |
🛠 自動売却ラインはこうやって動く!
トレーリングストップは、「今の高値 − トレール幅」=売却トリガー価格になります。
もし高値が110万円で、トレール幅が3万円なら…
→ 売却トリガー価格は「107万円」
→ 107万円を下回ったら即売却!

このように、**上がったら追従、下がったらストップ!**という仕組みが、トレーリングストップの基本です。
3. Pythonでトレーリングストップを実装するロジック設計
トレーリングストップの仕組みがわかったところで、
ここからは「どうやってPythonで自動化するのか?」を一緒に考えていきましょう!
いきなりコードを書くのではなく、設計図を頭の中で描くことが成功のカギです!
🔄 トレーリングストップの基本的な流れ
まずは全体の流れをざっくりつかみましょう。やることはこの4つだけです。
- 現在のビットコイン価格をAPIで取得する
- 価格が過去の「最高値」を上回っていれば更新
- 「最高値 − トレール幅」を超えて価格が下がったら売却
- 上の処理を一定間隔でループして実行
🧠 ロジックを図にするとこんな感じ!
[現在価格] → [高値更新?] → Yes → 高値を更新
↓ No
[現在価格 < 高値 − トレール幅] → Yes → 売却!
↓ No
→ 次のチェックへ
Pythonで書く場合も、このロジックをそのままプログラムに落とし込んでいく形になります。
💡 使う主な関数と処理の役割
| 関数名 | やること |
|---|---|
get_current_price() | CoincheckのAPIを使って現在の価格を取得する |
update_high_price() | 高値を更新して記録する |
check_trailing_stop() | 売却条件を満たしたか確認する |
execute_sell_order() | 売却APIを叩いて注文を出す |
⏱ ループ処理で価格を監視し続ける!
このロジックは1回で終わりではなく、たとえば5秒ごとに繰り返すことでリアルタイムに監視します。
import time
while True:
# 価格取得 → 判定 → 売却判断
time.sleep(5) # 5秒ごとにチェック
📦 トレール幅の考え方
「どれだけ下がったら売却するか」を決めるのがトレール幅です。
- 値幅で指定:例)30,000円
- 率で指定:例)5%(この場合は価格に応じて変化)

初心者には、まずは**固定の金額(円単位)**で試すのがおすすめです!
4. 実装例|シンプルなトレーリングストップBotを作ってみよう
ここでは、実際にPythonを使ってトレーリングストップBotを作ってみましょう!
CoincheckのAPIを活用して、高値を追いかけて自動売却する簡単なコードを紹介します。
🧰 使用ライブラリと準備
まずは使うライブラリをインポートします。requestsでAPI通信を行います。
import requests
import time
続いて、CoincheckのAPIから現在の価格を取得する関数を定義しましょう。
🔍 現在価格の取得
def get_current_price():
url = "https://coincheck.com/api/ticker"
response = requests.get(url)
data = response.json()
return float(data["last"]) # 最終取引価格
この関数を呼び出せば、最新のビットコイン価格を取得できます。
📈 トレーリングストップBotの本体
次に、実際のロジックを組み込みます。
今回は「高値 − トレール幅(例:30,000円)」を下回ったら売却するシンプルなBotです。
def trailing_stop_bot(trail_amount=30000):
high_price = 0
while True:
try:
current_price = get_current_price()
print(f"現在価格: {current_price:.0f}円")
if current_price > high_price:
high_price = current_price
print(f"📈 高値を更新: {high_price:.0f}円")
trigger_price = high_price - trail_amount
if current_price < trigger_price:
print(f"🚨 売却トリガーを下回りました!")
print(f"🔔 {current_price:.0f}円 < トリガー価格: {trigger_price:.0f}円")
execute_sell_order() # 売却処理(後述)
break # 一度売却したら終了
time.sleep(5) # 5秒ごとにチェック
except Exception as e:
print(f"⚠ エラーが発生しました: {e}")
time.sleep(10)
💸 売却APIを叩く処理(ダミー)
本番ではCoincheckのプライベートAPIを使って実際に売却しますが、今回は簡易的なダミー関数を使います。
def execute_sell_order():
print("✅ 売却処理を実行しました(※ここは実際にはAPIを使います)")
※実際に売買したい場合は、Coincheckの公式APIドキュメントを参考に、秘密鍵を用いた認証とPOSTリクエストを実装してください。
▶ 実行!
最後に関数を呼び出して実行します。
trailing_stop_bot(trail_amount=30000)
これで、30,000円下がったら売るトレーリングストップBotが完成です!
✅ 実行例(出力)
現在価格: 4600000円
📈 高値を更新: 4600000円
現在価格: 4620000円
📈 高値を更新: 4620000円
現在価格: 4589000円
🚨 売却トリガーを下回りました!
🔔 4589000円 < トリガー価格: 4590000円
✅ 売却処理を実行しました(※ここは実際にはAPIを使います)
5. 安全性の確保と注意点
トレーリングストップBotが完成したら、すぐに実戦投入したくなる気持ち、よ〜くわかります。
でも、ちょっと待ってください!
自動で売買が走るコードは、下手をすると意図しない取引で損失を出してしまうこともあります。
そこでここでは、安全に運用するためのポイントをしっかり押さえておきましょう。
🧪 テスト環境で十分に検証しよう
まずはいきなり本番で使わないことが大前提です。
- 最初は
execute_sell_order()をダミーのprint()だけにしておく - 仮想環境(venvなど)で管理して、誤作動時のリスクを下げる
- ログをファイル出力して、挙動を後から確認できるようにする
with open("log.txt", "a") as f:
f.write(f"{datetime.now()} - 現在価格: {current_price}\n")
🔐 APIキーの安全な管理
CoincheckのプライベートAPIを使う場合、APIキーとシークレットキーが必要です。
これらは「あなたの口座にアクセスできる鍵」と同じです。
✅ 安全に管理する方法の例:
.envファイルに保存し、dotenvで読み込む- ソースコードに絶対にベタ書きしない
- Gitにアップしないように
.gitignoreに.envを追加する
# .env ファイル
API_KEY=xxxxxxxx
API_SECRET=yyyyyyyy
🚨 想定外の売却を防ぐには?
- 価格取得に失敗した場合は売却しない
- 売却後はループを止める or 一時停止
- 価格の異常変動時(±20%など)には警告を出す
if abs(current_price - high_price) > 1000000:
print("⚠ 急激な価格変動を検知!処理を中断します。")
break
🔔 通知機能を入れるとさらに安心
売却が実行されたときに、自分に通知が来ると安心です。
- Slack API
- LINE Notify
- Gmail自動送信(参考記事はこちら)
これらと組み合わせれば「売ったかどうか不安…」という状態を防げます。
👥 もし複数Botを運用するなら?
複数通貨や複数戦略を同時に動かす場合は、以下の点に注意:
- 高値管理用の変数は通貨ごとに分ける
- 売却済みかどうかのフラグを設定する
- ログや通知は通貨名や戦略名をつけてわかりやすくする
6. まとめ|トレーリングストップで利益を守ろう
おつかれさまでした!
ここまでで、Pythonを使ったトレーリングストップBotの作り方を一通り学んできました。
今回のBotを動かすことで、
「上昇トレンドを逃さず、下落したら自動で売却して利益を守る」というトレードが可能になります。
💡トレーリングストップのメリットをおさらい!
- ✅ 高値を自動で追いかけるので、利確のタイミングを逃しにくい
- ✅ 感情に左右されず、ロジカルに売買できる
- ✅ 24時間ノンストップで監視&対応してくれる
- ✅ Pythonで自作できるので、取引所に機能がなくてもOK!
🔄 今後の応用例もいろいろ!
トレーリングストップはシンプルな仕組みですが、応用すればどんどん進化させられます。
- 📊 上昇トレンド検出+トレーリング開始
- 🔄 利確後に自動で次のトレードに備えるループBot
- 📈 複数通貨に対応したマルチBot
- 📤 売買履歴をCSVやスプレッドシートに記録
など、自分の投資スタイルにあわせて自由にカスタマイズできるのがPythonの強みです。
🚀 小さな自動化から、大きな自由へ!
自動売買というと難しそうに聞こえるかもしれませんが、
「毎日チャートを見て疲れてしまう…」という方にこそ、こうした賢い自動ロジックは役立ちます。
今回のBotはあくまで基本形。
ぜひあなたのアイデアでアレンジして、自分だけのトレードスタイルを作ってみてくださいね!
よくある質問(Q&A)
- Qトレーリングストップのトレール幅はどのくらいが適切ですか?
- A
相場のボラティリティによって異なりますが、最初は「直近1日の変動幅の半分〜3分の1」程度を目安にしましょう。たとえば、1日で5万円動いたなら1.5〜2万円ほどが参考値です。
- QCoincheck以外の取引所でも使えますか?
- A
はい、基本的にAPIで価格取得と売買ができれば、他の取引所(例:bitFlyer、Binanceなど)でも同様の仕組みで動かせます。ただし、API仕様が異なるため一部コードは書き換えが必要です。
- Q複数のBotを同時に動かすことはできますか?
- A
可能です。ただし、高値や注文状態を個別に管理する必要があります。通貨ごとに別スレッドや別プロセスで動かすと安定します。







※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。
※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。