各インジケータの実装クラスのテスト <株入門>


それでは、Excelも使って計算しつつ、 
各インジケータの実装クラスをテストしてみます。
 
 
とりあえず、コードそのままコピペします。
Unitテスト用のモジュール何か利用した方が行儀良いと思われますが、
judgeという関数一つ用意するだけで、ここでは充分です。
実行してみて、全てOKならテスト合格です。

あと、nilが挟まったデータでも問題ないかどうかも確認したのですが、
AverageTrueRangeだけはNilがあるとエラーになります。
引数のパターンは最低限の考慮しました。
ロジックは正常に動作すること、確認しました。

# coding: Windows-31J

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

def judge(indicator, expect, msg, r=0)
    puts msg

    result = indicator.calculate_indicator()
    puts result

    result = result.map{|item| item.nil? ? nil : item.round(r)} if r>0

    if result == expect then
        puts “OK!”
    else
        raise “NG! ” + msg
    end
end

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

judge(
    MovingAverage.new(dummyS, :span=>3, :price_at=>:open),
    [nil,nil,5.00, 5.00, 5.00, nil, nil, nil, 5.00],
    ”MovingAverage :span=>3, :price_at=>:open”,
    2
)
judge(
    MovingAverage.new(dummyS, :span=>3),
    [nil,nil,3.00, 3.67, 2.33, nil, nil, nil, 3.33],
    ”MovingAverage :span=>3″,
    2
)

judge(
    HighLow.new(dummyS, :span=>3, :price_at=>:close, :high_low=>:high),
    [nil,nil,5, 5, 4, nil, nil, nil, 5],
    ”HighLow :span=>3, :price_at=>:close, :high_low=>:high”
)
judge(
    HighLow.new(dummyS, :span=>3, :price_at=>:high, :high_low=>:low),
    [nil,nil,2, 2, 2, nil, nil, nil, 2],
    ”HighLow :span=>3, :price_at=>:high, :high_low=>:low”
)
judge(
    HighLow.new(dummyS, :span=>3, :high_low=>:low),
    [nil,nil,1, 1, 1, nil, nil, nil, 1],
    ”HighLow :span=>3, :high_low=>:low”
)

judge(
Estrangement.new(dummyS, :span=>3),
[nil,nil,-33.33, 9.09, -57.14, nil, nil, nil, 20.00],
“Estrangement :span=>3″,
2
)

judge(
    MovingAverageDirection.new(dummyS, :span=>3),
    [nil,nil,nil, :up, :down, nil, nil, nil, nil],
    ”MovingAverageDirection :span=>3″
)

#Nilがあるとエラー
dummyS = Stock.new(9999,”T”,1)
dummyS.add_price(“2001-01-01”, 5, 9, 1, 2, 9999)
dummyS.add_price(“2001-01-02”, 5, 8, 4, 5, 9999)
dummyS.add_price(“2001-01-03”, 5, 2, 1, 2, 9999)
dummyS.add_price(“2001-01-04”, 5, 4, 4, 4, 9999)
dummyS.add_price(“2001-01-05”, 5, 5, 5, 1, 9999)
dummyS.add_price(“2001-01-05”, 5, 5, 5, 1, 9999)
dummyS.add_price(“2001-01-07”, 5, 5, 3, 5, 9999)
dummyS.add_price(“2001-01-07”, 5, 2, 1, 1, 9999)
dummyS.add_price(“2001-01-07″, 5, 6, 3, 4, 9999)

judge(
    AverageTrueRange.new(dummyS, :span=>3),
    [nil, nil, nil, 4.00, 2.33, 2.33, 3.00, 4.00, 4.33],
    ”AverageTrueRange :span=>3”,
    2
)

 
 
質問コーナー、お問い合わせは、sanpome.net@gmail.com まで。

  
 

社会・経済ニュース ブログランキングへ

にほんブログ村 海外生活ブログへ
にほんブログ村

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

コメントを残す

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


*