1. はじめに|「利確」と「損切り」を自動化する理由
ビットコインのような仮想通貨は、価格の変動がとても大きいのが特徴です。あるときは数分で数万円上がったり下がったりすることも珍しくありません。そんな世界で、手動で「今売るべき? まだ持つべき?」と迷っていると、チャンスを逃したり、大きな損をしてしまうことも…。
そこで登場するのが、**Pythonを使った「利確(りかく)と損切りの自動化」**です!
感情に左右されない「冷静なトレード」
人間はどうしても感情に左右されてしまいます。
「もっと上がるかも…」と欲張って売り時を逃したり、
「下がってるけど、戻るはず!」と信じて損失を広げたり…。
でも、Pythonでルールを決めて自動化すれば、感情抜きのトレードができます。
たとえば、こんな風にルールを決めます:
買った価格から「5%上がったら売る(利確)」
3%下がったら「自動で売って損切り」
このように、自分が決めたルール通りに取引してくれるので、失敗が少なく、安定した運用ができるんです。
スマートな取引は「自動で止める」ことから
利確も損切りも、どちらも「止める」判断です。
「このくらいで利益を取る」「これ以上損はしない」とブレーキをかけることは、取引においてとても大事なこと。
自動売買の中でも、利確・損切りの自動化は、最も効果的で安全な第一歩ともいえるでしょう。
2. 利確・損切りとは?ロジックの基本
仮想通貨の自動売買でとっても大事なのが、「利確(りかく)」と「損切り(そんぎり)」という考え方です。これはカンタンにいうと…
- 利確=「利益が出たところで、ちゃんと利益を確定して売る」
- 損切り=「損が広がる前に、損を最小限で止めるために売る」
どちらも「売るタイミング」の話なのですが、実はこのタイミングが取引の勝敗を分けることが多いんです!
どうやってタイミングを決めるの?【基本ロジック】
自動で売買するには、もちろん**売る条件(ルール)**を決めておく必要があります。
その中でもよく使われるのが、以下の2つの方法です。
✅ 固定価格差で判断する方法
たとえばこんなルールです:
・ビットコインを500万円で買った
・505万円になったら売る(+5万円で利確)
・485万円になったら売る(-15万円で損切り)
これは、何円上がったら/何円下がったら売るかというシンプルな方法です。
✅ パーセンテージで判断する方法
こちらは変動に強い方法で、以下のようなルールになります:
・購入価格の「+5%」で利確
・購入価格の「−3%」で損切り
この方法だと、10万円の買いでも100万円の買いでも、割合で同じルールが適用できるので、柔軟性があります。
利確と損切りはセットで考えるのが基本!
「利確だけ自動にしておけば安心」と思うかもしれませんが、実は損切りのほうが大切です。
なぜかというと、損を小さく抑えることで、資金が残り、次のチャンスに繋げられるからです。
たとえば…
| 取引 | 買値 | 売値 | 結果 |
|---|---|---|---|
| ① | 500万円 | 525万円 | +25万円(利確) |
| ② | 510万円 | 495万円 | -15万円(損切り) |

