夜は短し歩けよ乙女 (角川文庫)
¥297 (2025-06-24 23:22 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)AERA6/23号
¥620 (2025-06-24 23:22 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)ICZI HDMI-VGA(D-SUB)変換アダプタ hdmi 変換 アダプタ ケーブル ブラック 1080p対応 HDMI オス to VGA メスアダプタノートPC、パソコン、デスクトップ、モニター、ディスプレイ、プロジェクター、HDTV、Chromebook、Raspberry Pi、Rokuなどに適用
¥999 (2025-06-24 23:22 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)はじめに
楽に小銭を設ける手段として、仮想通貨の自動トレードを思いつきました。面倒なことはすべてPCに任せて、不労所得を得ようという算段です。
仮想通貨市場は24時間365日動き続けており、手動での取引には限界があります。そこで注目されているのが、プログラムを使った自動取引です。今回から数回に分けて、Python用の仮想通貨取引ライブラリ「CCXT」を使った取引の基本から応用までを解説していきます。
この第1回では、CCXTの基本概念から環境構築、そして実際に市場データを取得するところまでを詳しく説明します。プログラミング初心者の方でも理解できるよう、丁寧に進めていきますので、ぜひ最後までお付き合いください。
CCXTとは?
CCXTの概要
CCXT(CryptoCurrency eXchange Trading Library)は、100以上の仮想通貨取引所に統一されたインターフェースでアクセスできるオープンソースライブラリです。2017年に開発が開始され、現在では世界中の開発者に利用されています。
なぜCCXTを選ぶのか?
1. 統一されたAPI
各取引所は独自のAPIを提供していますが、CCXTを使うことで同じコードで複数の取引所にアクセスできます。例えば、Binanceで動くコードを少しの修正でKrakenでも動かすことが可能です。
2. 豊富な対応取引所
主要な取引所のほとんどをサポートしており、日本の取引所(bitFlyer、Coincheck等)も含まれています。
3. アクティブな開発
定期的にアップデートされており、新しい取引所への対応や機能追加が継続的に行われています。
4. 多言語対応
PythonだけでなくJavaScript(Node.js)、PHP等でも利用可能です。
対応している主要取引所
- 海外取引所: Binance、Coinbase Pro、Kraken、Bitfinex、Huobi、OKX等
- 国内取引所: bitFlyer、Coincheck、Zaif等
環境セットアップ
必要な環境
CCXTを使用するために以下の環境を準備しましょう:
- Python 3.7以上 (推奨:Python 3.8以上)
- pip (Pythonパッケージ管理ツール)
- テキストエディタまたはIDE (Visual Studio Code、PyCharm等)
Pythonのインストール確認
まず、Pythonがインストールされているか確認します:
python --version
# または
python3 --version
Python 3.7以上が表示されればOKです。インストールされていない場合は、Pythonの環境構築を参照してください。
CCXTのインストール
以下のコマンドでCCXTと関連ライブラリをインストールします:
pip install ccxt pandas numpy requests
各ライブラリの役割:
- ccxt: 仮想通貨取引所API用ライブラリ
- pandas: データ分析・操作用ライブラリ
- numpy: 数値計算用ライブラリ
- requests: HTTP通信用ライブラリ
インストール確認
Pythonインタープリターまたはスクリプトで以下を実行し、エラーが出なければインストール成功です:
import ccxt
print(f"CCXT version: {ccxt.__version__}")
print(f"対応取引所数: {len(ccxt.exchanges)}")
取引所のAPI設定
APIキーの取得手順(CoinCheck例)
-
CoinCheckアカウントの作成
- CoinCheck公式サイトでアカウントを作成
- 本人確認(KYC)を完了
-
APIキーの生成
- ログイン後、「設定」→「API設定」へ移動
- 「新しいAPIキーを追加」をクリック
- API名を入力(例:「Python Trading Bot」)
- 二段階認証を完了してAPIキーとシークレットキーを取得
-
権限設定
- 読み取り専用: 市場データ・残高確認のみ
- 取引権限: 実際の売買が可能
- 出金権限: 資金の移動が可能(通常は無効にしておく)
セキュリティの重要性
絶対に守るべきルール:
- APIキーとシークレットキーは絶対に他人に教えない
- GitHubなどの公開リポジトリにコミットしない
- 不要な権限は付与しない
- IP制限を設定する(可能な場合)
推奨される管理方法:
# 環境変数を使用(推奨)
import os
api_key = os.getenv('COINCHECK_API_KEY')
secret_key = os.getenv('COINCHECK_SECRET_KEY')
# または設定ファイルを使用
# config.pyファイルを作成し、.gitignoreに追加
基本的な使い方
取引所への接続
まずは取引所のインスタンスを作成します:
import ccxt
# 公開データのみアクセス(APIキー不要)
exchange = ccxt.coincheck()
# APIキーを使用する場合
exchange = ccxt.coincheck({
'apiKey': 'your_api_key_here',
'secret': 'your_secret_key_here',
'enableRateLimit': True, # API制限を自動で処理
})
重要なオプション:
- enableRateLimit: API呼び出し制限を自動で処理
- sandbox: CoinCheckはサンドボックス環境を提供していないため、テストは少額で行うことを推奨
対応取引所の確認
CCXTがサポートしている取引所を確認:
import ccxt
# 全取引所のリストを表示
print("対応取引所一覧:")
for exchange_id in ccxt.exchanges:
print(f"- {exchange_id}")
# 特定の取引所が対応しているかチェック
if 'coincheck' in ccxt.exchanges:
print("CoinCheckは対応しています")
市場データの取得
ティッカー情報の取得
ティッカーは、各通貨ペアの現在価格や24時間の取引量などの基本情報です:
import ccxt
exchange = ccxt.coincheck()
# 単一の通貨ペアのティッカー取得
ticker = exchange.fetch_ticker('BTC/JPY')
print(f"BTC/JPY 現在価格: ¥{ticker['last']:,.0f}")
print(f"24時間変動: {ticker['percentage']:.2f}%")
print(f"24時間出来高: {ticker['baseVolume']:.2f} BTC")
# 複数の通貨ペアのティッカー取得
tickers = exchange.fetch_tickers(['BTC/JPY', 'ETH/JPY', 'XRP/JPY'])
for symbol, ticker in tickers.items():
print(f"{symbol}: ¥{ticker['last']:,.0f}")
ティッカーデータの主要な項目:
- last: 最新取引価格
- bid: 買い注文の最高価格
- ask: 売り注文の最低価格
- high: 24時間最高価格
- low: 24時間最低価格
- volume: 24時間取引量
板情報(オーダーブック)の取得
オーダーブックは、現在の買い注文と売り注文の状況を表示します:
# 板情報の取得
orderbook = exchange.fetch_order_book('BTC/JPY')
print("=== 売り注文(Ask)===")
for i, (price, amount) in enumerate(orderbook['asks'][:5]):
print(f"¥{price:,.0f} - {amount:.6f} BTC")
print("\n=== 買い注文(Bid)===")
for i, (price, amount) in enumerate(orderbook['bids'][:5]):
print(f"¥{price:,.0f} - {amount:.6f} BTC")
# スプレッド(売りと買いの価格差)
spread = orderbook['asks'][0][0] - orderbook['bids'][0][0]
print(f"\nスプレッド: ¥{spread:,.0f}")
過去の価格データ(ローソク足)の取得
テクニカル分析に必要な過去の価格データを取得:
import pandas as pd
from datetime import datetime, timedelta
# 1時間足のデータを取得(最新100本)
# 注意: CoinCheckは過去データのAPIが制限されている場合があります
try:
ohlcv = exchange.fetch_ohlcv('BTC/JPY', '1h', limit=100)
# データをDataFrameに変換
df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
df['datetime'] = pd.to_datetime(df['timestamp'], unit='ms')
print(df.tail()) # 最新5件を表示
# 移動平均の計算例
df['ma20'] = df['close'].rolling(window=20).mean()
print(f"最新の20期間移動平均: ¥{df['ma20'].iloc[-1]:,.0f}")
except Exception as e:
print(f"過去データの取得エラー: {e}")
print("CoinCheckでは過去データのAPIが制限されている場合があります")
利用可能な時間足(取引所により異なります):
- ‘1m’, ‘5m’, ’15m’, ’30m’ (分足)
- ‘1h’, ‘4h’, ’12h’ (時間足)
- ‘1d’, ‘1w’, ‘1M’ (日足、週足、月足)
利用可能な市場の確認
取引可能な通貨ペアを確認:
# 市場情報の取得
markets = exchange.load_markets()
# 日本円建ての取引ペアを表示
jpy_markets = [symbol for symbol in markets.keys() if '/JPY' in symbol]
print("日本円建ての取引ペア:")
for symbol in jpy_markets:
market = markets[symbol]
min_amount = market['limits']['amount']['min']
if min_amount:
print(f"- {symbol}: 最小注文量 {min_amount}")
else:
print(f"- {symbol}: 最小注文量 未設定")
エラーハンドリングの基本
APIを使用する際は、ネットワークエラーや取引所のメンテナンスなどでエラーが発生する可能性があります:
import ccxt
exchange = ccxt.coincheck()
try:
ticker = exchange.fetch_ticker('BTC/JPY')
print(f"取得成功: ¥{ticker['last']:,.0f}")
except ccxt.NetworkError as e:
print(f"ネットワークエラー: {e}")
except ccxt.ExchangeError as e:
print(f"取引所エラー: {e}")
except Exception as e:
print(f"その他のエラー: {e}")
まとめ
第1回では、CCXTライブラリの基本概念から環境構築、市場データの取得方法までを解説しました。重要なポイントを振り返ってみましょう:
- CCXTの利点: 統一されたインターフェースで複数の取引所にアクセス可能
- セキュリティ: APIキーの管理は最重要事項
- 基本操作: ティッカー、板情報、過去データの取得方法
- エラー処理: 安定したプログラムのための例外処理
次回(第2回)では、実際の残高確認や注文の実行について詳しく解説します。また、基本的な取引戦略の実装にも挑戦する予定です。
注意事項: この記事は投資助言ではありません。実際の取引を行う際は、十分なリスク管理を行い、自己責任で実施してください。CoinCheckではサンドボックス環境が提供されていないため、実際の取引APIを使用する際は少額でのテストから始めることを強く推奨します。
関連記事: