PR
どうも、月見(@Suzuka14144156)です。
- ビットコイン自動取引したいけどやり方がわからない
- 簡単な方法で、自動取引したいけど、やり方がわからない
- プログラミングが苦手
ビットコイン自動取引ツールの概要
暗号資産取引所から、APIを使って、データを取得し、注文をします。

ビットコイン自動取引ツールの作成方法 ~準備~
Coincheckの口座開設
今回の記事では、Coincheckの口座開設の必要があります。
もし、口座をお持ちでない方は、口座開設ください。
Pythonの準備
そもそもPythonをインストールできていない方は、以下の記事を参考にしてまずは、インストールください。
Python Anacondaとは?|インストール〜Jupyter Notebookの立ち上げ
ccxtのインストール
- 「検索」から「コマンドプロンプト」起動

コマンドプロンプトにて、以下を入力し、エンターを押す。
pip install ccxt
Successfully installed ccxt-2.1.25 cryptography-38.0.3 setuptools-65.5.1と表示されればインストール成功です。
インスタンス化
取引所に接続して取引を開始するには、ccxt ライブラリから取引所クラスをインスタンス化する必要があります。
import ccxt
print (ccxt.exchanges)
これを実行すると、様々な取引所の名前が表示されるはず。
これができていれば、これまでの環境設定が上手くいっている証拠です。
Coincheckでビットコイン自動取引ツールの作成方法
CoincheckからAPIキーを取得
- 「歯車」のマークをクリック
- 「APIキー」をクリック

- 「新たにAPIキーを追加する」をクリック

- 「全てを選択する」をクリック
とりあえずすべて選択しておきます。

- アクセスキーとシークレットアクセスキーが発行されます

