【改名】ストックドッグ

金融系の会社で働くSEが株やPython、その他諸々について書いています。システムトレードもやってるよ!

HTTP Private APIを使って資産残高を取得しよう

【開発環境】

認証が必要なHTTP Private APIを使ってみます。

資産残高を取得してみる

コードは以下になります。

特に難しい2つの部分をかいつまんで解説します。

  • #認証情報の作成
  • #ヘッダー情報
#資産残高を取得	
def get_balance_api():

	#API keyとAPI secret
	api_key = "***********************"
	api_secret = b"**************************************"	

	#エンドポイントURL
	endpoint = "https://api.bitflyer.jp"

	#認証情報の作成
	method = "GET"
	path = "/v1/me/getbalance"
	timestamp = str(time.time())

	text = timestamp + method + path

	sign = hmac.new(api_secret, text.encode('utf-8'), hashlib.sha256).hexdigest()


	#ヘッダーの情報
	headers = {
		'ACCESS-KEY': api_key,
		'ACCESS-TIMESTAMP': timestamp,
		'ACCESS-SIGN': sign,
		'Content-Type': 'application/json'
	}

	#リクエストを送って、レスポンスを受け取る
	response = requests.get(endpoint + path, headers=headers)
	print(response)

	response = response.text

	return response

response = get_balance_api()
print(response)

認証情報の作成

method = "GET"
path = "/v1/me/getbalance"
timestamp = str(time.time())

text = timestamp + method + path

sign = hmac.new(api_secret, text.encode('utf-8'), hashlib.sha256).hexdigest()

認証情報は、4つの情報から作成されます。

タイムスタンプ、送信方式(GET・POST)、パス、API Secretです。

そのうち、タイムスタンプ、送信方式(GET・POST)、パスを一つのテキストにします。

できあがったテキストとAPI Secretを使って、ハッシュ化されます。

ハッシュ化しているのが、以下のコード。

sign = hmac.new(api_secret, text.encode('utf-8'), hashlib.sha256).hexdigest()

hmacというハッシュ化アルゴリズムを使っている、程度の認識で大丈夫です。


レスポンスが正しくないとき、レスポンスが404だったりするときは大抵ここの認証の値が間違っています。

1文字違うだけで、ハッシュ化後の文字列は異なり、1文字違えば認証は許可されないのでご注意を。

ヘッダー情報

認証情報は、リクエストのヘッダー情報につけて送ります。

ヘッダーは辞書型でACCESS-KEYとACCESS-TIMESTAMPとACCESS-SIGNとContent-Typeを送ります。

  • ACCESS-KEY : 送り主のアカウントを特定
  • ACCESS-TIMESTAMP : API Secretをハッシュ化するために使用(bitFlyerサーバー側が使用)
  • ACCESS-SIGN : ハッシュ化された認証情報
  • Content-Type : json形式であることを知らせている
#ヘッダーの情報
headers = {
	'ACCESS-KEY': api_key,
	'ACCESS-TIMESTAMP': timestamp,
	'ACCESS-SIGN': sign,
	'Content-Type': 'application/json'
}


これらを組み合わせることで、認証が成功し、無事に資産残高を取得することができます。


次回は、取引のAPIを使って実際にトレードしてみます

システムトレードやろうよ 〜目次〜

www.stockdog.work