Wizard In The Market
システムトレードの魔術師

*

まだ Python の datetime で消耗しているの? maya 使おうぜ

公開日: : 最終更新日:2016/12/24 Python , ,

15988833812_4d0e1d04e9_b

Photo by Daniel Mennerich


この記事は Python Advent Calendar 2016 の 24日目の記事です。

当初は SCOOP についての記事を書きたくて、ひたすら SSH 使った分散処理の実行を試していたのですが、一向に動きそうな気配がなく間に合いそうにないため、最近見つけたライブラリの紹介にさせてもらいます。SCOOPでSSH使って動かせた人、救いの手を差し伸べていただければ嬉しいです。

Python の Datetime のここがいけてない

datetime と time の親和性が低い

Python の Datetime 型って time との親和性が全然いけてない。Datetime 型から Unixtimpstamp を得たかったら、こんないけてないコードを書かないといけない。

timetupleなんてメソッド、かっこ悪くないですか。しかも、このままだと小数点以下の秒数は省略されてしまうので、d.microsecondを計算に加えなければいけなかったりで、とても不便。その点、RubyのTimeはすごく使いやすいですよね。timeからdatetimeへは datetime.datetime.fromtimestamp を呼べばなんとかなるのですが。

個人的には、timeモジュールとdatetimeモジュールは一本化してほしい、timeモジュールの存在価値はよくわかるので、datetime側ですべてラップして欲しいと思っていました。

パースメソッドがない

いちいち datetime.datetime.strptime メソッドで時間フォーマットを書かないといけない。 dateparser というモジュールもあるが、 datetime とは別モジュールだし、使い勝手がいまいち。

タイムゾーンの処理

タイムゾーンの管理が環境依存なところ。忘れた頃に嵌まります。

Maya を使おう

Maya のここが良い

  • タイムゾーンの管理が優秀
  • ISO 8601 と RFC 2822 の両方の相互切り替えに完全に対応
  • 文字列のパースが素敵
  • Slang的な日時の出力もできる
  • Datetime型への切り替えが容易
  • 1970年からのepoch time を基準に作られているが、1970年以前にも対応済み

個人的な理解では、epoch time で管理してくれていて、Datetime的な出力を容易にしてくれるイメージです。Maya って名前ですが、マヤ暦とはまったく関係がなさそう。

インストール

いつもの pip で入ります。

使い方

strftimeとかは一度datetimeをくぐらせないと使えないです。必要になればdatetimeを呼ぶと良さそうです。

まとめ

maya を使えば、ecpoch time を基準としたタイムゾーンの切り替えにも対応したDatetime型を使えます。これで、Unix Timestamp とかの処理で困ることは減りそうです。Pandas とかでも使えたらいいのになぁ。

にほんブログ村 為替ブログへ 
Fx-Kirin

About Fx-Kirin

2009年10月にFXを開始、翌年2010年5月から脱サラをしてFX業界に専念。 2012年10月頃から本格的に勝ち始め、一月で資産を倍にする、2年半月間負けなし等、安定した収支で2013年11月に生涯FX収支が1億を超える。 投資スタイルはシステムトレード。プログラミングの知識がほぼない状態から、独学で自分がしたいと思うことであればほぼ実現することが可能なレベルまで成長。好きな言語はRuby, Python。必要となればC++からVBA、Pascal等なんでも行う。MT4/MT5のプログラミングも得意。 2011年にはFXで稼いだ資金をもとにシンガポールに移住し、留学も兼ねて起業をチャレンジするほど、ビジネスを興すことに熱意がある。国内の業者を主に使い始めたことから、2012年に帰国。零細株式会社経営中。

Adsense

  • このエントリーをはてなブックマークに追加
  • Pocket
  • 63 follow us in feedly

関連記事

Flast-Sockets + redis-py で簡単 Websocket サーバー実装

参考にしたサイト Using WebSockets on Heroku with Python | Heroku

記事を読む

vim-slime を使って VIM の内容をコンソールに送信

この記事はVim Advent Calendar 2016の20日目の記事です。 選択行の内容をコンソールに送信

記事を読む

話題のクローラー・スクレイピング!PythonならScrapyが超優秀な件

Rubyの読書会に行ったら、Pythonの面白いお話を聞けたというお話です。 Rubyクローラー本の読書会に参

記事を読む

Python での Log 収集

プロジェクトが大きくなるにつれて、プログラムの不備を見つけるのにログの構成、ログデザインを考えることが重要になってく

記事を読む

no image

JAVA の SHA1 Digestの作り方

>>> import base64 >>> import hashlib >>> base64.b64encode(

記事を読む

Pythonで簡単に画像検出でLinux GUI操作自動化ライブラリを作ったよ

[2015/02/07 追記] [bm url="http://fx-kirin.com/python

記事を読む

CPP extension vs Cython vs CPython on calculating the mean of numpy array

I'd like to get any feedback to make cython faster like

記事を読む

Quantopian の pyfolio を単利運用に対応させる。

pyfolio は どんなデータを入れても複利運用として計算してしまうので、人によっては望まない検証方法だったりし

記事を読む

Python x64 & MinGW64 環境の構築

流石に詰まりまくったのでまとめることにする。 MSYS2 をインストール 個人的にこれからメインで使いたいと思っ

記事を読む

PythonでsleepしているThreadを呼び起こすプラクティス

Pythonのsleep中のThreadをWake up PythonのThreadにて、RubyのThr

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Adsense

Python 2, Python 3 で更新したファイルを調べてreloadするパッケージを作った。

pdbでのデバッグにはreload機能がない IPythonには優秀なautorelaod機能

Python での Log 収集

プロジェクトが大きくなるにつれて、プログラムの不備を見つけるのにログの構成、ログデザインを考える

Flast-Sockets + redis-py で簡単 Websocket サーバー実装

参考にしたサイト Using WebSockets on Heroku with Python

Rust で Python の拡張ライブラリ作成 と numpy との性能比較

この記事は Python Advent Calendar 5日目の記事です。遅れてすみません。

システムトレードを始める前に知っておきたかったこと

今日の勉強会で発表してきました。nbviewer に共有しておきます。 システムトレードを始め

→もっと見る

PAGE TOP ↑