昔つくったFX裁定取引自動化に使用したツール郡(のはず)。
仕組みとしては、各FX業社のWEBアプリの通信をmitmproxyでスニッフィングして価格レートを受信し、 業社間で一定の価格差を検知して裁定取引を行う。
mitmproxyをつかって、HTTP ポーリング、PUSH配信、websocketの3パターンでレート受信をしていた(はず)。
python GILの関係上、mitmproxyをシングルプロセスで複数の業社の通信解析はパフォーマンス上困難のため、 業社ごとにブラウザプロセスを起動し、各ブラウザプロセスごとにmitmproxyプロセスを動かす。
mitmproxy経由でプロセス単位で受信した価格レート(や証拠金などのデータ)は、Hubノードプロセスに送り集約する。 裁定タイミング検知や発注は、Hubノード経由で受信した価格レートのその他データを使用して行う。
現在のデータを視認できるようにPyQtを使用した簡易的なGUIアプリケーション(pyapp)がある。
発注はSeleniumによるブラウザ操作で行っていた(はず)。 裁定取引タイミングで発注をしていると取引停止などの措置が取られるので、発注関係のコードは含まれてない。
インストールタイプのトレードプログラムも操作対象に加えるために以下を進めようとしていたが中断。
- ディープラーニングによる画像解析により価格レートその他のデータを取得
(解析のための学習用データの用意がめんどうそうなのでやめた気がする)