今回はPythonによるdatetime、unixtimeの変換方法を見ていきましょう。

Pythonでプログラムを作っているとunixtimeで(パラメータとして)時間指定したい場合があると思います。unixtimeはコンピュータにとってはありがたい形式ですが、人間にとっては可読性が低くて扱いづらい形式です。ですから、これらを変換できる様なコードを予め準備をしておくと便利です。

今回はcryptowatch APIから取得したOHLCデータ等を使用してdatetime⇔unixtimeの活用の仕方を紹介していきたいと思います。
※cryptowatch APIについても理解が深まると思います。

リーベルリーベル

datetime⇔unixtimeの変換は仕事でも個人開発でもよく使いますよ!
使い方をしっかりと覚えておきましょう!

unixtimeは「UTC」「JST」どちらが基準?

さて、具体的な解説に入る前に一つだけ大切なお話をします。

ここを掴んでおかないと、たぶん後で混乱するので、しっかりと覚えておいて下さいね。※といっても簡単な話です。

unixtimeを扱う際に注意が必要なのです。

それは「日本時間(JST)と世界標準時間(UTC)は異なる」という事です。

プログラミングをするために時刻変換を行う場合、ライブラリ関数などではUTC基準で考える事の方が多いので注意しましょう。

Pythonはシステムトレード(プログラムによって自動でトレードする事がある)などでも使われますが、トレーディングの場合も基本的にはUTC基準で考える事が多い様です。しかし、人によっては日本時間で作られたチャートだけを使用する方もいます。特に正解はありませんが、自分のトレード手法がどちらの時間を基準にすべきかをしっかりと考えておく事が大切です。

いずれにしても、扱い方によって基準時間を変える必要があるという事は覚えておいて下さい。

■datetimeとunixtimeを変換できるサイト(日本時間との変換です)

https://url-c.com/tc/
https://tool.konisimple.net/date/unixtime

Pythonコードでdatetime⇔unixtimeを変換する際の構文

さっそく、変換手順を見ていきます。変換方法はたくさんありますが、今回はPythonに標準で付属しているdatetimeというモジュールを活用しましょう。

※qiitaのこちらの記事も参考にさせていただきました。https://qiita.com/mykysyk@github/items/e15d7b2b1a988b8e29d4

datetimeモジュールの読み込み

モジュールの使い方は簡単です。ソースコードの先頭で、

from datetime import datetime

と記載をすればOKです。ちなみに、fromとimportの構文は以下です。

[from モジュール名 import クラス名(または関数名)]

先頭でこの様に記載しておけばdatetimeクラスを使い放題です!

unixtime⇒datetimeへの変換

以下のコードでunixtime⇒datetime(UTC)への変換ができます。すっごく簡単です。

■Pythonコード

datetime.fromtimestamp(1519862400)

■printした場合の実行結果

2018-03-01 00:00:00

datetime⇒unixtimeへの変換

以下のコードでdatetime(UTC)⇒unixtimeへの変換ができます。

datetimeで指定するのは

■Pythonコード

datetime(2018,3,1,0,0).strftime(‘%s’)

■printした場合の実行結果

1519862400

Pythonで行うdatetime⇔unixtime変換例

では実際に、datetime⇔unixtimeの変換を行いましょう。3月1日~10日までのデータを使って、お互いに変換してみました。変換した結果をそのままprintで画面出力しています。

■Pythonコード

■実行結果

Pythonのループで対象期間のデータだけを引っこ抜く

では、少しループ処理なども使って遊んでみましょう。

今回は、「3/11~3/20までのOHLCデータをループで呼び出して出力する」という事をやってみます。cryptowatch APIへのリクエストのパラメータで指定するのは「日足(periods=86400)」で「2018/3/1以降(after=1519862400)」のデータになります。

ではさっそく!

と、

その前に!

まずはちょっとしたテストプログラムを作ってみます。プログラムというのは段階的に作っていった方が力も付くと思います。

Pythonで作るループ処理の練習①

datetime⇒unixtimeで11日~20日のunixtimeを取得してみましょう。for文の使い方等が分からないとう場合には良い練習になると思います。

■Pythonコード

■実行結果

Pythonで作るループ処理の練習②

上記のPythonのコードではdatetime⇒unixtime変換をしながらループ処理を行いました。今度は、cryptowatch APIから取得したデータの中で対象データを抜き出してみましょう。3月11日(unixtime=1520726400)のデータにマッチするOHLCデータを取得してみます。

今回もループ処理を使います。

■Pythonコード

■実行結果

※テスト用なので、for文のrangeを0~50としていますが、普通は50とはせずにデータ件数の最大値を設定します。

PythonのループでOHLCデータから対象データを引っこ抜いてみよう

では実際に作ってみましょう。datetime⇔unixtime変換の勉強にもなりますよ。

おさらいをすると、「cryptowatch APIから取得したデータの中で、3/11~3/20までのOHLCデータだけを抜き出す」という処理を行います。

処理の流れはざっくり以下の通りになります。

1)ライブラリのインポート

2)cryptowatch APIを使ってOHLCデータを取得

3)ループ処理で3月1日~10日までのデータを順番に取得して出力する。

先ほどテストで実施したループ処理を組み合わせれば簡単にできてしまいます。

■Pythonコード

■実行結果

まとめ

今回はdatetime⇔unixtimeの変換について解説をしてきましたが、実際に扱ってみると簡単だったのではないでしょうか?

Pythonで仮想通貨BOTを作成する際、もしくはcryptowatch APIを使用する際には絶対に必要な考え方になりますので、しっかりと理解を深めておいて下さいね。といっても全然簡単ではないですか?

ちなみに、Pythonのプログラムの作り方の全貌についてはこちらの記事を参考にして下さい。

Pythonを基本からしっかりと身に付けたいという場合はプログラミングスクールも検討されると良いと思います。転職サポート等もあるので、心強いです。

Pythonを覚えると本当に色々な事ができる様になります。Pythonで色々なものを作っていきましょう。