金融系ITエンジニアの秘密道具
  • DOWNLOAD
    • フローライト
  • TIPS
    • 仮想通貨取引所bybitとは?
    • bybit自動売買トラブル

Bybit自動売買botプログラミングのトラブルシューティングまとめ

Bybitトラブルシューティング

 

自動売買プログラム開発する方向けに、私が悩んだ点・迷った点をまとめ。

本記事では、私がbot開発して自動売買している仮想通貨デリバティブ取引所「Bybit(バイビット)」のbot開発トラブルシューティングをまとめています。

Bybitは「安定した売買」「100倍レバレッジ」「追証なし」「超強力なボーナス」「資金が無くてもボーナスで体験取引」が魅力で、シンガポールに本拠地を置く世界屈指の取引所ですが、bot開発に必要となるAPIにはクセもあり、開発につまずいている方も多いのではないかと思います。

私が実際に自動売買プログラムを作成するにあたり、悩んだ点・迷った点などを備忘録的にまとめています。

初心者向けの丁寧な説明は記載しておりませんのでご容赦ください。なお、プログラミングをしない方には難しい内容となりますので読まない方が良いかと思います。

 

Bybit(バイビット)自動売買プログラム開発の準備

事前に以下が完了している前提となります。

Bybit(バイビット)に登録

APIキーの発行

公式APIドキュメントの確認

 

Bybitで使えるシストレツール

証拠金4万円から65万円の利益。難しい環境設定なし。Bybit取引所×お手持ちのPCで今すぐ動かせる自動売買トレードbot無料配布しています。

プログラムの詳細・ダウンロードはこちらです。

スイングbot「フローライト」

Bybitへ登録

「100倍レバレッジ」「追証なし」「超強力なボーナス」でレバレッジ規制も取引ストレスもありません。Bybitはこちらから30秒で登録可能です。キャンペーン情報はコチラ。

Bybit公式サイト

 

 

Bybit自動売買botプログラミングのトラブルシューティングまとめ

①APIキーの発行でIPアドレス入力が必須で不便(ホワイトリストを無効にするには?)

API発行①

 

Bybit(バイビット)のAPIは「API管理」のメニューから「新しいキーの作成」のボタンをクリックすると設定画面が表示されます。

Bybit(バイビット)は、API発行時、ホワイトリストのIPアドレスの入力が必須となっています。

これは指定されたサーバ・PCからでのみAPIを実行可能とすることでセキュリティを高める仕組みになっているのですが、テスト的に利用したい場合や固定IPでない環境でシステムを動かしたい場合には不便です。

 

そこでAPIキーを「APIトランザクション」ではなく「サードパーティアプリ紐づけ」とし、「TradingView」用のキーを作成しましょう。

こちらのAPIキーはIPアドレスの入力なしで使用可能ですし、名目的には「TradingView」用となっていますが、pythonなどで作った自作プログラムでも問題なく利用可能です。

API発行②

 

ただし、指定した環境以外からでも実行できてしまいますので、セキュリティの安全性は下がります。APIキーが他人にバレることがないように気を付けましょう。

 

 

②post時に「ret_code:10004 error sign!」のエラーが出る場合

このエラーで真っ先に疑うべきはsignatureが正しく生成されていないケースです。

公式サイトにサンプル結果が掲載されていますので、結果が一致するかどうか確認すると良いでしょう(signatureの生成ロジックが正しく動作しているかの確認)。

 

次に気を付けることは「URLパラメータ部分がa~z順でないとエラーになる」という点です。

非常にハマりやすいポイントなので注意しましょう。

 

例えば、以下のようなコードではエラーとなります(pythonの場合)。

----------------------------------------------

timestamp = int(time.time() * 1000)

url = self.api_endpoint + '/user/leverage/save'

param = {

'api_key':self.token_id,

'symbol':'BTCUSD',

'leverage':leverage,

'timestamp':timestamp

}

param_str = urllib.parse.urlencode(param)

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

param['sign'] = sign

param_str = urllib.parse.urlencode(param)

url = url + '?' + param_str

r = requests.post(url, headers=self.api_headers)

----------------------------------------------

 

以下のようなエラーレスポンスが返ってきます。

{"ret_code":10004,"ret_msg":"error sign!","ext_code":"","result":null,"ext_info":null,"time_now":"1558015469.792535","rate_limit_status":599}

 

これはparamの部分がsymbol→leverageとabc順になっていないためです。以下のように修正する必要があります。

----------------------------------------------

param = {

'api_key':self.token_id,

'leverage':leverage,

'symbol':'BTCUSD',

'timestamp':timestamp

}

----------------------------------------------

 

 

③「ret_code:10002 invalid request, please check your timestamp and recv_window param.」のエラーが出る場合

BybitのAPIはプログラム実行環境のタイムスタンプとBybitのサーバ環境のタイムスタンプが一定以上乖離しているとエラーになる仕組みとなっています。

{'ret_code': 10002, 'ret_msg': 'invalid request, please check your timestamp and recv_window param.', 'ext_code': '', 'result': None, 'ext_info': None, 'time_now': '1562585088.784385'}

 

このエラーとなる乖離幅は「recv_window」のパラメータで指定が可能です。デフォルトでは、送信タイムスタンプとサーバー時間(UTC)の間の時間差が 5000milisecond に設定されています。

サーバ環境では時間がずれることはないと思いますが、ローカルPCなどはズレていることもありますので、その場合はrecv_windowを大きく設定しましょう。

 

さらに実はrecv_windowの値を大きく設定しても問題が解決しないことがあります。時間差機能でエラーにならない詳細条件は以下となっています。

{timestamp < server_time + 1000 && (server_time - timestamp) <= recv_window}

 

つまり・・・

サーバ時間よりtimestampが前の場合は、recv_windowの設定を大きくすれば回避できる

しかし、サーバ時間よりtimestampが後の場合は、1000ミリ秒を越えてしまうとrecv_windowを設定しても不可

ということです。

これもハマりやすいポイントで、「recv_window」が効かない場合は送信時間が遅れているケースを疑いましょう。

 

どうしても動作が安定しない場合は、以下のように「PG的に送信時間を遅らせる」&「recv_windowをそれ以上に大きく設定する」で動かすこともできます。

ただしrecv_windowもセキュリティを高めるための仕組みです。やり過ぎてしまうとセキュリティ上の問題となる可能性があることを考慮して製作する必要があります。注意して設定してください。

----------------------------------------------

timestamp = int(time.time() * 1000) - 100000

url = self.api_endpoint + '/position/list'

param = {

'api_key':self.token_id,

'recv_window':500000,

'timestamp':timestamp

}

----------------------------------------------

 

 

Bybitで使えるシストレツール

証拠金4万円から65万円の利益。難しい環境設定なし。Bybit取引所×お手持ちのPCで今すぐ動かせる自動売買トレードbot無料配布しています。

プログラムの詳細・ダウンロードはこちらです。

スイングbot「フローライト」

Bybitへ登録

「100倍レバレッジ」「追証なし」「超強力なボーナス」でレバレッジ規制も取引ストレスもありません。Bybitはこちらから30秒で登録可能です。

Bybit公式サイト

 

Copyright © itp-meikan.com 2019-2023