#11 Python×ビットコイン自動売買 | Pythonを使ってビットコインを売却しよう!

  • URLをコピーしました!

こんにちは、はやたす(@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=sellamount=0.00500736なので、指定したとおりの成行注文が入っていそうですね!

念のためTraderViewでも確認してみます。

sell-bitcoin-using-api1

しっかり売り注文が入っていて、残高がJPY(日本円)だけになっています。

僕は50,000円を入金していたので、445円のプラスになりました!

まとめ : Pythonを使ってビットコインを売却しよう!

というわけで、今回はPythonを使ってビットコインの売却する方法を紹介しました。

ここまで分かれば、あとは売買判定のロジックをPythonで組んであげるだけです。

次回から今まで学習した知識を活用して、自動売買プログラムを組んでいきましょう。

そのために、まずは自動売買で必要になるクラスを作成していきます。

クラスは苦手にしている人が多いですが、知っておくとやはり便利な知識です。

今回のチュートリアルでは積極的にクラスを活用して、読みやすいコードにしていきましょう!

あわせて読みたい
#12 Python×ビットコイン自動売買 | クラスを作成してコードを読みやすくしよう! こんにちは、はやたす(@hayatasuuu )です。 第12回目の本記事では、コードを読みやすくするためにクラスを作成していきます。 前回の記事 : #11 Python×ビットコイン自...
SNSに投稿して読み返す
  • URLをコピーしました!
  • URLをコピーしました!
目次