DEVGRU

プログラミングと競馬予想について書きます

Zaif の streaming API がまた止まっている の続きの続き

team-6.hatenablog.jp

の続き。

先ほどZaifの画面を見たら(MONAがまた下がっていてうんざりしつつ)、板情報が更新されるようになっていた。 一体何だったんだろう...

マンガでわかるビットコインと仮想通貨

マンガでわかるビットコインと仮想通貨

世界は逆転する! 仮想通貨サービス・ICOで世界を変える

世界は逆転する! 仮想通貨サービス・ICOで世界を変える

仮想通貨財テク術 爆上げ最前線 (パワームック)

仮想通貨財テク術 爆上げ最前線 (パワームック)

60分でわかる! 仮想通貨 ビットコイン&ブロックチェーン 最前線

60分でわかる! 仮想通貨 ビットコイン&ブロックチェーン 最前線

Coursera の Machine Learning course を始めた

Coursera という、無償のe-Learningがあり、そこのMachine Learning courseがかなり評判が良いので始めてみた。

www.coursera.org

現在2週目だが、ここまでの感想は以下の通り。

  • コンピュータ・サイエンスを昔やっていた身としては、復習になる部分が多いが、むしろ現役のときよりも分かりやすかったので、もっと早く出会いたかったなあと思った。
  • 当方、英語リスニングだめなので字幕必須だが、読む文にはそれほど苦にならない(ビデオ以外は英語です)ので、まあまあついていけている
  • 日本語字幕が流れるのが早いときがあるが、あんまり気にならない

まだプログラム書くとこまでたどり着いておらず、多変量の線形回帰についてのところまで来ている。 2週目でOctave書くらしいので、今晩中にはOctave書くことになるかと。


機械学習を学んでどうするかといえば、もちろん相場の予測に使う。

最近スキャルピングの本など読んだのだが、抵抗線とかを機械的に引くのはあんまり楽ではなく、 さらにその結果から次のアクションを自動的に判断するところまで作りこむのは、できなくはないが、良い物を作る自信はないし楽しそうでもない。 その他、人力で実施できる解析を機械にさせるのはいささか面倒だ。

それよりも過去の膨大なデータをガシガシ食べさせて、パターンを覚えさせるほうが楽で楽しい。

楽しんで作り、楽して稼ぐ、が一番だ。

仕事ではじめる機械学習

仕事ではじめる機械学習

  • 作者: 有賀康顕,中山心太,西林孝
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2018/01/16
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

Machine Learning実践の極意 機械学習システム構築の勘所をつかむ! impress top gearシリーズ

Machine Learning実践の極意 機械学習システム構築の勘所をつかむ! impress top gearシリーズ

  • 作者: Henrik Brink,Joseph W. Richards,Mark Fetherolf,株式会社クイープ
  • 出版社/メーカー: インプレス
  • 発売日: 2017/11/17
  • メディア: Kindle版
  • この商品を含むブログを見る

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

  • 作者: Andreas C. Muller,Sarah Guido,中田秀基
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2017/05/25
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

Zaif のREST APIエラー時にリトライする

例のZaif だが、拙宅のStreaming APIを403にした件ですでにうんざりだが、 それに加えて混雑のせいでBot のリクエストが通りづらくなっている。

しばらく待ってリクエストする、を繰り返せばいいのだが リトライするべきエラーとそうではないエラー(資産不足とか)を区別する必要がある。

混雑時に発生するエラーのうち、リトライするべきエラーについて解説する。

パターンは大きく分けて2つある。

trade temporarily unavailable.

1つは、HTTPレスポンスのステータスコードは200が返ってくるが、 その内容は以下のようなJSONとなっているもの。

{"success": 0, "error": "trade temporarily unavailable."}

成功時はsuccessが1だが、失敗時はsuccessは0で、errorに理由が書かれている。

この場合は、以下のようなPythonコードで判定できる。

response.json()["success"] != 1 and response.json()["error"] ==  "trade temporarily unavailable."

真なら10秒ぐらい待ってリトライしよう。

502 Bad gateway

もっと重症なのは、HTTPレスポンスのステータスコードが502で返ってくるケース。 技術的には、リバースプロキシとその向こう側とのやり取りで何か起きている状況。

この時、bodyはHTMLを返すので、Pythonのrequestsで.json()なぞ呼び出してJSONとしてパースしようものならJSONDecodeErrorでお陀仏である。

以下で判定する。

response.status_code == 502

その他、504を返した時もあった気がするので、それも判定すると良いかもしれない。


最近のZaifは注文受け付けられない具合が半端じゃないので、API取引は上記のコード必須である。

しかし、最近はブラウザからの通常取引もなかなか通らないのが辛い...

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

Fluent Python ―Pythonicな思考とコーディング手法

Fluent Python ―Pythonicな思考とコーディング手法

  • 作者: Luciano Ramalho,豊沢聡,桑井博之,梶原玲子
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2017/10/07
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

PythonユーザのためのJupyter[実践]入門

PythonユーザのためのJupyter[実践]入門

Effective Python ―Pythonプログラムを改良する59項目

Effective Python ―Pythonプログラムを改良する59項目