Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DataStore でのオーダー約定時など変更ストリームの統一性を確認する #193

Open
MtkN1 opened this issue Nov 6, 2022 · 2 comments
Assignees

Comments

@MtkN1
Copy link
Member

MtkN1 commented Nov 6, 2022

概要

例えば現状の bitFlyerDataStore では指値オーダーが約定した際、変更ストリームには operation: delete で「未約定数が 0 にはなっていないレコード」が put される。
これは bitFlyerDataStore 実装で約定イベント時に「該当のレコードを削除する操作」のみを行っているためであり、つまりは「該当のレコードを更新してから削除」を行っていない為である。
多くのストアは実装時に watch 機能はなかったので、削除されるレコードを一旦更新するといった冗長性を持たせてはいなかった。

この仕様では、ユーザーは watch 機能からは削除された約定の最新の状態が取れない。
オーダー情報という 1 件のレコードのデータ遷移としても、未約定数が 0 になってから削除されるのが望ましい。

  • 削除操作が実装されている各ストアについて統一性を確認する
    • 配信回数の多い板情報については、この冗長性を持たせるか検討する
@MtkN1 MtkN1 self-assigned this Nov 6, 2022
@ko0hi
Copy link
Contributor

ko0hi commented Nov 16, 2022

(気付いたので共有します)

binanceの先物ストア(BinanceUSDSMStoreBinanceCOINMStore)も同様に「該当のレコードを削除する操作」のみを行っている状態になっているようです。

https://github.com/MtkN1/pybotters/blob/main/pybotters/models/binance.py#L659

@MtkN1
Copy link
Member Author

MtkN1 commented Nov 16, 2022

コメント追加ありがとうございます!

しかしながらよく考えると、単純に DataStore._delete で「削除対象」ではなく「削除元のインプットレコード」を _put すれば良いだけに思えてきました。

@store.py:L134
-                        self._put("delete", self._data[self._index[keyhash]])
+                        self._put("delete", item)

https://github.com/MtkN1/pybotters/blob/97197aec6870259cada2d0dbb9189fb803583577/pybotters/store.py#L122-L138

...

あぁ、でも _clear したとき (板のスナップを受信したときなど) は削除元もないのでちょっと微妙だなぁ。。
もう少し検討します。

@MtkN1 MtkN1 mentioned this issue Apr 13, 2023
9 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants