仮想通貨アービトラージをPythonでやってみたパート3「新規注文」

パート1では価格取得と描画、パート2ではデータベースの作成までおわりました。

今回は、価格差がしきい値を超えていたらエントリーする新規注文処理を作っていきます。

新規注文用のファイルorder_entry.pyを作成

パート1のmain.pyの中に「価格差がしきい値を超えていたら」printする処理がありました。

エントリーと発動条件は同じです。なので、ここに新規注文処理を追加します。

新規ファイルで「order_entry.py」を新しくつくりましょう。

引数は、symbol,qty,buy_exchange,sell_exchangeです。

とりあえず、bybitで買い、binanceで売るパターンからつくります。

これでガワだけできたのでbybitでエントリーする機能とbinanceでエントリーする機能を作っていきます。

bybit_.pyに新規注文処理を追加する

binance_.pyに新規注文処理を追加する

order_entry.pyで新規注文を呼び出す

これで新規注文部分が完成です。逆サイドも追加しておきます。

main.pyで新規注文を呼び出す

インポート
QTYを追加
order_entry.entry_orderを追加

これで価格差がしきい値を超えたらエントリーされます。

でもこれだけだと、価格差がしきい値を超えたら何回でもエントリーしてしまいます。

これを防ぐために前回データベースを用意したのですね。

データベースからポジション情報を取得してポジションがあったらエントリーはやめる機能を追加

main.pyで条件分岐させるのか、エントリー直前で条件分岐させるのかどっちでも大丈夫です。

今回はorder_entry.pyを変更していきます。

order_entry.pyを修正

データベースをインポートしてcheck_positionという機能を作っていきます。

まずはデータベースのインスタンスをたてます。グローバルスコープでいいかな。

bybitのポジション数を記憶させていきます。

インスタンスを作成

エントリーしたらQTY(注文サイズ)が記憶されているので、これが0ではない場合、またはデータベースに存在しない場合は「None」が入っているのでこれで条件分岐させます。

これでノーポジならエントリーします。

エントリーしたらデータベースへポジション情報を保存します。

これでエントリーが呼ばれたときに

  1. データベースを確認
  2. ノーポジならエントリー、ポジション保有状態なら何もしない
  3. エントリーしたらデータベースの更新

がされます。

order_entry.pyコード全文

これでエントリー処理までが完了です。

次回は決済処理を考えます。

  • -
    コピー

この記事を書いた人

最近のコメント

  1. アバター
  2. アバター
  3. アバター
  4. アバター
  5. アバター

人気記事