Blender2.91、Pythonで日経平均株価のローソク足を3Dにしてみた

PythonをBlenderで実行する時
Blenderをターミナルから起動(print出力を確認するためにターミナルが必要)
/Applications/Blender.app/Contents/MacOS/Blender

そして、BlenderのPythonスクリプトのWindowを表示させて、実行する。実行はアイコンの右三角か、メニュのText>Run Scriptを選ぶとPythonスクリプトが実行される

Blenderのバージョンアップで、Pythonモジュールであるpandas_datareaderが入っていないときは以下のようにpipインストールする
例ターミナルを使用して、Blenderのバージョン2.91のときに、pandas_datareaderをインストールした場合、Blenderのバージョンのディレクトリに移動して実行する。
pip install [module]
以下はターミナル似て、python/binに移動して実行した例である
/Applications/Blender.app/Contents/Resources/2.91/python/bin/pip install pandas_datareader

ターミナルで実行した履歴を記載

内容

2020年12月〜2021年1月のある期間の日経平均株価チャートを自動作成
約1、2週間分程度の株価

3Dローソク足(株に興味のない人はつまらないかも、、、)
BlenderのPythonを使うとこんなこともできるということを実践しただけの紹介動画

>>作成したローソク足の3D オブジェクトの紹介、BlenderのPython実行

ユーチューブ動画

参考サイト

https://qiita.com/kjunichi/items/a36fdc9db3876e068249
https://qiita.com/hibit/items/1ac97c71d5adc5b45f85

ブログに記載したインストール内容はこちら
https://pikucha.sakura.ne.jp/blog/2020/12/27/mac%e7%89%88blender%e3%81%aepython%e3%81%abpip%e3%80%81pandas_datareader%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%97%e3%81%9f%e3%83%a1%e3%83%a2/

#日経平均株価 とは
「東京証券取引所第一部に上場する約2,000銘柄の株式のうち225銘柄を対象」原則「225銘柄の株価の合計 ÷ 225」となる。修正等ある。
https://ja.m.wikipedia.org/wiki/%E6%97%A5%E7%B5%8C%E5%B9%B3%E5%9D%87%E6%A0%AA%E4%BE%A1

#ローソク足とは、
https://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%BC%E3%82%BD%E3%82%AF%E8%B6%B3%E3%83%81%E3%83%A3%E3%83%BC%E3%83%88

「単位期間中に初めに付いた値段を始値(はじめね)、最後に付いた値段を終値(おわりね)、最も高い値段を高値(たかね)、最も安い値段を安値(やすね)」の値をもとにローソクの形状のように表現したもの
ローソク足は江戸時代に出羽国の本間宗久が発案

日経平均株価のデータを取得して、BlenderのPythonを使いローソク足の3D オブジェクトを作成した。

環境:MacOS BigSur

#Blender2.91
Blender用pythonモジュール: #pandas_datareader
準備:Pythonモジュールをインストールする必要がある。
Mac版BlenderのPythonにPip、pandas_datareaderインストールしておく。
・PythonはMacOS BigSur用とBlender用とが存在する。つまり保存場所が異なる。
よってBlenderで使いたいモジュールが必要なときは、個別でインストールが必要。
つまり、MacOSでpandas_datareaderをインストールしても、BlenderのPythonでは
使えない。よって、Blenderの階層にそれぞれのモジュール等をインストールする

目的

:Blender2.91、Pythonスクリプトで日経平均株価データを米ヤフーファイナンスからネット上で取得して、ローソク足として3D(円柱)オブジェクトを作成する。
チャートデータは数日〜1週間程度のデータ

注意事項:

Pythonの文法の説明はほとんどしません。
BlenderのPythonの仕様について投稿者は、よく理解しておらず試行錯誤で作成し、推奨ではないコードの記述や間違いがあります。よって質問等があっても正しく答えられる知識がないため回答できない場合があります。
ご承知おきください。(他の人の回答を期待します。)

・Pythonスクリプトコードの概略説明

米ヤフーファイナンスから日経平均株価のデータを取得
始値、終値、高値、安値データを取得
始値より終値が大きければ陽線(赤)
小さければ陰線(青)とする
始値、終値からローソク本体の大きさ位置を決める
高値、安値からローソクのひげの大きさ位置を決める
直近の日のローソク足だけ横を向いた円錐を配置
直近のローソク足の始値終値を記載
直近の日付を記載
目盛りを配置

^読み方:キャロット

オブジェクトの原点がオブジェクトの中心に配置されていて、オブジェクトの移動やリサイズをする場合は問題は発生しないが、オブジェクトの頂点がオブジェクトの原点(中心点)より離れた位置に配置されていると、
Resizeしたときに、ポイントの縮尺が変わり、想定した位置に配置されない(バグではなく、操作や理解の問題)。
よって、リサイズして、ポイントを移動させたいときは、
オブジェクト自体を移動させてから、リサイズや個別頂点ポイントを移動させたほうが良いと思う。

 

・実行するときの補足説明

Blenderをターミナルから起動(print出力を確認するためにターミナルが必要)
/Applications/Blender.app/Contents/MacOS/Blender

そして、BlenderのPythonスクリプトのWindowを表示させて、実行する。実行はアイコンの右三角か、メニュのText>Run Scriptを選ぶとPythonスクリプトが実行される

Blender2.91のpython場所 –MacOSpythonと異なる場所にある(バージョンが変わる毎にディレクトリが変わる。2.91の部分)
/Applications/Blender.app/Contents/Resources/2.91/python

 

Pythonコード

2021/01/04時点の分、Blenderで実行する。できれば、ターミナルからBlenderを起動してから、Scriptingで使用

修正履歴:2021/01/06、始値終値が重ならないように位置を調整

 

別コード、株価を記載したCSVファイルを読み込んで立体ローソク足にした

米ヤフーファイナンスに接続して当日にデータを取得すると、前日データが欠落するし、データが公開されるまで時間がかかる(20分)ので
CSVで当日データを記載したファイルを読み込んだほうが早いと思ってCSV読み取りでローソク足を立体化するPythonコードを書いた。日経平均株価データのクラスオブジェクト、カプセルデータとして扱う。CSVの場合は、数字が文字列扱いになるので、floatにするなどの型変換が必要だった。
なお、このコードには、別ファイルのBlendファイルからオブジェクト(猫)を読み込むコードを記載してある。
ファイルパスはフルパス。

 

こちらの記事もどうぞ