チャート本体はこちら
https://www.ultra-noob.com/bitflyer/
bitFlyerから送られてくるデータをもとに板のデプスチャート、遅延、ティッカー、スプレッドを可視化する。
完全にクライアントサイド(ブラウザの中のスクリプト)で動作するのでこちらのサーバーへの負担は殆どないため完全に無料で利用できる。
キー名に入れた「価格」を引き算していたがオブジェクトのキー名は文字列である事を考慮しておらず計算結果が異常値になっていた。
めったに無いことだがキー名を数値として扱う場合は変換が必要。今回はparseInt()
にて解決。
厳密にはわからないが、通信ラグ等の兼ね合いで指値が存在しなくなったレコードにデータが残る事がある模様。これによってスプレッドが異常な値になる事があり現状回避不能。
現在はその対策としてスナップショット受信時に板をリセットすることとしたが更にスプレッドがマイナスになったタイミングでもリセットすることにした。
様子を見てこのあたりはコードを調整する必要があるかもしれない。
これはJavaScriptを書く人には覚えておいたほうが良い情報。
連想配列はソートしても for ... in
で想定した順番で取得できない。
今まで昇順で取得出来ていたので問題ないのではと思っていたが、逆に降順にしてみても昇順で出力されるという検証が出たので急遽修正。ソートは関係ない模様。
Depthチャートに関しては価格から直接要素番号を計算しておりソートは不要であったため最小値のコードだけ実装してキー名ソートは廃止した。
詳しくはMDNを参照。次は引用
注:
for...in
はインデックスの順序が重要となる配列
の繰り返しには使うべきではありません。
スプレッドがマイナスになるということは確実にどこか情報をロストしていると言うことだと思うが、原因不明。
もしくはそもそもスプレッドはマイナスになる可能性があるのだろうか?