ヾ(´・ω・`)ノ゙

2018年02月05日

memo2


2018_02_03_2051.png
前回の記事でこんなふうに
bitflyerの板の差分データって
同じ価格のものが複数くることがあるんだなぁ
ってことを書きましたが、
そのときは同じ価格のものが時系列に並んでいると思ったのですが、
たぶんこれもぼくの勘違い(´・ω・`;)


よく見たらこんな感じで入ってきてるのもあったので
同じ価格のものが並んでるわけではなく、リストの中身が時系列になってるんだと思います
(これは実データでなく例えです)
2018_02_05_2056.png

まぁ今のところぼくは、板の差分を受信して、最終的に現在の板がどうなってるのかわかればよいので
この例だと
{100: 0, 150: 2, 200: 2}
というデータが手に入ればいいわけですが、それならこれでよかったわけですな(´・ω・`)
2018_02_05_2057.png
最初血迷っていきなりnumpy配列に加工して重複価格の最後の要素だけを選択するには、、、
とか考えてごちゃごちゃ書いてたんですけど我に返って気付いた(^ω^;)
(numpy配列から取得するならソートして(安定ソートじゃないといかんからこの場合kind='mergesort')
価格のdiffを取ってとやれば選択できるけどそんな必要なかった(^q^)
少ない要素数ならnumpy使わないほうが速いですしね)

かばんちゃんの「書く前に、考えてみてはどうでしょうか」という声が聞こえる
2018_02_05_2058.png


なんとなく確認のためにコマンドプロンプトに出力
けど、板のデータって目で見ててもピコピコ動きすぎて合ってるのかよくわからないやヾ(´・ω・`)ノ゙
2018_02_05_2059.png

一応引数にグルーピングしたい金額を入れればまとめるようにもしてみた
2018_02_05_2060.png

最初printしただけだと画面がちらついて気になったけど
ctypes.windll.kernel32.SetConsoleCursorPosition
でカーソル位置を戻してからprintするようにしたらちらつきがなくなった
わーい!ヾ(´・ω・`)ノ゙

板をnumpy配列で持つのと、辞書で持つのを比較してみたら、
扱う範囲をmid_priceの上下数万円ぶんとかにすると辞書のほうがだいぶ軽いかんじでした
板情報を時系列で持っておいていろいろしたりする場合は
numpy配列のほうが扱いやすいのは間違いないと思いますが、
複雑なことをせず直近価格の限られた上下幅を扱うだけの場合なら辞書のほうが楽そうです

コマンドプロンプトに板を表示してみるサンプルコードです(numpy使うのと辞書だけのが入ってます)
(一定間隔でsnapshotを取りにいく処理は入れてませんので気をつけてください)

( ´・ω・`)つ https://ux.getuploader.com/hage_fx/download/46

pyqtのQTableWidgetなんかを使うと
板ダブルクリックで注文して、
ドラッグ&ドロップで指値動かしたり板に当てたりするようなこともできそうなので
株の取引ツールぽくトレードできそうですな(´・ω・`)
(いやまぁ、毎回板にのったかどうかapiで確認して、
みたいなことしてたら株のスキャほどサクサクはできないと思うけど)


posted by hage at 15:36| python | このブログの読者になる | 更新情報をチェックする