【初心者向け】Zaif API×Pythonでプチフィンテック17 仮想通貨自動取引botの処理概要

今回からいよいよ、botの作成に入ります。

今回はbotの作成に先立ち、どのような処理を行うbotを作成しようとしているのかを説明します。

<スポンサーリンク>

botの処理概要

作成するbotの処理概要は、第1回目の記事に簡単に記載しました。

ここ数年、「フィンテック(FinTech)」というキーワードが急速に聞かれるようになってきました。 フィンテックとは、金融(Finan...

要するに、取引する通貨ペア、発注を行う価格のレンジ(上限と下限)、発注価格の間隔、発注数量、ポジション毎のリミットを与えると、レンジ内での売買を繰り返すのが、botの基本的な動作です。

これを実現するための方法を具体的に見て行きましょう。

まず、通貨ペアやレンジなどの必要情報を決めることにより、保有するポジションのセットが決まります。

例えば、BTC/JPYを\1,500,000~\2,000,000の価格帯で、\100,000刻みに0.001単位ずつ、そしてリミットを\200,000として注文するとなると、以下6つのポジションを保有することになります。

No. 通貨ペア 発注価格 数量 決済価格
1 BTC/JPY \1,500,000 0.001 \1,700,000
2 BTC/JPY \1,600,000 0.001 \1,800,000
3 BTC/JPY \1,700,000 0.001 \1,900,000
4 BTC/JPY \1,800,000 0.001 \2,000,000
5 BTC/JPY \1,900,000 0.001 \2,100,000
6 BTC/JPY \2,000,000 0.001 \2,200,000

このセット内の各ポジションに対して、注文/約定状態を定期的に確認し、決済されることによりポジションが未発注状態になったら再注文を行うことを繰り返せば、目的を達成することができます。

これを図に示すと、下図のようになります。

各ポジションは対象通貨ペアの価格変動により、未発注⇒約定⇒決済⇒未発注⇒・・・と状態を遷移させていきますが、botはこの状態遷移をモニタリングし、未発注状態のポジションがあれば再発注を行います。

プログラムの大まかな流れ

続いて、このbotの動作を実現するため、プログラムはどのような流れで構成すればよいかを解説します。

流れを簡単に図示すると、以下のようになります。

①前処理

モジュールのインポートやパラメータ設定、関数定義など、処理を開始するために必要な前処理を行います。

②ポジションリストの生成と初期化

指定されたパラメータに基づいて、ポジションリストを生成するとともに、それぞれの状態を「未発注」に初期化します。

なお、プログラムを一度実行し、終了させた後に再実行する場合など、プログラムを実行する時点で未約定の注文データが残存している場合も想定されます。そこで、この初期化の段階で念のために現在の注文情報を取得し、注文データが存在すれば「未発注」ではなく「注文済み」として初期化します。

③メイン処理(ループ)

各ポジションの状態のモニタリングと発注処理を行う、botとしてのメイン処理です。以下の一連の処理を60秒間隔で繰り返し行います。

③-1約定/決済状態の確認(2回目以降のループ処理時のみ)

前回ループを回した時点から各ポジションの約定/決済状態に変化がないか、取引履歴データから確認します。状態に変化があれば、どのような変化があったのかをコンソールに出力するとともに、必要に応じてポジションリストを更新します。

例えば、取引履歴中に買い注文の約定履歴があれば、買い注文が約定するとともに、指定したリミットに応じた売り注文が発注されているはずですので、「買い約定」と「売り発注」という情報を出力します。
また、取引履歴中に売り注文の約定履歴(=決済)があれば、「決済」という情報を出力するとともに、該当するポジションの再発注を行えるよう、ポジションリストを更新します。

③-2発注

ポジションリストの内容を参照し、「未発注」のポジションに対する発注処理を行います。

終わりに

次回よりbotの実装を行っていきますが、それに先立ち、今回はbotの処理概要と作成するプログラムの大まかな流れについて解説しました。

流れはシンプルですが、いざプログラムとして実装しようとすると、それなりに複雑なコードになります。

しかしながらこれまで解説してきた内容が理解できていれば、そこまで難しいものでもありませんので、Pythonのコーディングに自信のない方は、実装に移る前にこれまでの記事にざっと目を通しておくことをお勧めします。

カテゴリ:フィンテック
<スポンサーリンク>

シェアする

フォローする