32bitPythonによるPan Active Market Databaseの操作

投稿者: | 2022年7月9日

32bit Python環境の構築

株価分析用のdata sourceとして、Pan Active Market Databaseを利用する。しかしこれを操作するためのActiveX (COM)は32bitにしか対応していない。そこで32bit版のPythonでActiveX(COM)を活用して、Pan Active Market Databaseを操作するscriptを作成する。まずは以下のように32bit python環境を作成する。

  1. Anaconda promptを管理者権限で起動
  2. base環境から環境変数CONDA_SUBDIRを32bitに変更
    • $ set CONDA_SUBDIR=win-32
  3. 環境を確認
    • $ conda info
    • platformがwin-32になっていることを確認
  1. 32bitのPython環境(version 3.9.7)を作成
    • $ conda create -n py32bit python=3.9.7
  2. 作成した環境の有効化
    • $ conda activate py32bit
    • $ python
  1. 64bitの環境に戻す時
    • $ set CONDA_SUBDIR=win-64

pywin32によるPan Active Market Database操作

  1. 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を組み合わせることで、解析用の株価を準備できそうだ。

コメントを残す

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