パブリックキーでの情報取得
まずは、市場の情報の取得方法を解説します。
import ccxt
from datetime import datetime
import calendar
cc = ccxt.coincheck()
#マーケット情報
markets = cc.load_markets()
print(markets)
print('-'*100)
#板情報
ticker = cc.fetch_ticker(symbol='BTC/JPY')
print(ticker)
print('-'*100)
#注文量
orderbook = cc.fetchOrderBook(symbol="BTC/JPY")
print(orderbook)
print('-'*100)
#ローソク足
datenow = datetime.utcnow()
unixtime = calendar.timegm(datenow.utctimetuple())
#60分前の情報を取得
minute = 60
since = (unixtime - 60 * minute) * 1000
candles = cc.fetch_ohlcv(symbol='BTC/JPY', # 暗号資産[通貨]
timeframe = '1h', # 時間足('1m', '5m', '1h', '1d')
since=since, # 取得開始時刻(Unix Timeミリ秒)
limit=None, # 取得件数(デフォルト:100、最大:500)
params={} # 各種パラメータ
)
print(candles)
print('-'*100)
#マーケット情報
市場で扱っている銘柄を取得できます。
以下コードを実行して得られるビットコインの情報です。
‘BTC/JPY’: {‘id’: ‘btc_jpy’, ‘symbol’: ‘BTC/JPY’, ‘base’: ‘BTC’, ‘quote’: ‘JPY’, ‘baseId’: ‘btc’, ‘quoteId’: ‘jpy’, ‘active’: None, ‘type’: ‘spot’, ‘linear’: None, ‘inverse’: None, ‘spot’: True, ‘swap’: False, ‘future’: False, ‘option’: False, ‘margin’: False, ‘contract’: False, ‘contractSize’: None, ‘expiry’: None, ‘expiryDatetime’: None, ‘optionType’: None, ‘strike’: None, ‘settle’: None, ‘settleId’: None, ‘precision’: {‘amount’: None, ‘price’: None}, ‘limits’: {‘amount’: {‘min’: None, ‘max’: None}, ‘price’: {‘min’: None, ‘max’: None}, ‘cost’: {‘min’: None, ‘max’: None}, ‘leverage’: {‘min’: None, ‘max’: None}}, ‘info’: None, ‘percentage’: True, ‘tierBased’: False, ‘maker’: 0.0, ‘taker’: 0.0},
#板情報
例では、BTCのいた情報を取得しています。
btcの価格などのいた情報を取得できます。
{‘symbol’: ‘BTC/JPY’, ‘timestamp’: 1667620622000, ‘datetime’: ‘2022-11-05T03:57:02.000Z’, ‘high’: 3147000.0, ‘low’: 3007020.0, ‘bid’: 3142713.0, ‘bidVolume’: None, ‘ask’: 3143399.0, ‘askVolume’: None, ‘vwap’: None, ‘open’: None, ‘close’: 3142710.0, ‘last’: 3142710.0, ‘previousClose’: None, ‘change’: None, ‘percentage’: None, ‘average’: None, ‘baseVolume’: 3685.66160745, ‘quoteVolume’: None, ‘info’: {‘last’: ‘3142710.0’, ‘bid’: ‘3142713.0’, ‘ask’: ‘3143399.0’, ‘high’: ‘3147000.0’, ‘low’: ‘3007020.0’, ‘volume’: ‘3685.66160745’, ‘timestamp’: ‘1667620622’}}
#注文量
以下に示すように注文量を取得できます。
{‘symbol’: ‘BTC/JPY’, ‘bids’: [[3142606.0, 0.02], [3142444.0, 0.06107], ・・・
#ローソク足
- UTC timestamp
- Open(開始値)
- High(最高値)
- Low(最安値)
- Close(終値)
- Volume(出来高)
を以下のように取得できます。
[[1667617200000, 3142082.0, 3143322.0, 3142082.0, 3142644.0, 0.27468778]]

minute = 180に設定して、3h分のローソク足を取得しようとしてもうまく取得できないです。
なので、ローソク足は、binanceを使うなどほかの取引所からとってきた方がよさそう。
プライベートキーでの情報取得と注文方法
プライベートキーを使うときは、以下が必要となります。
- アクセスキーとシークレットアクセスキーをコピーペーストして、貼り付けること
- 貼り付け箇所は、以下のコードの’アクセスキーを入力’と ‘シークレットキーを入力’です
口座残高の取得
import ccxt
from datetime import datetime
import calendar
cc = ccxt.coincheck({
'apiKey': 'アクセスキーを入力',
'secret': 'シークレットキーを入力',
})
balance = cc.fetch_balance()
注文
#注文
order = cc.create_order(
symbol = 'BTC/JPY', #通貨
type = 'limit', #注文方法:market(成行)、limit(指値)
price = 3000000, #指値の場合価格を指定
side = 'buy', #購入(buy) or 売却(sell)
amount = 0.005, #購入数量[BTC]
)
print(order)
注文のキャンセル
#注文した際のIDの入力
order_id = 'idを入力'
cancel_order = cc.cancel_order(
symbol = "BTC/JPY",
id = order_id,)
#出力
print(cancel_order)
注文の確認
注文内容の照会は、下記のように通貨レートを引数で渡すことで取得できます。
open_order = cc.fetch_open_orders(symbol = 'BTC/JPY')
print(open_order)
約定の確認
約定後の取引内容の取得は、通貨レートを引数で渡して下記のように実行します。
trades = cc.fetch_my_trades(symbol = 'BTC/JPY')
print(trades)
まとめ
Coincheckでビットコイン自動取引ツールの作成方法について解説しました。
Pythonでcctxというライブライを使う方法が様々な取引所に対応できてオススメです。
今回の記事は、以上です。
最後までお読みいただきありがとうございました。




コメント
私はccxtを2018年ごろから使っていますが、そのころから成行買いができません(指値買い、指値売り、成行売りはできる)そこでgithubでこのことを報告したのですが、相手にされませんでした。
月見様は成行買いできますか?
取引所にも依存します。私は、Bitbankで実装しましたが、そちらは大丈夫でした。