実装したインジケータのテスト <株入門>

予定したインジケータは実装できました。

この章の最後に、テストについて言及があります。
が、、
ダウンロードしたコードの方にはテストコードがありません。
 
まとりあえず、坂本タクマ先生の言及について、確認して行きましょう。

半年分くらいのデータを使う。
予めExcelでインジケータの計算結果を出して置く。
Excelの結果と、実装したインジケータの結果をテストコードを書いて比較する。
実際にデータをダウンロードするところから、テストしている。
小数点以下の比較では、二桁程度で丸めている。
 
ということなのですが、ワタクシは異論があります。
まだ、単体テストですから、
各インジケータのロジックが正しいかどうかの確認だけでいいはず。
少量のデータで、
予想通りの結果が返るかどうか、それだけ確認すればいいじゃん。
結合テスト的な動作確認はこの段階じゃなくていいんじゃないの。

私なら、以下の方針に従い、単体テストを行う。
少量のデータでダミーのStockをテストコード上に作る。ダウンロードしない。
インジケータの各実装クラスにダミーのストックを与えて生成し、
calculate_indicatorメソッドを直接呼んで結果をチェック。
:price_atの指定があるときは4種類チェック。
データにnilが入ってる場合もチェック。

で大体、こんな感じ。
# coding: Windows-31J

require “./lib/base”
require “./lib/stock”

dummyS = Stock.new(9999,”T”,1)
dummyS.add_price(“2001-01-01”, 1, 9, 1, 2, 9999)
dummyS.add_price(“2001-01-02”, 1, 8, 4, 5, 9999)
dummyS.add_price(“2001-01-03”, 1, 2, 1, 2, 9999)
dummyS.add_price(“2001-01-04”, 1, 4, 4, 4, 9999)
dummyS.add_price(“2001-01-05”, 1, 1, 1, 1, 9999)
dummyS.add_price(“2001-01-06”, nil, nil,nil, nil, 9999)
dummyS.add_price(“2001-01-07”, 1, 5, 3, 5, 9999)
dummyS.add_price(“2001-01-07”, 1, 5, 3, 5, 9999)
dummyS.add_price(“2001-01-07”, 1, 5, 3, 5, 9999)

result = MovingAverage.new(dummyS, :span=>3, :price_at=>:open).calculate_indicator()

puts “:span=>3, :price_at=>:open”
puts result
expect=[nil,nil,1.0, 1.0, 1.0, nil, nil, nil, 1.0]
puts result == expect

#以下、高値、安値、終値も同様にテストする。
Excelでチャント計算して、小数点二桁で丸めて残りもやってみよう。
面倒くさいので、残りは明日やろう。
 
 
※どうでもいいが、やっぱコンストラクタで引数渡してるのは、邪魔だと思う。 
result = MovingAverage.calculate_indicator(dummyS, :span=>3, :price_at=>:open)
の方が、生成するムダがないと思う。
メソッド一つだけで、引数保持しておく意味ないもの。
 
 
質問コーナー、お問い合わせは、sanpome.net@gmail.com まで。

  

カテゴリー: 株式投資, 株式投資入門はじめました2016.05 パーマリンク

コメントを残す

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


*