【自動売買Bot作成5】買ったポジションを確認する

前回買った通貨の情報を確認します。

取引所はbitFlyerで、通貨はイーサリアムとします。
背景や前提については、以下のカテゴリーページをご覧ください。

目次

注意事項

  • 本サイトで掲載されている評価や感想等は、あくまでサイト運営者の主観であり、広告主に保証されたものではありません。
  • 暗号資産(仮想通貨)取引は、元本を保証するものでなく、価格変動により損失が生じるリスクがあります。
    お取引される際には、取引内容をよく理解し、ご自身の判断で行ってください。

ファイルを作成する

買ったポジション情報を確認するためのコードを書くファイルを作成してください。
私は「get_executions.py」としました。

サンプルコード

import credential
import requests
import time
import hmac
import hashlib
import urllib.parse

url = 'https://api.bitflyer.com'
product_code = 'ETH_JPY'

path_getexecutions = '/v1/me/getexecutions'
method = 'GET'
param_getexecutions = {
    'product_code': product_code,
    'child_order_acceptance_id': 'JRF20220306-072234-084896'
}
param_getexecutions_encode = urllib.parse.urlencode(param_getexecutions)

access_key = credential.api_key
access_timestamp = str(int(time.time()))
text = access_timestamp + method + path_getexecutions + '?' + param_getexecutions_encode
access_sign = hmac.new(
    bytearray(credential.api_secret.encode('utf-8')),
    text.encode('utf-8'),
    digestmod = hashlib.sha256
).hexdigest()

headers = {
    'ACCESS-KEY': access_key,
    'ACCESS-TIMESTAMP': access_timestamp,
    'ACCESS-SIGN': access_sign,
    'Content-Type': 'application/json'
}

result_getexecutions = requests.get(
    url + path_getexecutions,
    params = param_getexecutions,
    headers = headers
).json()

print(result_getexecutions)

実行結果

ちょっとブログでは改行されないと見にくかったので、サンプルコードからは少し変えて表示させています。

[
  {
    "id": 2314423788,
    "side": "BUY",
    "price": 304325.0,
    "size": 0.01,
    "exec_date": "2022-03-06T07:22:34.767",
    "child_order_id": "JOR20220306-072234-462247H",
    "commission": 1.5e-05,
    "child_order_acceptance_id": "JRF20220306-072234-084896"
  }
]

成行で買った時のレートや日付が表示されます。

commission」というのは、どうやら手数料のようですね。
「1.5e-05」は「0.000015」で(bitFlyer Lightningの取引履歴で分かる)、単位はETHのようなので、

304,325 × 0.000015 = 4.56(円)

ということですかね。
こうして見ると、安くはない気がする。笑

説明

意外と買った時のコードとそこまで変わらないので、かいつまんで説明します。

モジュールインポート

import urllib.parse

まぁ後で説明しますが、必要なのです。

変数設定1

path_getexecutions = '/v1/me/getexecutions'
method = 'GET'
param_getexecutions = {
    'product_code': product_code,
    'child_order_acceptance_id': 'JRF20220306-072234-084896'
}
param_getexecutions_encode = urllib.parse.urlencode(param_getexecutions)

公式ドキュメントの「約定の一覧を取得」するAPIを使用します。

公式APIドキュメントの「約定の一覧を取得」箇所

paramの「child_order_acceptance_id」には、前回買った際の出力結果に表示されたIDを入力してください
これを指定しなくても実行できますが、その場合は一覧が出力されるはずです。

17行目のencodeのやつは、GETの場合のPrivate APIの認証でパラメータ形式にする必要があるため変換していますが、また下で説明します。

変数設定2

text = access_timestamp + method + path_getexecutions + '?' + param_getexecutions_encode

このtextですが、POSTの場合は以下のような内容が入ります。

1647076938POST/v1/me/sendchildorder{“product_code”: “ETH_JPY”, “child_order_type”: “MARKET”, “side”: “BUY”, “size”: 0.01}

これがGETだと以下のような内容にする必要があります。

1647099476GET/v1/me/getexecutions?product_code=ETH_JPY&child_order_acceptance_id=JRF20220306-072234-084896

この形式にするためにインポートしたり、encodeしたりが必要でした。

他は省略

まぁここまで試してきた方は、もうわかるかと思います。
不明点あればご質問いただければ回答します。

最後に

定期的にレートを取得して、このポジションと比較し、自分が設定した利益になったら売る、ということを自動でやれば、それはもうBotと言えるのではないでしょうか。
ということで次回からは、Botとして動かすために必要なことをやっていこうと思います。

本シリーズの一覧ページは以下にまとめています。

それでは。

  • URLをコピーしました!

コメント

コメントする

目次