このように利益と損失をコントロールすれば、トータルでプラスにすることも可能です!
3. Pythonで利確・損切りを自動化するコード解説
ここでは、CoincheckのAPIを使って、Pythonで「利確と損切りのロジック」を自動化する方法を紹介します。
基本の流れはこうです👇
✅ 自動売却ロジックの流れ(全体像)
- 現在のビットコイン価格を取得
- 自分の平均購入価格と比較
- 設定した利確・損切り条件に一致したら、売却注文を出す!
🧩 まずは基本パーツを用意しよう!
API通信にはPythonのrequestsライブラリを使います。
また、APIキーとシークレットは環境変数や設定ファイルで管理しておきましょう。
import requests
import time
import hmac
import hashlib
API_KEY = 'あなたのAPIキー'
API_SECRET = 'あなたのシークレットキー'
BASE_URL = 'https://coincheck.com'
🧮 平均購入価格を取得(シンプル版)
今回はわかりやすくするために、「平均購入価格」を自分で決め打ちで入れてみましょう。
buy_price = 5000000 # 仮に500万円で買ったとする
将来的には、APIで注文履歴を取得して自動計算も可能です。
📈 現在のビットコイン価格を取得する関数
def get_current_price():
res = requests.get(f'{BASE_URL}/api/ticker')
data = res.json()
return float(data['last']) # 最終取引価格
🧠 利確・損切り判定ロジックを作る
def check_trade(price_now, buy_price):
take_profit_rate = 0.05 # +5%で利確
stop_loss_rate = -0.03 # -3%で損切り
change = (price_now - buy_price) / buy_price
if change >= take_profit_rate:
return 'take_profit'
elif change <= stop_loss_rate:
return 'stop_loss'
else:
return None
💰 実際に売却を実行する関数(概要)
import uuid
import json
import datetime
def create_headers(endpoint, body=''):
nonce = str(int(time.time() * 1000))
message = nonce + endpoint + body
signature = hmac.new(
API_SECRET.encode(), message.encode(), hashlib.sha256
).hexdigest()
return {
'ACCESS-KEY': API_KEY,
'ACCESS-NONCE': nonce,
'ACCESS-SIGNATURE': signature,
'Content-Type': 'application/json'
}
def execute_sell_order(rate, amount):
endpoint = '/api/exchange/orders'
url = BASE_URL + endpoint
body = {
'pair': 'btc_jpy',
'order_type': 'sell',
'rate': rate,
'amount': amount
}
body_str = json.dumps(body)
headers = create_headers(endpoint, body_str)
response = requests.post(url, data=body_str, headers=headers)
print(response.json())
⏱️ 定期監視と売却判定のループ
while True:
price_now = get_current_price()
action = check_trade(price_now, buy_price)
print(f"[{datetime.datetime.now()}] 現在価格: {price_now}円")
if action == 'take_profit':
print("✅ 利確条件に到達!売却します。")
execute_sell_order(price_now, 0.01)
break
elif action == 'stop_loss':
print("⚠️ 損切り条件に到達!売却します。")
execute_sell_order(price_now, 0.01)
break
time.sleep(60) # 1分ごとに価格をチェック
💡ポイント解説
- 売却後は
breakしてループ終了(=1回限り) - 取引量
0.01は0.01BTC(例)に設定 rateにprice_nowを使って成行に近い形で売却(簡易処理)
4. 実行時の注意点と改善アイデア
Pythonで利確・損切りを自動化するロジックが完成しても、「そのまま使っていいか?」というと、まだ注意すべきポイントがあります。
ここでは、実際に運用するうえでの重要なポイントや改善アイデアを紹介します。
🔸 ① 本当に「全部売っていい」か?
サンプルコードでは、
execute_sell_order(price_now, 0.01)
のように、0.01BTCを一括売却する処理にしていました。
でも実際には、「全部売るか? 一部だけ売るか?」を選ぶ必要があります。
💡改善アイデア
- 購入時の数量を記録しておき、自分が保有するBTCのうち何%を売るかを設定できるようにする。
- 「1回目の利確では半分だけ売る」「次にもう半分売る」など、段階的な売却も検討する価値あり。
🔸 ② スプレッドや手数料を加味する
仮想通貨の取引には「スプレッド(買値と売値の差)」や「取引手数料」があります。
特にスプレッドが大きいと、**5%上がっても実質利益が少ない…**なんてことも。
💡改善アイデア
- 利確条件を「+7%」などやや高めにしてスプレッドを吸収
- Coincheckの成行注文ではなく、**指値注文(limit)**でスプレッドを抑える工夫もアリ
🔸 ③ 複数のポジションがあるときの対処
1回だけでなく、複数回にわたってBTCを購入していると、購入価格がバラバラになります。
このとき、利確・損切りの判断をどうするかが難しくなります。
💡改善アイデア
- 平均購入価格をリアルタイムで計算するロジックを追加する
- Coincheck APIから購入履歴を取得し、保有中のBTC平均価格を割り出す
🔸 ④ 常に動かしておくにはどうする?
このスクリプトを24時間365日動かし続けるためには、実行環境も工夫が必要です。
💡おすすめの方法
- ご自身のPCで動かすなら:スリープ設定を無効にしておく
- クラウドで動かすなら:VPS(仮想専用サーバー)やGoogle Colab Proを使う

本番で実行する前に、必ずテスト環境で挙動確認をしましょう。
たとえば、APIキーを「読み取り専用」にして、価格だけ取得する動作テストを先に行うと安心です。
5. まとめ|自動売買に「ルール」を組み込もう
仮想通貨の世界では、感情に流されるトレードが失敗の原因になりやすいものです。
「もっと上がるかも」「もう少し待とう」という気持ちが、
せっかくの利益を逃したり、大きな損失につながったりします。
そんなときこそ、Pythonによるルールベースの自動売買が役立ちます!
✅この記事で学んだことをおさらい!
- 利確(利益確定)と損切り(損失回避)はトレードの基本
- 固定額・パーセンテージなどの判断基準を明確に設定
- Pythonで現在価格と買値を比較し、自動で売却APIを実行
- 実運用では、数量管理・スプレッド・注文タイプなどにも注意が必要
🎯 自動売買は「仕組み作り」が9割!
今回のようなロジックを組み込むことで、どんな相場でも冷静に対応できる仕組みが手に入ります。
しかも一度組めば、時間に縛られずに運用が可能になるのも大きな魅力!
まずは少額・テストからスタートして、
少しずつあなたに合った利確・損切りルールを育てていきましょう!
よくある質問(Q&A)
- Q利確と損切りのどちらを優先すべき?
- A
どちらも大切ですが、まずは損切りの自動化から始めると安心して運用できます。損失を早めに止めることで、次のトレード資金を守れます。
- Q自動売買スクリプトはずっとPCで動かしておかないといけませんか?
- A
はい。常時監視するためにはスクリプトを常に動かす環境(VPSやクラウド)が必要です。電源を切ると処理も止まるため注意しましょう。
- Q利確や損切りの条件は途中で変更できますか?
- A
スクリプトを書き換えれば変更可能です。また、設定ファイル(JSONやYAML)を使って、条件を外部から読み込む設計にすれば便利になります。








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