32bit Python環境の構築
株価分析用のdata sourceとして、Pan Active Market Databaseを利用する。しかしこれを操作するためのActiveX (COM)は32bitにしか対応していない。そこで32bit版のPythonでActiveX(COM)を活用して、Pan Active Market Databaseを操作するscriptを作成する。まずは以下のように32bit python環境を作成する。
- Anaconda promptを管理者権限で起動
- base環境から環境変数CONDA_SUBDIRを32bitに変更
- $ set CONDA_SUBDIR=win-32
- 環境を確認
- $ conda info
- platformがwin-32になっていることを確認
- 32bitのPython環境(version 3.9.7)を作成
- $ conda create -n py32bit python=3.9.7
- 作成した環境の有効化
- $ conda activate py32bit
- $ python
- 64bitの環境に戻す時
- $ set CONDA_SUBDIR=win-64
pywin32によるPan Active Market Database操作
- pywin32 libraryのinstall
- $ conda install pywin32
- 64bit版をinstallしないように注意
Rubyでのシステム開発の事例だが、Pan Active Market Daabaseに関しては「Rubyではじめるシステムトレード」が詳しい。これのPython/MATLAB版を作るのが当面の目標。
Pythonでpywin32を使ってPan Active Market Databaseを操作するsample code。
"PanActiveMarket.py" import win32com.client calendar = win32com.client.Dispatch("ActiveMarket.Calendar") # calendar classを作成 prices = win32com.client.Dispatch("ActiveMarket.Prices") # prices classを作成 print(calendar.date(0)) # databaseの一番古い日付を出力 print(calendar.dateposition("2022/6/10")) # 2022/6/10の日付位置を取得 prices.read(8604) # 証券コード8604の株価dataを取得 print(prices.open(0)) # 一番古い日付の始値を取得 print(prices.high(0)) # 一番古い日付の高値を取得 print(prices.low(0)) # 一番古い日付の安値を取得 print(prices.close(0)) # 一番古い日付の終値を取得 print(prices.volume(0)) # 一番古い日付の出来高を取得 # 一番古い日付から10日営業日分の終値を取得 for i in range(0,10): print(prices.close(i))
実行結果。これらをclassを組み合わせることで、解析用の株価を準備できそうだ。