ウェルスナビ投資までの準備Home投資Python【再出発】貧乏だし文系だけどpythonで自動売買bot作りたい5日目2020/01/152020/01/13fumitakakubo【再出発】貧乏だし文系だけどpythonで自動売買bot作りたい5日目こんにちは!貧乏文系が、pythonで自動売買botを作る試み5日目。前回は、取得したbitflyerの価格データをpythonで取り扱いやすい形に整形して取得しました。今回は、「取得した価格データに個々にアクセスする」ということをしていきます。取得した価格データに個々にアクセスするまず、振り返りで、前回作ったプログラムを一度動かします。ちなみに少しコーディングを変更しました。得られる結果は変えていません。query).json()print(data)結果このままだと何となく価格が入っているのは分かりますが、情報量が多すぎて何から手をつけていいのかわかりません。これらのデータの中から欲しい情報だけピンポイントで表示させるということをやります。前提として、取得したデータがどんな構造になっているかを書きます。APIから返されたJSONフォーマットのデータをpythonで取り扱いやすいように整形すると辞書型のデータになっています。https://cryptowat.ch/pricing’}}という内容になっているのですが、日本語を交えてどんな要素で構成されているか書き換えると、{‘result’:{‘期間‘:[[UNIX時間,始値,高値,安値,終値,BTCベースの出来高,JPYベースの出来高],[前と同じ形式],...[前と同じ形式]]},’allowance’:{その他情報}}というデータ構造になっています。言葉で補足すると、大きく2つのキー項目”result”と”allowance”があります。その”result”に紐づいたデータの中に、”期間”(例示では86400)をキー項目にしてローソク足データが格納されている形です。キー項目が複数ある複雑な辞書型をしています。このうち、実際に必要なのは[UNIX時間,始値,高値,安値,終値,BTCベースの出来高,JPYベースの出来高]で表されるローソク足データなので、これを抽出します。基本的な抽出方法として、多重構造になっている場合は外側から絞りをかけていきます。辞書型の場合はキー項目が何かを明示してあげる必要があります。順番にやっていきます。大外にあるキー”result”、”allowance”のうち、ローソク足データはキー”result”側に紐づいているので、最初の絞りとして”result”というキーを指定します。最初に載せたコードの中で、取得したデータは変数dataに格納されているので、絞り方はdata[“result”]という指定の仕方になります。コードで示すとこんな感じ。query).json()print(data[“result”])すると得られる結果は以下。111701534565.93756]]}まずは、キー”allowance”とそれに紐づいたデータが表示されなくなりました。次に、一段階目の絞りをかけたデータの中で、一番大外のキーにあたる”期間”で絞りをかけます。私が載せているコードは、最初からクエリ情報として日足「86400」を指定しているので、一種類の期間データしかありませんが、これを指定していなければ分足や週足等様々な期間が取得されるので、キーでどの期間なのかを明示する必要があるのです。コードで示すとこんな感じ。query).json()print(data[“result”][“86400”])すると得られる結果は以下。111701534565.93756]]ようやく同じ形式のローソク足データがカンマで区切られている状態で表示できるようになりました。以降は、キー項目がないので、[]で囲まれたローソク足データを一つの塊とみなして、「何個目のローソク足データの塊を見たいのか」というのを順番で指定していきます。例として先頭のローソク足だけを抽出します。コードで示すとこんな感じ。辞書型やリスト型でデータの位置を指定するときは、0から数えるのに注意。0が一番先頭を指します。print(data[“result”][“86400”][0])すると得られる結果は以下。176398140000.0]とうとう先頭のローソク足データだけを抽出できました。後は同じ要領で、ローソク足の中の順番を指定してあげれば、終値や始値など、好きなデータだけを表示することが出来ます。一応最後までやると、[UNIX時間,始値,高値,安値,終値,BTCベースの出来高,JPYベースの出来高]の順番に並んでいるローソク足の中で、2番目に位置している始値だけを取り出します。数え方は0からスタートするので、始値だけを取りたければ[1]と指定することになります。コードで示すとこんな感じ。query).json()print(data[“result”][“86400”][0][1])すると得られる結果は以下。個々のローソク足データの中の何番目の要素かを指定して、任意の順番に位置する要素を抽出という順番でデータを抽出しました。こんな風に指定してあげると、複雑な構造をしていた価格データから個々のデータを取り出してあげることができます。個々のデータを取り扱えるようにはなりましたが、このままではUNIX時間が何時を指しているのか分からないし、ローソク足データのうちどれが始値でどれが終値なのかが直感的に理解できません。次回は人間が直感で理解しやすい形にデータを変形したいと思います。差し支えなければ、twitterをフォローして頂けますと嬉しいです。@fumi51それでは~。0送るRecommendおすすめ記事2018.05.20貧乏だし文系だけどpythonで自動売買bot作りたい10日目2018.10.09【2018年9月】総資産状況(-1.69%)2018.11.25【2018年10月&11月】総資産状況(%)2020.01.28【再出発】貧乏だし文系だけどpythonで自動売買bot作りたい7日目fumitakakubo社畜を辞めたいと希う29歳の社畜です。実践も兼ねて、資産形成方法のご紹介を致します。前回は、「取得した価格データに個々にアクセスする」をして、ごちゃついたデータの中の各要素を取り出す方法を確認しました。コメントをキャンセルメールアドレスが公開されることはありません。付いている欄は必須項目ですCommentName*Email*Website次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。@fumi51社畜を辞めたいと希う29歳の社畜です。目標は3年後の32歳までに3000万円貯めて脱サラすること!実践も兼ねて、資産形成方法のご紹介を致します。Sentry%d人のブロガーが「いいね」をつけました。