概要
昨日の内容で、KABU+のCSVをBacktraderで読み込むことができた。
how-to-make-stock-trading-system.dogwood008.com
今回はそのコードを解説していく。
CSVファイルの読み込み
def start(self): (中略) if self.p.headers and self.p.header_names: _csv_reader = csv.reader([self.f.readline()]) self._csv_headers = next(_csv_reader)
元々のコードでは読み込んだヘッダは、どこにも格納せずに捨てていた。一方こちらではそれを self._csv_headers
に格納して、後から再利用できるようにした。
_loadline
メソッド
def _loadline(self, linetokens): (中略) dttxt = self._fetch_value(linetokens, self.DATE) (中略) o = float(self._fetch_value(linetokens, self.OPEN)) h = float(self._fetch_value(linetokens, self.HIGH)) l = float(self._fetch_value(linetokens, self.LOW)) rawc = float(self._fetch_value(linetokens, self.CLOSE))
_fetch_value()
メソッドを定義して、 list
型の linetokens
から、値を取り出すように変更した。 _fetch_value()
メソッドでは、与えられたキー (例: self.DATE
)に対応するインデックス番号をCSVのヘッダと対応させて割り出し、 list
からインデックス番号で値を取り出すようにした。