栗’s diary

Python勉強中。トレードに役立つようなTwitter bot開発中。暗号通貨の自動売買もやってみたい。

現在のbot機能

最終更新:2017年11月28日

我がbot

twitter.com

現在の機能は、

  • 1時間に一回、ドル円日経平均先物を呟く。日経平均先物miniのリアルタイム。細かい話をすれば、現値ではなく板状況からのマイクロプライスを5円刻みに。日本が動いていない時間帯はSGXとCMEを使用。いずれも10分遅れ。)
  • 7:00に米国株価指標を呟く。ツイッターの文字数制限がなければもっと増やしたいんだけど。
  • 前場後場が終わって25分後、国内株価指標を呟く。
  • 6:50にCMEのFF金利先物から利上げ確率を計算して呟く。答え合わせはCountdown to FOMC - CME Groupで。数値合わないことがよくあるが求め方が一通りじゃなかったりするせいかなと諦めてる。(現在停止中)
  • TDnetの開示情報を場中に5分間隔で確認し、その時開示があった場合には若干のフィルターをかけて呟く。GAEだと1分更新まで出来るがほとんどが5分単位で開示されているので。あんまりサイトに負担かけても悪いんで。
  • 日銀ETFの買入結果の更新状況を5分間隔で確認し、当日分の更新があれば呟く。
  • 企業サイトの新着情報を1分間隔で確認し、更新があれば呟く。監視企業数をどんどん増やしていく予定だが、ちょっとエラー処理が面倒なので保留してる。

更新履歴:

2017年11月28日:日銀ETFの購入額をExcelファイルから読み取り呟く

スクレイピング、JavaScriptを乗り越えて

ETF、ETNのインディカティブNAV(iNAV)を取得しようとしました。JPXのサイトから。

www.tse.idmanagedsolutions.com

ETFのデータを取ってくるだけならPythonスクレイピングで有名なBeautiful Soupすら使う必要ありません。pandas.read_html(url)でデータフレームとして取ってこれます。さすがPandas。

しかし、ETNはそうはいきません。「ETN」のボタンを押して表示されるサイトはETFの時のアドレスと同じです。JavaScriptを実行することでサイトの中身が書き換わる形式です。これをされるとBeautiful Soupだけでは対抗できません。

そこで必要になってくるのが、SeleniumChromeの)WebDriver

使い方なんかはググっていくつか見てもらった方が分かりやすいと思うんで割愛。紹介だけ。面倒くさいんで。

とにかくこの装備でETNのiNAVも無事取得できました。

初めて driver.find_element_by_id('xxx').click() を使った記念ブログ。

 

昨年、PyconJPに行った際にもスクレイピングの発表を聞いて、Selenium以外でもJavaScriptと闘えるって事を知ったんですが、今回思ったことはやっぱりググって出てくる情報量が違う。古参強しです。ビギナーな私はとりあえずこれからもSeleniumJavaScriptと闘っていこうと思います。 

www.youtube.com

Excelに楽天RSSでデータを引っ張ってくる時につまずいた事(その1)

株のトレードで楽天RSSを活用してます。

今日、進化させようといじってたら、無駄に悩まされたことがあったので、メモ。

タイトルに(その1)を付けたのは今後も何かしらある気がするので。

 

結果から言うと、楽天RSSのせいではなく、Excelのお節介のせいだったわけです。

楽天RSSのオンラインヘルプを見ながら、Excelに102:最良買気配値2を取得しようとしました。

ヘルプを見ると東電を例にして「RSS|'9501.T'!最良買気配値2」とあります。

思いましたよね。なぜ数字の半角と全角を混ぜた式にしてるんだと。

 

これをコピペでExcelへ。問題なく東電の買い気配の2番目の価格を取得してくれます。

そして、銘柄を別のにするために銘柄コードの部分を変更。例えば5401に。

 

=RSS|'5401.T'!最良買気配値2

エンター

=RSS|'5401.T'!最良買気配値2 (勝手に2を半角に変換)

エラー

やめてー。勝手に自動変換しないでー。

ちなみにこうなると、例えば買を売に変えても数字が自動変換されます。

 

不思議だったのは最良買気配値3だと上手くいったりすることです。わけが分からない。

ぐぐりました。

5chが教えてくれました。

997 :山師さん:2016/11/08(火) 13:53:19.14 id:s5tOF6VP

http://live19.2ch.net/test/read.cgi/stock/1156935353/
過去スレに解決策あったわ。
一度半角で覚えると全角で入れても勝手に半角になるらしい。

 

 

 

そんな過去スレを見てみると、2006年

81 :山師さん:2006/09/09(土) 06:12:27.21 ID:72E1UIKr

 

1.半角に変わる数字を消す。
2.一旦保存して開きなおす。
3.全角で入れなおす。

 

 

言われるままに実行するとあら不思議。

自動変換されなくなりました。

(問題のブックだけでなく、すべてのブックを閉じる必要がありましたが。)

 

あとコピペは上手く行くという事は、外部でコード番号を書き換えても上手く行くかもしれませんね。

もっとスマートな方法があるかもしれませんが、とりあえずこれでOKです。

最後に先に引用した997:山師さんの続きのお言葉。

エクセルって利用者に断りもなしに勝手に余計な事する機能いっぱいあるよな。馬鹿じゃないの?
せめて勝手にやったのなら何処かにおしらせするとかあったらいいのに
ついでに全角にしてる楽天もそうとうな運子だけど。

 

 

GAE Launcherなくなったん?

なくなったみたいで...。Google App EngineGoogle Cloud Platformに吸収されてしばらくしてですかね...。それでもPCに元から入れていたGAE Launcherは使えていたんだけど、Python環境をちょっと整理しようと入れ直したらなくなってしまった。

今はこの記事の様にコマンドラインからDeployとかするみたい。

blog1.erp2py.com

簡単だったのがちょい面倒に。素人は入って来るなってことですかね。この記事参考に入ったけど。明日、修正出来ていることを願って。