読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

uuidtools 2.0.0に対応したjiji-1.1.1をリリース

「uuidtools 2.0.0 と組みあわせて使うとバックテスト実行時にエラーになる」というご報告を頂いたので(ありがとうございます!)、それを改修したjiji-1.1.1をリリースしました。

Github - unageanu/jiji

問題の詳細は以下を参照ください。また、これに加えて、クリック証券デモトレードプラグンイでプロキシの指定ができるようにもなっています。(ローカルで実装していたので、ついでにリリース。)

更新手順

以下の操作を実行してください。

$ gem update unageanu-jiji

uuidtools 2.0.0 との組み合わせでエラーになる件

問題

jijiをインストールしてバックテストを実行すると、以下のエラーが発生する。

undefined method `random_create' for UUID:Class : /usr/lib/ruby/gems/1.8/gems/unageanu-jiji-1.1.0/lib/jiji/process_manager.rb:89:in `create_back_test'
/usr/lib/ruby/gems/1.8/gems/needle-1.3.0/lib/needle/interceptor-chain.rb:74:in `__send__'
/usr/lib/ruby/gems/1.8/gems/needle-1.3.0/lib/needle/interceptor-chain.rb:74:in `process_next'
/usr/lib/ruby/gems/1.8/gems/unageanu-jiji-1.1.0/lib/jiji/util/synchronize_interceptor.rb:26:in `process'
/usr/lib/ruby/gems/1.8/gems/unageanu-jiji-1.1.0/lib/jiji/util/synchronize_interceptor.rb:25:in `synchronize'
/usr/lib/ruby/gems/1.8/gems/unageanu-jiji-1.1.0/lib/jiji/util/synchronize_interceptor.rb:25:in `process'
/usr/lib/ruby/gems/1.8/gems/needle-1.3.0/lib/needle/interceptor-chain.rb:58:in `process_next'
(eval):3:in `create_back_test'
/usr/lib/ruby/gems/1.8/gems/unageanu-jiji-1.1.0/lib/jiji/service/process_service.rb:31:in `new_test'
/usr/lib/ruby/gems/1.8/gems/unageanu-jiji-1.1.0/lib/jiji/
原因

uuidtools 2.0.0 より「UUID」クラスが「UUIDTools::UUID」に移動となったことが原因です。(jijiとは関係ありませんが、このサイトに同様の問題が報告されています。)

本来は、gemの依存モジュール設定で互換性のない依存ライブラリが使われないようにしておくべきですが、上位互換は維持されるだろうという楽観論に基づき「'1.0.7'以降のuuidtoolsに依存」としていました。このため、uuidtoolsとjijiが共にインストールされていない環境に新規インストールすると、最新の2.0.0が使われエラーになります。

対応

せっかくなのでuuidtools 2.0.0にあわせてjijiでの呼び出し箇所を修正して対応しました。また、他に同様の問題が発生しないよう、依存モジュールのバージョンは固定としました。