Skip to content

Commit

Permalink
Update ARCHITECTURE_JP.md
Browse files Browse the repository at this point in the history
  • Loading branch information
bitrinjani committed Jan 10, 2018
1 parent 8607329 commit 8d2dc12
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions docs/ARCHITECTURE_JP.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,41 +4,41 @@
## Arbitrager
裁定処理の中心となるコンポーネント。Quote Aggregatorから板情報更新イベントを受信したとき、裁定処理を開始する。Position Service からポジションを取得し、Spread Analyzer, Limit Checkerを通して裁定オープン/クローズを判断する。

📄src/ArbitragerImpl.ts
📄src/Arbitrager.ts

## Broker Adapter
取引所APIの[アダプター](https://ja.wikipedia.org/wiki/Adapter_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3)
BrokerAdapter インターフェイスを実装し、取引所間のAPIの差異を吸収する。他のコンポーネントがどの取引所とやり取りしているか知らなくてすむようにインターフェイスを統一する。
新しい取引所をR2に追加したい場合、このコンポーネントを追加しDIコンテナに登録するだけでよい。

📄src/*/BrokerAdapterImpl.ts
📄src/*/BrokerAdapter.ts

## Broker Adapter Router
複数のBroker Adapterの[ファサード](https://ja.wikipedia.org/wiki/Facade_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3) として動作する。
他コンポーネントからの取引所へのリクエスト(オーダー送信、価格取得、ポジション取得等)を各Broker Adapterにルーティングする。他コンポーネントが全取引所のBroker Adapterの参照を持たずに済むようにするため。

📄src/BrokerAdapterRouterImpl.ts
📄src/BrokerAdapterRouter.ts

## Position Service
定期的にポジション情報を取引所から取得する。取引所APIを直接呼び出すことはなく、Broker Adapter Router経由でリクエストを出す。BTCポジション数だけでなく、各取引所に対し売り買い試行可能か設定値から計算し、その情報を保持する。

📄src/PositionServiceImpl.ts
📄src/PositionService.ts

## Quote Aggregator
定期的に全取引所から板情報を取得し、設定された呼び値幅に集約したサマリ板を生成する。取引所APIを直接呼び出すことはなく、Broker Adapter Router経由でリクエストを出す。板情報更新イベントをArbitragerに通知する。

📄src/QuoteAggregatorImpl.ts
📄src/QuoteAggregator.ts

## Spread Analyzer
Arbitrager からサマリ板情報とポジション情報を受け取り、そのポジション下で最適なビッド/アスクとその期待収益等を計算する。

📄src/SpreadAnalyzerImpl.ts
📄src/SpreadAnalyzer.ts

## Limit Checker
裁定可否の意思決定を行う。各種設定値(ネットエクスポージャ、最小目標収益、デモモード等)を参照の上、オーダーを送信すべきかどうかの解析結果をArbitragerに返す。
各種チェッカーはLimit Checkerインターフェイスを実装し、[Compositeパターン](https://ja.wikipedia.org/wiki/Composite_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3) で集約されたチェッカーを形成している。

📄src/LimitCheckerImpl.ts
📄src/LimitChecker.ts

## Config Store
設定情報の状態管理(現状読み込みのみ)を担当する。ConfigStoreインターフェイスを実装し、ConfigRoot型の設定オブジェクトを保持する。現在の実装はjsonフォーマットのファイルを読み込む。
Expand All @@ -55,7 +55,7 @@ Arbitrager からサマリ板情報とポジション情報を受け取り、そ
## Config Validator
起動時に設定に不正な値(マイナスのミリ秒など)が設定されていないかチェックし、不正な場合は起動させないようにする。

📄ConfigValidatorImpl.ts
📄ConfigValidator.ts

## Logger
ログ出力には[pinojs](https://github.com/pinojs/pino) を利用。
Expand Down

0 comments on commit 8d2dc12

Please sign in to comment.