こんにちは、はやたす(@hayatasuuu )です。
第11回目の本記事では、前回購入したビットコインを売却していきます。
前回の記事 : #10 Python×ビットコイン自動売買 | Pythonを使ってビットコインを購入しよう!
この記事まで学習すると、Pythonを使ってビットコインの購入だけでなく、売却までできるようになります。
あとは以前に学習した「ビットコインの最新価格を取得するAPI」を使えば、簡易的な自動売買モデルを作成できるはずです。
自動売買で必要な知識はだいぶ揃ってきたので、もう少しだけ基礎学習を頑張っていきましょう!
Pythonを使ってビットコインを売却しよう!
Pythonを使ったビットコインの売却は、購入のとき書いたコードとほとんど変わりません。
なので第10回目で書いていた以下のコードを使っていきましょう。
import hmac
import hashlib
import json
import time
from pprint import pprint
import configparser
import requests
conf = configparser.ConfigParser()
conf.read('config.ini')
ACCESS_KEY = conf['coincheck']['access_key']
SECRET_KEY = conf['coincheck']['secret_key']
BASE_URL = 'https://coincheck.com'
url = BASE_URL + '/api/exchange/orders'
nonce = str(int(time.time()))
params = {
'pair': 'btc_jpy',
'order_type': 'market_buy',
'market_buy_amount': '25500'
}
body = json.dumps(params)
# body = ''
message = nonce + url + body
signature = hmac.new(SECRET_KEY.encode(),
message.encode(),
hashlib.sha256).hexdigest()
headers = {
'ACCESS-KEY': ACCESS_KEY,
'ACCESS-NONCE': nonce,
'ACCESS-SIGNATURE': signature,
'Content-Type': 'application/json'
}
# r = requests.get(url, headers=headers)
r = requests.post(url, headers=headers, data=body)
r = r.json()
pprint(r)
先に結論を言ってしまうと、上記のコードでmarket_buy
になっている部分をmarket_sell
にするだけです。
STEP① : 売却で必要なパラメータの確認
成行の買い(=market_buy
)を注文するときは、以下のパラメータが必要でした。
- pair : 通貨ペア(※必須)
- order_type : 注文方法(※必須)
- market_buy_amount : 使用する日本円の金額(※必須)
- stop_loss_rate : 逆指値レート・ストップロス
それに対して、成行の売り(=market_sell
)を注文するには、以下のパラメータが必要になります。
- pair : 通貨ペア(※必須)
- order_type : 注文方法(※必須)
- amount : 指定した通貨ペアを売却する量(※必須)
- stop_loss_rate : 逆指値レート・ストップロス
成行で買いを入れるときは「日本円」を指定していました。
少しややこしいのですが、売り注文するときは「ビットコインの枚数」を指定する必要があります。
STEP③ : パラメータの設定
というわけで、売り注文するためのパラメータ設定をしていきましょう。
今回はビットコインを全量売却したいと思うので、前回の記事で購入した枚数をそのままammount
に書きます。
僕の場合だと”0.00500736BTC”になっていたので、以下のようにパラメータ設定します。
params = {
'pair': 'btc_jpy',
'order_type': 'market_sell',
'amount': '0.00500736'
}
これで準備が整いました。
STEP④ : POSTメソッドでAPIにアクセス
コードの全体像は以下のとおりです。
import hmac
import hashlib
import json
import time
from pprint import pprint
import configparser
import requests
conf = configparser.ConfigParser()
conf.read('config.ini')
ACCESS_KEY = conf['coincheck']['access_key']
SECRET_KEY = conf['coincheck']['secret_key']
BASE_URL = 'https://coincheck.com'
url = BASE_URL + '/api/exchange/orders'
nonce = str(int(time.time()))
params = {
'pair': 'btc_jpy',
'order_type': 'market_sell',
'amount': '0.00500736'
}
body = json.dumps(params)
# body = ''
message = nonce + url + body
signature = hmac.new(SECRET_KEY.encode(),
message.encode(),
hashlib.sha256).hexdigest()
headers = {
'ACCESS-KEY': ACCESS_KEY,
'ACCESS-NONCE': nonce,
'ACCESS-SIGNATURE': signature,
'Content-Type': 'application/json'
}
# r = requests.get(url, headers=headers)
r = requests.post(url, headers=headers, data=body)
r = r.json()
pprint(r)
上記のコードを実行すると、以下のような出力になります。
{'amount': '0.00500736',
'created_at': '2021-02-16T13:41:58.000Z',
'id': 3127242874,
'market_buy_amount': None,
'order_type': 'market_sell',
'pair': 'btc_jpy',
'rate': None,
'stop_loss_rate': None,
'success': True}
order_type=sell
でamount=0.00500736
なので、指定したとおりの成行注文が入っていそうですね!
念のためTraderViewでも確認してみます。
しっかり売り注文が入っていて、残高がJPY(日本円)だけになっています。
僕は50,000円を入金していたので、445円のプラスになりました!
まとめ : Pythonを使ってビットコインを売却しよう!
というわけで、今回はPythonを使ってビットコインの売却する方法を紹介しました。
ここまで分かれば、あとは売買判定のロジックをPythonで組んであげるだけです。
次回から今まで学習した知識を活用して、自動売買プログラムを組んでいきましょう。
そのために、まずは自動売買で必要になるクラスを作成していきます。
クラスは苦手にしている人が多いですが、知っておくとやはり便利な知識です。
今回のチュートリアルでは積極的にクラスを活用して、読みやすいコードにしていきましょう!