2015年05月01日
Rubyではじめるシステムトレード4
「Rubyではじめるシステムトレード」の勉強を再開している。データー取得方法はいろいろありそうなので、先にシミュレーションのスクリプトの方の解析を進める。テストはLinuxのVPS上で行う。とにかく正常に動かせるところをまずは目指す。
本に書いてあるとおり、スクリプト"trade_check.rb"の動作チェックを行う。実行すると以下のように出力される。
$ ruby ./check/trade_check.rb
8604
2011/11/14
251
true
false
false
241
241
10
1
2
true
2011/11/15
400
1.593625498007968
0.4
これは正常に動いていることを確認。
次はスクリプト"array_check.rb"の動作チェック。コマンドラインから打ち込んでみると、
$ ruby ./check/array_check.rb
1127
112.7
[nil, nil, nil, 105.75, 109.75, 116.25, 118.75, 119.75, 119.5, 116.25]
[nil, nil, 111, 115, 116, 123, 123, 123, 121, 119]
[nil, nil, 97, 97, 111, 115, 116, 119, 115, 110]
[nil, nil, 104.0, 106.0, 113.5, 119.0, 119.5, 121.0, 118.0, 114.5]
[nil, -3, 14, 4, 1, 7, -2, -2, -4, -5]
[nil, nil, nil, 5.0, 6.333333333333333, 4.0, 2.0, 1.0, -2.6666666666666665, -3.6666666666666665]
[nil, nil, nil, 105.75, 109.85, 115.11, 117.466, 118.0796, 116.84776, 114.108656]
となりこれも正常に動いている。
次はIndicator関係のクラスの動作チェック。スクリプト"indicator_check.rb"を実行してみると、
$ ruby ./check/indicator_check.rb
nil
nil
3
5
8
4
3
5
3
5
8
4
[nil, nil, 3]
[3, 5, 8]
と出力され、これも問題なさそう。
続けてTickモジュールの動作チェック用スクリプト"tick_check.rb"を実行してみると、
$ ruby ./check/tick_check.rb
1
1
1
5
5
10
10
50
99
3000
3005
100
3005
3010
100
99
3005
3000
101
103
3000
3005
3005
99
97
3000
2999
2999
2999
と出力され、これも問題なし。
さらに売買ルールに関するスクリプト"rule_check.rb"の動作チェック。
$ ruby ./check/rule_check.rb
#
nil
nil
#
100
105
100
95
95
105
:long_only
:short_only
:no_entry
:long_and_short
となり、これも問題なし。
さらに売買ルールのスクリプト"estrangement_entry_check.rb"も実行してみると、
$ ruby ./check/estrangement_entry_check.rb
/system_trading/tradeSimulation_ruby/lib/text_to_stock.rb:41:in `[]': no implicit conversion from nil to integer (TypeError)
from /system_trading/tradeSimulation_ruby/lib/text_to_stock.rb:41:in `market'
from /system_trading/tradeSimulation_ruby/lib/text_to_stock.rb:22:in `generate_stock'
from ./check/estrangement_entry_check.rb:7:in `'
エラーがでる。これはおかしいようだ。
そしてシステムトレード用クラスの動作チェックスクリプト"trading_system_check.rb"を実行してみると、
$ ruby ./check/trading_system_check.rb
/system_trading/tradeSimulation_ruby/lib/text_to_stock.rb:41:in `[]': no implicit conversion from nil to integer (TypeError)
from /system_trading/tradeSimulation_ruby/lib/text_to_stock.rb:41:in `market'
from /system_trading/tradeSimulation_ruby/lib/text_to_stock.rb:22:in `generate_stock'
from ./check/trading_system_check.rb:19:in `simulate'
from ./check/trading_system_check.rb:46:in `'
同じエラーがでる。
結果を出力するためのクラスの動作チェックスクリプト"record_check.rb"を実行してみると、
$ ruby ./check/recorder_check.rb
�L�^�t�H���_ result/test ���łɑ����܂��B�㏑�����܂����H y/n
y
�㏑�����܂�
/system_trading/tradeSimulation_ruby/lib/text_to_stock.rb:41:in `[]': no implicit conversion from nil to integer (TypeError)
from /system_trading/tradeSimulation_ruby/lib/text_to_stock.rb:41:in `market'
from /system_trading/tradeSimulation_ruby/lib/text_to_stock.rb:22:in `generate_stock'
from ./check/recorder_check.rb:18:in `simulate'
from ./check/recorder_check.rb:49:in `block in'
from ./check/recorder_check.rb:48:in `map'
from ./check/recorder_check.rb:48:in `'
何やら文字化けをするようだが、同じエラーが出力される。
そして最後にシミュレーションの動作チェックスクリプト"simulation_check.rb"を実行すると、
$ ruby ./check/simulation_check.rb
�L�^�t�H���_ result/estrangement/test_simulation ���łɑ����܂��B�㏑�����܂����H y/n
y
�㏑�����܂�
/system_trading/tradeSimulation_ruby/lib/text_to_stock.rb:41:in `[]': no implicit conversion from nil to integer (TypeError)
from /system_trading/tradeSimulation_ruby/lib/text_to_stock.rb:41:in `market'
from /system_trading/tradeSimulation_ruby/lib/text_to_stock.rb:22:in `generate_stock'
from /system_trading/tradeSimulation_ruby/lib/simulation.rb:24:in `simulate_a_stock'
from ./check/simulation_check.rb:25:in `'
同じエラーが出て終了。
とりあえず問題はtext_to_stock.rbにあり、エラーは”`[]': no implicit conversion from nil to integer ”ということだ。
課題をまとめると、
[課題]
おいおい調べていこう。
本に書いてあるとおり、スクリプト"trade_check.rb"の動作チェックを行う。実行すると以下のように出力される。
$ ruby ./check/trade_check.rb
8604
2011/11/14
251
true
false
false
241
241
10
1
2
true
2011/11/15
400
1.593625498007968
0.4
これは正常に動いていることを確認。
次はスクリプト"array_check.rb"の動作チェック。コマンドラインから打ち込んでみると、
$ ruby ./check/array_check.rb
1127
112.7
[nil, nil, nil, 105.75, 109.75, 116.25, 118.75, 119.75, 119.5, 116.25]
[nil, nil, 111, 115, 116, 123, 123, 123, 121, 119]
[nil, nil, 97, 97, 111, 115, 116, 119, 115, 110]
[nil, nil, 104.0, 106.0, 113.5, 119.0, 119.5, 121.0, 118.0, 114.5]
[nil, -3, 14, 4, 1, 7, -2, -2, -4, -5]
[nil, nil, nil, 5.0, 6.333333333333333, 4.0, 2.0, 1.0, -2.6666666666666665, -3.6666666666666665]
[nil, nil, nil, 105.75, 109.85, 115.11, 117.466, 118.0796, 116.84776, 114.108656]
となりこれも正常に動いている。
次はIndicator関係のクラスの動作チェック。スクリプト"indicator_check.rb"を実行してみると、
$ ruby ./check/indicator_check.rb
nil
nil
3
5
8
4
3
5
3
5
8
4
[nil, nil, 3]
[3, 5, 8]
と出力され、これも問題なさそう。
続けてTickモジュールの動作チェック用スクリプト"tick_check.rb"を実行してみると、
$ ruby ./check/tick_check.rb
1
1
1
5
5
10
10
50
99
3000
3005
100
3005
3010
100
99
3005
3000
101
103
3000
3005
3005
99
97
3000
2999
2999
2999
と出力され、これも問題なし。
さらに売買ルールに関するスクリプト"rule_check.rb"の動作チェック。
$ ruby ./check/rule_check.rb
#
nil
nil
#
100
105
100
95
95
105
:long_only
:short_only
:no_entry
:long_and_short
となり、これも問題なし。
さらに売買ルールのスクリプト"estrangement_entry_check.rb"も実行してみると、
$ ruby ./check/estrangement_entry_check.rb
/system_trading/tradeSimulation_ruby/lib/text_to_stock.rb:41:in `[]': no implicit conversion from nil to integer (TypeError)
from /system_trading/tradeSimulation_ruby/lib/text_to_stock.rb:41:in `market'
from /system_trading/tradeSimulation_ruby/lib/text_to_stock.rb:22:in `generate_stock'
from ./check/estrangement_entry_check.rb:7:in `
エラーがでる。これはおかしいようだ。
そしてシステムトレード用クラスの動作チェックスクリプト"trading_system_check.rb"を実行してみると、
$ ruby ./check/trading_system_check.rb
/system_trading/tradeSimulation_ruby/lib/text_to_stock.rb:41:in `[]': no implicit conversion from nil to integer (TypeError)
from /system_trading/tradeSimulation_ruby/lib/text_to_stock.rb:41:in `market'
from /system_trading/tradeSimulation_ruby/lib/text_to_stock.rb:22:in `generate_stock'
from ./check/trading_system_check.rb:19:in `simulate'
from ./check/trading_system_check.rb:46:in `
同じエラーがでる。
結果を出力するためのクラスの動作チェックスクリプト"record_check.rb"を実行してみると、
$ ruby ./check/recorder_check.rb
�L�^�t�H���_ result/test ���łɑ����܂��B�㏑�����܂����H y/n
y
�㏑�����܂�
/system_trading/tradeSimulation_ruby/lib/text_to_stock.rb:41:in `[]': no implicit conversion from nil to integer (TypeError)
from /system_trading/tradeSimulation_ruby/lib/text_to_stock.rb:41:in `market'
from /system_trading/tradeSimulation_ruby/lib/text_to_stock.rb:22:in `generate_stock'
from ./check/recorder_check.rb:18:in `simulate'
from ./check/recorder_check.rb:49:in `block in
from ./check/recorder_check.rb:48:in `map'
from ./check/recorder_check.rb:48:in `
何やら文字化けをするようだが、同じエラーが出力される。
そして最後にシミュレーションの動作チェックスクリプト"simulation_check.rb"を実行すると、
$ ruby ./check/simulation_check.rb
�L�^�t�H���_ result/estrangement/test_simulation ���łɑ����܂��B�㏑�����܂����H y/n
y
�㏑�����܂�
/system_trading/tradeSimulation_ruby/lib/text_to_stock.rb:41:in `[]': no implicit conversion from nil to integer (TypeError)
from /system_trading/tradeSimulation_ruby/lib/text_to_stock.rb:41:in `market'
from /system_trading/tradeSimulation_ruby/lib/text_to_stock.rb:22:in `generate_stock'
from /system_trading/tradeSimulation_ruby/lib/simulation.rb:24:in `simulate_a_stock'
from ./check/simulation_check.rb:25:in `
同じエラーが出て終了。
とりあえず問題はtext_to_stock.rbにあり、エラーは”`[]': no implicit conversion from nil to integer ”ということだ。
課題をまとめると、
[課題]
- open_http': 999 Unable to process request at this time -- error 999 (OpenURI::HTTPError)の原因
- /lib/text_to_stock.rb:41:in `[]': no implicit conversion from nil to integer (TypeError)の原因
おいおい調べていこう。
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/3607373
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック