アビトラボットを作ろうと思うのでまずはベースとなるコードをgithubから探します。
今日はこちら。
https://github.com/Roibal/Cryptocurrency-Trading-Bots-Python-Beginner-Advance
chatGPTにソースを読ませて要約
かしこまりました。あなたのBinance裁定取引ボットのコードに関するトレードのロジックを日本語で説明いたします。
概要
提供されたPythonスクリプトは、Binanceの暗号通貨取引所で三角裁定取引を行うために設計されています。このボットは、事前に定義された複数の取引ペアをスキャンし、潜在的な裁定取引の機会を特定します。利益が見込める場合、一連の取引を実行して、3つの通貨間の価格差を利用します。コードの主要な構成要素
インポートと初期設定:必要なモジュールをインポートします(binance.client、time、datetime、mathなど)。
別のBinanceKeysモジュールからAPIキーを使用してBinanceクライアントを初期化します。
メインの実行ループ(run関数):run()関数には無限ループがあり、initialize_arb()関数を連続的に呼び出します。
このループにより、ボットは常に稼働し、裁定取引の機会を探します。
初期化関数(initialize_arb関数):ウェルカムメッセージを表示し、開始時間をログに記録します。
Binanceからシステムステータスと出金履歴を取得し、ログに記録します。
三角裁定取引の可能性を持つ複数の取引ペアのリストを定義します。
ファイル(Portfolio.txt)から現在のポートフォリオをロードします。
各裁定セットの潜在的な利益を計算するループに入ります。
裁定取引の計算関数(arbitrage_bin関数):三角裁定取引の機会を形成する3つのシンボルのリストを受け取ります。
Binanceのオーダーブックから各取引ペアの現在の市場深度を取得します。
三角経路での売買に対する為替レートを計算します。
直接の為替レートと三角経路からの暗黙の為替レートを比較し、裁定取引の機会があるかを判断します。
取引手数料を考慮して純利益を計算します。
取引実行関数(tri_arb_paper関数):計算された為替レートを使用して取引プロセスをシミュレートします。
各取引ステップ後の各通貨の量を計算します。
指定された場合、取引手数料を調整します。
シミュレートされた取引を反映するようにポートフォリオを更新します。
データのログと可視化:ボットは重要なイベントとデータをファイル(CryptoTriArbBot_DataLog.txt)にログ記録します。
viz_arb_data関数(コメントアウトされています)は、Matplotlibを使用して裁定取引データを可視化することを目的としています。
トレードのロジック
ボットが三角裁定取引を識別し実行する方法をステップバイステップで説明します。三角ペアの定義:
ボットは、例えば[‘BNBBTC’, ‘ADABNB’, ‘ADABTC’]のように、三角形を形成する3つの取引ペアのセットを検討します。
この例では:
ペア1: BNBBTC(バイナンスコインからビットコイン)
ペア2: ADABNB(カルダノからバイナンスコイン)
ペア3: ADABTC(カルダノからビットコイン)
為替レートの取得:ボットは、Binanceのオーダーブックから3つのペアそれぞれの最良の買値と売値を取得します。
為替レート1(rate1):最初のペアの買値(BNBをBTCに売る価格)
為替レート2(rate2):2番目のペアの売値を反転して計算(BNBでADAを購入してからBTCへ)
為替レート3(price3):3番目のペアの買値
暗黙の為替レートの計算:price3をprice2で割って暗黙の為替レートを計算します。
これは、BTCからBNB、BNBからADA、そして再びBTCに戻る場合の理論上の為替レートを表します。
裁定取引の機会の識別:ボットはrate1とrate2を比較します。
もしrate1(直接レート)がrate2(暗黙のレート)より小さい場合、裁定取引の機会があります。
潜在的な利益率を計算します:
裁定利益(%)
=
(
rate2
−
rate1
rate2
)
×
100
裁定利益(%)=(
rate2
rate2−rate1
)×100
取引手数料を調整します(Binanceは取引ごとに0.1%を請求):
合計手数料(%)
=
0.1
%
×
3
=
0.3
%
合計手数料(%)=0.1%×3=0.3%
調整後の利益(%)
=
裁定利益(%)
−
合計手数料(%)
調整後の利益(%)=裁定利益(%)−合計手数料(%)
取引のシミュレーション(tri_arb_paper関数):取引1:開始通貨(例:BTC)を使用して、rate1を用いて2番目の通貨(例:BNB)を購入します。
獲得したBNBの量:
量
BNB
=
開始量
BTC
×
rate1
量
BNB
=開始量
BTC
×rate1
手数料を指定された場合、調整します。
取引2:獲得したBNBを使用して、price2を用いて3番目の通貨(例:ADA)を購入します。
獲得したADAの量:
量
ADA
=
量
BNB
price2
量
ADA
=
price2
量
BNB
手数料を指定された場合、調整します。
取引3:獲得したADAをprice3を用いてBTCに売却します。
最終的なBTCの量:
最終量
BTC
=
量
ADA
×
price3
最終量
BTC
=量
ADA
×price3
手数料を指定された場合、調整します。
利益の計算:
BTCでの純利益:
純利益
BTC
=
最終量
BTC
−
開始量
BTC
純利益
BTC
=最終量
BTC
−開始量
BTC
利益率:
利益(%)
=
(
純利益
BTC
開始量
BTC
)
×
100
利益(%)=(
開始量
BTC
純利益
BTC
)×100
実際の取引の実行(オプション):調整後の利益が正であり、real_orderが’Yes’に設定されている場合、ボットはBinanceで実際の注文を行います。
シミュレートされた取引に対応する3つの指値注文を作成して送信します。
Binanceの取引ルール(最小取引サイズなど)に準拠するように数量を調整します。
ポートフォリオの更新:各シミュレートまたは実際の取引後、ボットは新しい残高を反映するようにポートフォリオを更新します。
これらの更新を追跡するためにログに記録します。
ログ記録とデータ保存:ボットは、重要なイベント、計算、取引実行をログファイルに記録します。
これには、為替レート、潜在的な利益、ポートフォリオの変化が含まれます。
シナリオの例
[‘BNBBTC’, ‘ADABNB’, ‘ADABTC’]のペアを使用した仮想的な例を見てみましょう:為替レートの取得:
BNBBTCの買値(rate1):0.010 BTC
ADABNBの売値:0.020 BNB
BNBあたりのADA(price2):1 / 0.020 = 50 ADA/BNB
ADABTCの買値(price3):0.0002 BTC
暗黙の為替レートの計算:rate2(暗黙のレート):price3 / price2 = 0.0002 BTC / 50 = 0.004 BTC
rate1(0.010 BTC)とrate2(0.004 BTC)を比較します。
裁定取引の機会の判断:rate1 > rate2であるため、この場合裁定取引の機会はありません。
裁定取引が存在する場合:もしrate1 < rate2であれば、ボットは取引をシミュレートまたは実行します。
重要な注意点
手数料の考慮:ボットはBinanceの取引手数料を考慮しています。これは、裁定取引のような高頻度取引戦略では重要です。
潜在的な利益から総手数料を差し引いて、取引が価値があるかを判断します。
リスク管理:実際の取引には、スリッページ、注文実行の遅延、市場の変動性などのリスクがあります。
ボットは取引を実行する前にシミュレーションを行い、これらのリスクを軽減します。
コンプライアンス:ボットはBinanceのAPI使用ガイドラインと取引ルールに従います。
最小注文サイズなどの要件を満たすように取引数量を調整します。
結論
ボットは、Binance上で三角形の取引ペアを体系的にスキャンし、裁定取引の機会を見つけて活用します。手数料後の潜在的な利益を計算し、取引をシミュレートすることで、利益の出る機会のみを実行します。コードは、データのログ記録とポートフォリオの追跡を重視しており、パフォーマンスを監視し、情報に基づいた意思決定を行うために不可欠です。
しばらくはchatGPTで聞きまくっていこうと思います。
コメント