Giter Club home page Giter Club logo

jiji2's People

Contributors

tanukiti1987 avatar unageanu avatar unageanu-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jiji2's Issues

[include Mongoid::Document]でエラーが発生

エージェントのソースに[include Mongoid::Document]の記述がある状態で[テストの作成]をクリックすると「サーバーが混雑しています。しばらく待ってからやり直してください」となります。
100%の再現性があり、この一文だけのクラスを登録しても再現します。
どなたかアドバイスをお願いします。

なお、jijiのログには以下のエラーが出ていました。(的外れだったらスイマセン)

E, [2019-12-19T09:09:25.522879 #1] ERROR -- : uninitialized constant Module::AgentBuilder (NameError)
/app/jiji2/src/jiji/model/agents/internal/agent_finder.rb:61:in const_get' /app/jiji2/src/jiji/model/agents/internal/agent_finder.rb:61:in block in find_agent'
/app/jiji2/src/jiji/model/agents/internal/agent_finder.rb:60:in `each'
以下略

Use binary field for AgentSetting state

It is Hash field for state persistence at present. It's tedious to to_h/restore state with complex data structure which is normal in professional algo with many custom class defined.

suggestion is

#AgentSetting

 field :state, :type => Binary

#save state

setting.state = Marshal.dump(agent.state)

#restore state

agent.restore_state(Marshal.load(setting.state))

Then anything returned by agent.state can be persistence

「値が正しく入力されていません」

大変よいフレームワークありがとうございます。
さて、現在「MovingAverageAgent@moving_average_agent.rb」を元に独自にAgentを作成しております。あらかた出来上がりまして、バックテストに必要項目を選択して、開始したところ上記のようなメッセージが出て、前に進めません。必要項目は全て入力していますので、作成したAgentの問題かと思われるのですが、何かヒントのようなものをいただけるとありがたいのですが...

Sometimes spec failed for illegal time period.

it seems something wrong with mix timeformat, but not always.

"2015-12-09 04:00:00 UTC" and "2015-12-09 12:00:00 +0800"

  2) Jiji::Model::Trading::BackTestRepository テストが3つ登録されている場合 テストで利用しているエージェントが削除されていた場合も、正しく起動できる
     Failure/Error: @repository.load

     ArgumentError:
       illegal period. start_time=2015-12-09 04:00:00 UTC end_time=2015-12-09 12:00:00 +0800
     # /opt/dev/+github/unageanu/jiji2/src/jiji/errors/errors.rb:99:in `illegal_argument'
     # /opt/dev/+github/unageanu/jiji2/src/jiji/model/securities/internal/virtual/rate_retriever.rb:66:in `check_period'
     # /opt/dev/+github/unageanu/jiji2/src/jiji/model/securities/internal/virtual/rate_retriever.rb:12:in `init_rate_retriever_state'
     # /opt/dev/+github/unageanu/jiji2/src/jiji/model/securities/virtual_securities.rb:26:in `initialize'
     # /opt/dev/+github/unageanu/jiji2/src/jiji/model/trading/brokers/back_test_broker.rb:55:in `new'
     # /opt/dev/+github/unageanu/jiji2/src/jiji/model/trading/brokers/back_test_broker.rb:55:in `build_components'
     # /opt/dev/+github/unageanu/jiji2/src/jiji/model/trading/brokers/back_test_broker.rb:25:in `initialize'
     # /opt/dev/+github/unageanu/jiji2/src/jiji/model/trading/back_test.rb:218:in `new'
     # /opt/dev/+github/unageanu/jiji2/src/jiji/model/trading/back_test.rb:218:in `create_broker'
     # /opt/dev/+github/unageanu/jiji2/src/jiji/model/trading/back_test.rb:205:in `create_components'
     # /opt/dev/+github/unageanu/jiji2/src/jiji/model/trading/back_test.rb:133:in `setup'
     # /opt/dev/+github/unageanu/jiji2/src/jiji/model/trading/back_test_repository.rb:122:in `setup_backtest'
     # /opt/dev/+github/unageanu/jiji2/src/jiji/model/trading/back_test_repository.rb:93:in `block in load'
     # /opt/dev/+github/unageanu/jiji2/src/jiji/model/trading/back_test_repository.rb:92:in `each_with_object'
     # /opt/dev/+github/unageanu/jiji2/src/jiji/model/trading/back_test_repository.rb:92:in `load'
     # /opt/dev/+github/unageanu/jiji2/spec/jiji/model/trading/back_test_repository_spec.rb:509:in `block (3 levels) in <top (required)>'

Docker for WindowsでOANDAに接続できない

貴重なProjectありがとうございます。

暫くUbuntu上のDockerで動かしていましたが、Docker for Windows上で動くとリソースの関係で恩恵があるので、試行錯誤しています。

Docker上でコンテナは正常に動いていますが、
OANDAのアクセストークンを入力しても、データが見つかりません。となってしまいます。
コンテナに入ってapt updateやpingを外に向けて飛ばしてみると正常に動作するので、
ネットワークの問題でないと思っていますが、どうしてもOANDAと通信できないみたいです。
アクセストークンに関してはLinux上のDockerで登録できているので問題ないと思います。

何故動かないのか分かることがありましたら教えてください。

ログは以下のようになっています。
E, [2019-09-15T05:42:27.579185 #1] ERROR -- : Jiji::Errors::NotInitializedException (Jiji::Errors::NotInitializedException)
/app/jiji2/src/jiji/errors/errors.rb:77:in not_initialized' /app/jiji2/src/jiji/model/securities/nil_securities.rb:9:in method_missing'
/app/jiji2/src/jiji/model/trading/brokers/abstract_broker.rb:30:in tick' /app/jiji2/src/jiji/model/trading/brokers/abstract_broker.rb:154:in refresh'
/app/jiji2/src/jiji/model/trading/jobs/notify_next_tick_job.rb:20:in before_do_next' /app/jiji2/src/jiji/model/trading/jobs/notify_next_tick_job.rb:14:in exec'
/app/jiji2/src/jiji/model/trading/process.rb:35:in do_next_job' /app/jiji2/src/jiji/model/trading/process.rb:28:in run'
/app/jiji2/src/jiji/model/trading/process.rb:22:in block in start' /usr/local/bundle/gems/thread-0.2.2/lib/thread/pool.rb:67:in execute'
/usr/local/bundle/gems/thread-0.2.2/lib/thread/pool.rb:405:in block (2 levels) in spawn_thread' /usr/local/bundle/gems/thread-0.2.2/lib/thread/pool.rb:372:in loop'
/usr/local/bundle/gems/thread-0.2.2/lib/thread/pool.rb:372:in `block in spawn_thread'

リアルトレードとバックテスト実施中にMongoDBのエラーが発生しました

Heroku の環境で利用しているのですが、
リアルトレード実施しながら、バックテストを実施していたところ、
MongoDBで、以下のエラーが発生しました。

エラーの解消ができない状態でして、
解消方法を教えていただけないでしょうか。

バックテストのログ

E, [2017-12-07T18:20:51.189532 #4] ERROR -- : Mongo::Error::BulkWriteError (Mongo::Error::BulkWriteError)
/app/vendor/bundle/ruby/2.2.0/gems/mongo-2.2.7/lib/mongo/bulk_write/result.rb:184:in `validate!'
/app/vendor/bundle/ruby/2.2.0/gems/mongo-2.2.7/lib/mongo/bulk_write/result_combiner.rb:73:in `result'
/app/vendor/bundle/ruby/2.2.0/gems/mongo-2.2.7/lib/mongo/bulk_write.rb:65:in `execute'
/app/vendor/bundle/ruby/2.2.0/gems/mongo-2.2.7/lib/mongo/collection.rb:385:in `bulk_write'
/app/src/jiji/utils/bulk_write_operation_support.rb:86:in `execute_bulk_write_operations'
/app/src/jiji/utils/bulk_write_operation_support.rb:66:in `execute'
/app/src/jiji/utils/bulk_write_operation_support.rb:23:in `end_transaction'
/app/src/jiji/model/trading/jobs/notify_next_tick_job.rb:104:in `refresh_transaction'
/app/src/jiji/model/trading/jobs/notify_next_tick_job.rb:76:in `exec'
/app/src/jiji/model/trading/process.rb:37:in `do_next_job'
/app/src/jiji/model/trading/process.rb:30:in `run'
/app/src/jiji/model/trading/process.rb:24:in `block in start'
/app/vendor/bundle/ruby/2.2.0/gems/thread-0.2.2/lib/thread/pool.rb:67:in `call'
/app/vendor/bundle/ruby/2.2.0/gems/thread-0.2.2/lib/thread/pool.rb:67:in `execute'
/app/vendor/bundle/ruby/2.2.0/gems/thread-0.2.2/lib/thread/pool.rb:405:in `block (2 levels) in spawn_thread'
/app/vendor/bundle/ruby/2.2.0/gems/thread-0.2.2/lib/thread/pool.rb:372:in `loop'
/app/vendor/bundle/ruby/2.2.0/gems/thread-0.2.2/lib/thread/pool.rb:372:in `block in spawn_thread'

リアルトレードのログ

E, [2017-12-07T18:25:44.877935 #4] ERROR -- : quota exceeded (12501) (Mongo::Error::OperationFailure)
/app/vendor/bundle/ruby/2.2.0/gems/mongo-2.2.7/lib/mongo/operation/result.rb:256:in `validate!'
/app/vendor/bundle/ruby/2.2.0/gems/mongo-2.2.7/lib/mongo/operation/write/insert.rb:55:in `execute_write_command'
/app/vendor/bundle/ruby/2.2.0/gems/mongo-2.2.7/lib/mongo/operation/write/write_command_enabled.rb:38:in `execute'
/app/vendor/bundle/ruby/2.2.0/gems/mongo-2.2.7/lib/mongo/collection.rb:346:in `block in insert_one'
/app/vendor/bundle/ruby/2.2.0/gems/mongo-2.2.7/lib/mongo/retryable.rb:112:in `call'
/app/vendor/bundle/ruby/2.2.0/gems/mongo-2.2.7/lib/mongo/retryable.rb:112:in `write_with_retry'
/app/vendor/bundle/ruby/2.2.0/gems/mongo-2.2.7/lib/mongo/collection.rb:337:in `insert_one'
/app/vendor/bundle/ruby/2.2.0/gems/mongoid-5.1.3/lib/mongoid/query_cache.rb:168:in `insert_one_with_clear_cache'
/app/vendor/bundle/ruby/2.2.0/gems/mongoid-5.1.3/lib/mongoid/persistable/creatable.rb:79:in `insert_as_root'
/app/vendor/bundle/ruby/2.2.0/gems/mongoid-5.1.3/lib/mongoid/persistable/creatable.rb:27:in `block in insert'
/app/vendor/bundle/ruby/2.2.0/gems/mongoid-5.1.3/lib/mongoid/persistable/creatable.rb:118:in `block (2 levels) in prepare_insert'
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.7/lib/active_support/callbacks.rb:88:in `__run_callbacks__'
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.7/lib/active_support/callbacks.rb:778:in `_run_create_callbacks'
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.7/lib/active_support/callbacks.rb:81:in `run_callbacks'
/app/vendor/bundle/ruby/2.2.0/gems/mongoid-5.1.3/lib/mongoid/interceptable.rb:138:in `run_callbacks'
/app/vendor/bundle/ruby/2.2.0/gems/mongoid-5.1.3/lib/mongoid/persistable/creatable.rb:117:in `block in prepare_insert'
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.7/lib/active_support/callbacks.rb:88:in `__run_callbacks__'
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.7/lib/active_support/callbacks.rb:778:in `_run_save_callbacks'
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.7/lib/active_support/callbacks.rb:81:in `run_callbacks'
/app/vendor/bundle/ruby/2.2.0/gems/mongoid-5.1.3/lib/mongoid/interceptable.rb:138:in `run_callbacks'
/app/vendor/bundle/ruby/2.2.0/gems/mongoid-5.1.3/lib/mongoid/persistable/creatable.rb:116:in `prepare_insert'
/app/vendor/bundle/ruby/2.2.0/gems/mongoid-5.1.3/lib/mongoid/persistable/creatable.rb:23:in `insert'
/app/vendor/bundle/ruby/2.2.0/gems/mongoid-5.1.3/lib/mongoid/persistable/savable.rb:23:in `save'
/app/src/jiji/utils/bulk_write_operation_support.rb:9:in `save'
/app/src/jiji/model/graphing/internal/graph_data_saver.rb:27:in `recreate_graph_data'
/app/src/jiji/model/graphing/internal/graph_data_saver.rb:19:in `save_data_if_required'
/app/src/jiji/model/graphing/graph.rb:79:in `block in save_data'
/app/src/jiji/model/graphing/graph.rb:78:in `each'
/app/src/jiji/model/graphing/graph.rb:78:in `save_data'
/app/src/jiji/model/graphing/graph_factory.rb:40:in `block in save_data'
/app/src/jiji/model/graphing/graph_factory.rb:39:in `each'
/app/src/jiji/model/graphing/graph_factory.rb:39:in `save_data'
/app/src/jiji/model/trading/jobs/notify_next_tick_job.rb:53:in `save_graph_data'
/app/src/jiji/model/trading/jobs/notify_next_tick_job.rb:29:in `after_do_next'
/app/src/jiji/model/trading/jobs/notify_next_tick_job.rb:18:in `exec'
/app/src/jiji/model/trading/process.rb:37:in `do_next_job'
/app/src/jiji/model/trading/process.rb:30:in `run'
/app/src/jiji/model/trading/process.rb:24:in `block in start'
/app/vendor/bundle/ruby/2.2.0/gems/thread-0.2.2/lib/thread/pool.rb:67:in `call'
/app/vendor/bundle/ruby/2.2.0/gems/thread-0.2.2/lib/thread/pool.rb:67:in `execute'
/app/vendor/bundle/ruby/2.2.0/gems/thread-0.2.2/lib/thread/pool.rb:405:in `block (2 levels) in spawn_thread'
/app/vendor/bundle/ruby/2.2.0/gems/thread-0.2.2/lib/thread/pool.rb:372:in `loop'
/app/vendor/bundle/ruby/2.2.0/gems/thread-0.2.2/lib/thread/pool.rb:372:in `block in spawn_thread'

よろしくお願いいたします。

初期化処理(post_create)について

前回はnext_tickの間隔を変える方法についてご教授いただきありがとうございました。

現在、Herokuのhobbyプランを使って、next_tickの間隔を6-10h程度にしたエージェントを
プラクティスの講座で動かしています。

next_tickやpost_createのところにloggerを入れて見ているのですが、next_tickの間隔はうまくコントロールできている一方で、1日1回必ずpost_createされています。

ここで質問なのですが、

  1. post_createされた直後の一番最初のnext_tickは、ただレートを受け取るだけで、前日の最後のnext_tickのレートと比較してCross upやdownの判断をすることはないですよね?

  2. 1.の質問のようにシステムが動くとすると、1日1回 post_createされた直後のnext_tick一回分、取引のチャンスが無駄になってしまうと思うのですが、なんとかそれを回避する方法はないでしょうか。
    (restore stateを使えば良いのでしょうか? もしそうであれば、エージェントへのオーバーライドの仕方を教えていただけませんか?)

お手数をおかけしますが、宜しくお願い致します。

システムのセットアップ(port:8080)

jiji+tensorflow が目的でwindows7のDocker上にjijiセットアップを行っています。

http://jiji2.unageanu.net/install/020300_install_server_to_docker.html
に従い作業しましたが、
「http://<インストール先ホスト>:<docker-compose.ymlで設定したJijiのポート/デフォルトは8080>」の起動ができません。

<インストール先ホスト>の調べ方が分からず、http://localhost:8080、http://127.0.0.1:8080で
行いましたが両方NGです。Docker上で起動させるのではなく、Windowsのブラウザで実行で良いのですよね?最初、Dockerで頑張っておりましたが、ようやく気づきました。

「SSLを利用しない場合は、 docker-compose-without-ssl.yml をご使用ください。
 SSLプロキシとして使用している Nginx なしの構成でセットアップします。
 docker-compose-without-ssl.yml を docker-compose.yml にリネームして使用するか、 -f オプションで  docker-compose-without-ssl.yml を明示してください。」
に従い、sslは利用しないため、ポート8080で設定しました。

「docker ps -a」で確認したところ、下記の結果となり正常だと思います。

CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS                   PORTS                      NAMES

f06aede0bfa4        unageanu/jiji:latest         "puma -C /app/jiji..."   2 hours ago         Up 2 hours               0.0.0.0:8080->8080/tcp     jiji_jiji

ea5eb24e3dbf        mongo:3.0.7                  "/entrypoint.sh mo..."   2 hours ago         Up 2 hours               0.0.0.0:27018->27017/tcp   jiji_mongodb

5c99a2e7e79b        unageanu/jiji-nginx:latest   "nginx -g 'daemon ..."   3 hours ago         Exited (1) 2 hours ago                              jiji_nginx

nginxについては、最初「docker-compose-without-ssl.yml 」の差し替えを忘れておりプロセスが作られたか、作る段階で失敗したようです。これが悪さをしているのかもしれませんが。。。

同様の記事で下記を見たのですが、解決策が分かりませんでした。
#175

対処方法をご教授賜りたいと思います。

あと、依然はWindowsにtensorflowを導入するには、Dockerが必要でしたが今は無くても動くようですが、それなら、jiji+tensorflowを行う場合Dockerは不要なのでしょうか?

Question about tradeReduced.

I am not familiar with oanda api and excuse me for some quetion about tradeReduced field in order result.

If I add position for same instrument not reduce, does api stilll return tradeReduced field? or in tradeOpened?

In test spec, I found that a new position for same instrument is just added to internal array, rather than merge to one position. so I dont know what will happen when I add position for same instrument?

I checked code as below, but no anwser for me.

 def apply_order_result(result, tick, agent = nil) # :nodoc:
      add(result.trade_opened, tick, agent) if result.trade_opened
      split(result.trade_reduced, agent) if result.trade_reduced
      result.trades_closed.each do |closed|
        close(closed.internal_id, closed.price, closed.timestamp, nil)
      end
      @account.update(self, tick.timestamp)
    end

next_tickの間隔について

素晴らしいシステムトレードフレームワーク、ありがとうございます。
初心者なのですが質問がございます。

next_tickの行われる間隔を15秒からより長い時間に変更することはできるのでしょうか?

通貨違いのエージェントを複数実行させた時にそれぞれ通貨でグラフを描画することは可能でしょうか

昨日に続き、もう1点教えていただけますでしょうか。

以下の2つのエージェントを実行させた際、

  1. ドル円を取引するエージェント(移動平均線表示あり)
  2. ユーロ円を取引するエージェント(移動平均線表示あり)

グラフが片方の通貨しか表示されないのですが、
両通貨でグラフを表示させることは可能でしょうか。

spec の走らせ方について

今、手元で fork して spec を全部走らせてみたのですが、

https://github.com/unageanu/jiji2/blob/master/spec/jiji/db/v0to1/create_capped_collection_spec.rb#L43

だけ、必ず失敗してしまいます。

5つの Jiji::Model::Notification::Notification を作った後に、 3つの Jiji::Model::Notification::Notification レコードが存在することを確認していますが、どういう処理を行ったうえで、2つのオブジェクトが count の対象から外れる感じでしょうか。

issue に立てるべき内容かアヤシイですが、ご教授いただけると嬉しいです。

RCIの算出について

unageanu様
JIJI2で大変お世話になっております。
おかげさまで、様々なトレードアルゴリズムを考えることができています。

ご相談ですが・・・
module Signalsの中にRSIの算出関数はあるのですが、RCIが無いようです。
RCIもよく参照する指標のため、RCIの算出関数も盛り込んでいただけますと、
非常に助かります。

大変お忙しい中申し訳ないですが、何卒ご検討よろしくお願いいたします。

バックテストでのエラー

公開された手順通りにHerokuにインストールした直後、デフォルトの設定でバックテストを実行したのですが、エラーになってしまい下記のようなログが出ております。
何かやり方が間違っていますでしょうか?

E, [2016-09-07T23:25:34.573397 #3] ERROR -- : undefined method bid' for nil:NilClass (NoMethodError) agent/moving_average_agent.rb:45:inblock in next_tick'
agent/moving_average_agent.rb:45:in map' agent/moving_average_agent.rb:45:innext_tick'
/app/src/jiji/model/agents/agents.rb:35:in block in next_tick' /app/src/jiji/model/agents/agents.rb:33:ineach'
/app/src/jiji/model/agents/agents.rb:33:in next_tick' /app/src/jiji/model/trading/jobs/notify_next_tick_job.rb:17:inexec'
/app/src/jiji/model/trading/jobs/notify_next_tick_job.rb:74:in exec' /app/src/jiji/model/trading/process.rb:37:indo_next_job'
/app/src/jiji/model/trading/process.rb:30:in run' /app/src/jiji/model/trading/process.rb:24:inblock in start'
/app/vendor/bundle/ruby/2.2.0/gems/thread-0.2.2/lib/thread/pool.rb:67:in call' /app/vendor/bundle/ruby/2.2.0/gems/thread-0.2.2/lib/thread/pool.rb:67:inexecute'
/app/vendor/bundle/ruby/2.2.0/gems/thread-0.2.2/lib/thread/pool.rb:405:in block (2 levels) in spawn_thread' /app/vendor/bundle/ruby/2.2.0/gems/thread-0.2.2/lib/thread/pool.rb:372:inloop'
/app/vendor/bundle/ruby/2.2.0/gems/thread-0.2.2/lib/thread/pool.rb:372:in `block in spawn_thread'

よろしくお願いします。

jijiエージェントでのデバッグログの出力方法について

お世話になります。
表題の件、ご教示くださいませ。

現在の状況としては、

  • エージェントに対してログ出力のコーディング実施
  • エージェントの処理(バックテスト)は正常終了
  • テスト一覧>ログを確認すると、「ログはありません」と表示される

以下、コードの一部を転記します

require 'logger'
@logger = Logger.new(STDOUT)
@logger.level = Logger::DEBUG
@logger.debug '*** ログテスト ***'

jijiのバージョンは確認方法がわかりませんでしたが、
tensorflow連携サンプルのgitリポジトリをベースにしております。

以上、よろしくお願いいたします。

ボリンジャーバンドの傾きを取得する方法

ボリンジャーバンドの傾きを「Signals::BollingerBands」を用いて取得した値から導出し、
その傾きを売買判定に使用したいと思っていますが、傾きの取得部分が実装できず困っています。
表題の機能の実装方法をご教示頂けないでしょうか。

現在の足のN本前から(N+M)本前までの期間Mの移動平均求める方法

現在の足のN本前から(N+M)本前までの期間Mの移動平均を求める方法を教えて下さい。
①エージェントに置いてあるsignals.rbを修正してみましたが、ビルドインのsigals.rbが動作しているようで修正が反映されません。
②方法は何でもよいので他の方法があれば教えてください。

Can I specific interval for agent in live trade?

there is a interval selection in backtest, can I specific interval for agent in live trade?

for example, I expect my agent to update for each H1 bar, not each tick?

I have checked moving_average_agent.rb, it seems short and long properties is force to use tick period which is configured "15" second in application.yml.

初期設定:証券会社の設定 でエラー

はじめまして、非常に面白そう!と思い、試してみたのですが、下記エラー出ました。
お知恵をいただければと思います。

■事象
・初期設定で、「証券会社の設定」が完了しません
デモ口座で試しており、発行されたPersonal Access Tokenを設定しましたが、この画像のようなメッセージが出て、設定が完了しませんでした。

image
image

$ docker logs jiji_jiji で確認すると下記エラーが無限にでています

E, [2019-02-11T08:40:36.324927 #1] ERROR -- : Jiji::Errors::NotInitializedException (Jiji::Errors::NotInitializedException)
/app/jiji2/src/jiji/errors/errors.rb:77:in not_initialized' /app/jiji2/src/jiji/model/securities/nil_securities.rb:9:in method_missing'
/app/jiji2/src/jiji/model/trading/brokers/abstract_broker.rb:30:in tick' /app/jiji2/src/jiji/model/trading/brokers/abstract_broker.rb:154:in refresh'
/app/jiji2/src/jiji/model/trading/jobs/notify_next_tick_job.rb:20:in before_do_next' /app/jiji2/src/jiji/model/trading/jobs/notify_next_tick_job.rb:14:in exec'
/app/jiji2/src/jiji/model/trading/process.rb:35:in do_next_job' /app/jiji2/src/jiji/model/trading/process.rb:28:in run'
/app/jiji2/src/jiji/model/trading/process.rb:22:in block in start' /usr/local/bundle/gems/thread-0.2.2/lib/thread/pool.rb:67:in execute'
/usr/local/bundle/gems/thread-0.2.2/lib/thread/pool.rb:405:in block (2 levels) in spawn_thread' /usr/local/bundle/gems/thread-0.2.2/lib/thread/pool.rb:372:in loop'
/usr/local/bundle/gems/thread-0.2.2/lib/thread/pool.rb:372:in `block in spawn_thread'

■環境
ローカルのDockerにて試してみています、SSL無しの方です(docker-compose-without-ssl.yml)
http://jiji2.unageanu.net/install/020300_install_server_to_docker.html
・Docker Desktop for Mac
Docker version 18.09.1, build 4c52b90
docker-compose version 1.23.2, build 1110ad01
git version 2.15.1

・jiji_jiji 内からoanda.jpに疎通はできているようです
$ wget www.oanda.jp
は正常にhtmlを取得.

OandaAPI::RequestError の例外処理を行う

OandaAPI からのレスポンスが帰ってこないとの例外処理を拾っていないため、アプリケーションが落ちてしまうようです。

https://github.com/unageanu/jiji2/blob/master/src/jiji/model/securities/internal/oanda/rate_retriever.rb#L19

該当行の処理に対して、 OandaAPI::RequestError に対する適切な例外を行う必要がありそうです。

以下、nginx に出ていたエラーログです。

W, [2016-03-06T04:27:16.940782 #1]  WARN -- : oanda_api: It took 31.944752034 seconds to obtain a connection.  Consider raising the pool size which is currently set to 2.
E, [2016-03-06T05:10:35.095800 #1] ERROR -- : An error as occured while processing response. Original Exception: SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 read server hello A (OandaAPI::RequestError)
/usr/local/bundle/gems/oanda_api-0.9.4/lib/oanda_api/client/client.rb:119:in `rescue in execute_request'
/usr/local/bundle/gems/oanda_api-0.9.4/lib/oanda_api/client/client.rb:105:in `execute_request'
/usr/local/bundle/gems/oanda_api-0.9.4/lib/oanda_api/client/namespace_proxy.rb:107:in `method_missing'
/app/jiji2/src/jiji/model/securities/internal/oanda/rate_retriever.rb:19:in `retrieve_current_tick'
/app/jiji2/src/jiji/model/trading/brokers/abstract_broker.rb:30:in `tick'
/app/jiji2/src/jiji/model/trading/brokers/abstract_broker.rb:104:in `refresh'
/app/jiji2/src/jiji/model/trading/jobs/notify_next_tick_job.rb:22:in `before_do_next'
/app/jiji2/src/jiji/model/trading/jobs/notify_next_tick_job.rb:16:in `exec'
/app/jiji2/src/jiji/model/trading/process.rb:37:in `do_next_job'
/app/jiji2/src/jiji/model/trading/process.rb:30:in `run'
/app/jiji2/src/jiji/model/trading/process.rb:24:in `block in start'
/usr/local/bundle/gems/thread-0.2.2/lib/thread/pool.rb:67:in `call'
/usr/local/bundle/gems/thread-0.2.2/lib/thread/pool.rb:67:in `execute'
/usr/local/bundle/gems/thread-0.2.2/lib/thread/pool.rb:405:in `block (2 levels) in spawn_thread'
/usr/local/bundle/gems/thread-0.2.2/lib/thread/pool.rb:372:in `loop'
/usr/local/bundle/gems/thread-0.2.2/lib/thread/pool.rb:372:in `block in spawn_thread'

What's next plan?

I love ruby and this project, write algo in ruby is awesome, feel free and have fun!

Is this project still developing, what's the next plan?

サーバーが混雑しています。しばらく待ってからやり直してください。

こんにちは。
herokuにインストールしたjiji2がAplication errorで開くことができません。
(2周間ほど前は問題なくopen appで起動できました)
また、新しくデプロイしてみたのですが
「サーバーが混雑しています。しばらく待ってからやり直してください。」
というメッセージが出てきてチャートの更新等が行われません。
考えられる原因をご教授していただけないでしょうか?
(OANDAの問題でしょうか?)
APIはOANDAのデモアカウントのもの使用しています。
よろしくお願いします。

ロスカット価格がオーダーに反映されない。

表題につきまして、自力で解決できませんでしたので、こちらに記載させていただきます。

現在、オーダー発行について、

broker.buy(:USDJPY, 10000, :market, {
stop_loss: @price.to_f - 0.5,
take_profit: @price.to_f + 0.5,
trailing_stop: 10
})
*「@price」は現在価格

と実装し、テストを行っているのですが、「stop_loss」だけオーダーに反映されません。
そして、なぜか15pips下がったところでロスカットされています。
なぜ「stop_loss」がオーダーに反映されないのかご教示頂けませんでしょうか。

また、「stop_loss」と「take_profit」 について、"注文価格の50pips下"などと指定する方法はあるのでしょうか?
合わせてご教示頂けたら幸いです。

よろしくお願い致します。

バックテストの一括登録

素晴らしいシステムトレードフレームワーク、ありがとうございます。

2点質問がございます。

①バックテストを一括投入することは可能でしょうか。
jiji(1)では、下記の方法で行えておりましたが、jiji2でも可能でしょうか。

②複数のバックテストを並列に実行することはできますでしょうか。
マルチコアCPUを活用して複数のバックテストを実行できれば大変助かります。

何卒よろしくお願いいたします。

jiji_nginxの停止

コンテナの作成には成功するのですが、sudo docker ps -aで見てみますと停止しており、
sudo docker logs jiji_nginxのログで、

2017/08/11 12:30:15 [emerg] 1#1: PEM_read_bio_X509_AUX("/etc/nginx/cert/ssl.crt") failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] PEM_read_bio_X509_AUX("/etc/nginx/cert/ssl.crt") failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line:Expecting: TRUSTED CERTIFICATE)

この様な表示がされます。自己署名の作成が失敗しているのでしょうか?

環境はWin10にCentOS7です。

P/L caculation not correct except in the case of Vs-Yen transaction

jiji停止中に jiji外で 決済された非クロス円ポジションの損益計算が正しくない

インストールして動かしてみました。

jiji外での取引データを取り込んで履歴を構築してくれる機能がありますが(/positions の表示まわり),
非クロス円ポジションの損益計算が正しくないです。
たとえば EUR/USD とか AUD/CAD とかの取引ログがまじっていると,集計の数字がめっちゃくちゃになってしまいます。

ここはブローカー側から実現損益の値を取得するのが筋のように思います。
(概算であれば,決済時刻におけるレートを取得して円に換算することもできそうですが)

oanda_api gemのオブジェクトでいうと OandaAPI::Resource::Transaction#pl がそれだと思います。
OandaAPI::Resource::Transaction#account_balance も役に立つかもしれません。
ご検討ください……。

MARKET_IF_TOUCHED_ORDER_REJECT

下記のようなエラーメッセージが表示され、注文が通りません。

E, [2019-03-07T12:02:47.552307 #1] ERROR -- : An error as occured while processing response. Status 400
{"orderRejectTransaction":{"type":"MARKET_IF_TOUCHED_ORDER_REJECT","instrument":"USD_JPY","units":"300","price":"110.79999999999999","timeInForce":"GTC","triggerCondition":"DEFAULT","partialFill":"DEFAULT","positionFill":"DEFAULT","reason":"CLIENT_ORDER","rejectReason":"PRICE_PRECISION_EXCEEDED","id":"6864","accountID":"001-009-1939778-001","userID":1939778,"batchID":"6864","requestID":"78566986778195099","time":"2019-03-07T12:02:47.539716401Z"},"relatedTransactionIDs":["6864"],"lastTransactionID":"6864","errorMessage":"The price specified contains more precision than is allowed for the instrument","errorCode":"PRICE_PRECISION_EXCEEDED"} (OandaApiV20::RequestError)
/usr/local/bundle/gems/oanda_api_v20-2.0.0/lib/oanda_api_v20/api.rb:59:in rescue in method_missing' /usr/local/bundle/gems/oanda_api_v20-2.0.0/lib/oanda_api_v20/api.rb:54:in method_missing'
/app/jiji2/src/jiji/model/securities/internal/oanda/ordering.rb:21:in order' /app/jiji2/src/jiji/model/trading/brokers/abstract_broker.rb:190:in order'
/app/jiji2/src/jiji/model/trading/brokers/abstract_broker.rb:75:in buy' /app/jiji2/src/jiji/model/trading/brokers/broker_proxy.rb:33:in buy'
agent/USD.rb:229:in register_order' agent/USD.rb:122:in register_order'
agent/USD.rb:82:in block in register_orders' agent/USD.rb:102:in block in each_traps'
agent/USD.rb:99:in times' agent/USD.rb:99:in each_traps'
agent/USD.rb:80:in register_orders' agent/USD.rb:29:in next_tick'
/app/jiji2/src/jiji/model/agents/agents.rb:35:in block in next_tick' /app/jiji2/src/jiji/model/agents/agents.rb:33:in each'
/app/jiji2/src/jiji/model/agents/agents.rb:33:in next_tick' /app/jiji2/src/jiji/model/trading/jobs/notify_next_tick_job.rb:15:in exec'
/app/jiji2/src/jiji/model/trading/process.rb:35:in do_next_job' /app/jiji2/src/jiji/model/trading/process.rb:28:in run'
/app/jiji2/src/jiji/model/trading/process.rb:22:in block in start' /usr/local/bundle/gems/thread-0.2.2/lib/thread/pool.rb:67:in execute'
/usr/local/bundle/gems/thread-0.2.2/lib/thread/pool.rb:405:in block (2 levels) in spawn_thread' /usr/local/bundle/gems/thread-0.2.2/lib/thread/pool.rb:372:in loop'
/usr/local/bundle/gems/thread-0.2.2/lib/thread/pool.rb:372:in `block in spawn_thread'

AWSとDockerを利用したシステムのセットアップにて躓きます

#324 #175 を参照させていただきましたが解決に至らなかったので質問させていただきます。

こちらのページを参考に設定を行っているのですが、
URLにてアクセスの部分で躓いております。ブラウザ上で表示できません。

上記2つを参考に切り分けて見たのですが、原因がわからず
対処方法をご教授願いたいです。

状況

  • ポート443,80ともに接続できない
  • localhostでCurlはできる
  • Logに存在するエラーはjiji_jijiでの初期認証のみ
  • AWSで別のEC2立てて、nginx入れてみたら、ブラウザ上で表示できた。

conposeの設定ファイル

[root@ip-172-31-86-250 docker-jiji2]# cat docker-compose.yml
jiji:
  container_name: jiji_jiji
  image: unageanu/jiji:latest
  links:
    - mongodb
  environment:
    # サーバー内部で秘匿データの暗号化に使うキー
    # 必ず変更して使用してください。
    # UIから入力を求められることはないので、任意の長い文字列を使用すればOKです。
    USER_SECRET: e4cceb3791f2cce9ef6e4f64d2428ad19bdb

mongodb:
  container_name: jiji_mongodb
  image: mongo:3.0.7
  ports:
    # MongoDBのポート番号
    # 必要に応じて変更してください。
    - "27018:27017"
  # volumes:
    # MongoDBのデータを保存するディレクトリ
    # デフォルトでは、コンテナ内に作成します。(この場合、コンテナを再作成すると、データが初期化されます)
    # コメントアウトしてパスを設定することで、ホストマシンの任意のディレクトリに変更することができます。
    # './' で始めることで、docker-compose.ymlからの相対パスで指定可能です。
    # - ./path/to/data/dir:/data/db

nginx:
  container_name: jiji_nginx
  image: unageanu/jiji-nginx:latest
  links:
    - jiji
  ports:
    # Jijiのポート番号
    # 必要に応じて変更してください。
    - "8443:443"
  volumes:
    # SSL証明書のパス
    # './path/to/server.crt' にサーバー証明書、
    # './path/to/server.key' に秘密鍵を指定します。
    # './' で始めることで、docker-compose.ymlからの相対パスで指定可能です。
    - ./path/to/server.crt:/etc/nginx/cert/ssl.crt:ro
    - ./path/to/server.key:/etc/nginx/cert/ssl.key:ro
[root@ip-172-31-86-250 docker-jiji2]#

port

[root@ip-172-31-86-250 docker-jiji2]# lsof -i:80
[root@ip-172-31-86-250 docker-jiji2]# lsof -i:443
[root@ip-172-31-86-250 docker-jiji2]# lsof -i:8443
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 15565 root    4u  IPv6  57054      0t0  TCP *:pcsync-https (LISTEN)
[root@ip-172-31-86-250 docker-jiji2]# lsof -i:8080
[root@ip-172-31-86-250 docker-jiji2]#

Curl

[root@ip-172-31-86-250 docker-jiji2]# docker ps
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS                           NAMES
7d6e98e3c780        unageanu/jiji-nginx:latest   "nginx -g 'daemon of…"   17 minutes ago      Up 14 minutes       80/tcp, 0.0.0.0:8443->443/tcp   jiji_nginx
8ea497ef9ba5        unageanu/jiji:latest         "puma -C /app/jiji2/…"   17 minutes ago      Up 14 minutes       8080/tcp                        jiji_jiji
45770f817ba6        mongo:3.0.7                  "/entrypoint.sh mong…"   21 minutes ago      Up 14 minutes       0.0.0.0:27018->27017/tcp        jiji_mongodb
[root@ip-172-31-86-250 docker-jiji2]# docker exec -it jiji_jiji bash
root@8ea497ef9ba5:/# wget http://localhost:8080
--2019-06-02 00:47:02--  http://localhost:8080/
Resolving localhost (localhost)... 127.0.0.1, ::1
Connecting to localhost (localhost)|127.0.0.1|:8080... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://localhost:8080/static/html/index.html [following]
--2019-06-02 00:47:02--  http://localhost:8080/static/html/index.html
Reusing existing connection to localhost:8080.
HTTP request sent, awaiting response... 200 OK
Length: 683 [text/html]
Saving to: 'index.html'

index.html                                100%[=====================================================================================>]     683  --.-KB/s    in 0s

2019-06-02 00:47:02 (115 MB/s) - 'index.html' saved [683/683]

root@8ea497ef9ba5:/#
root@8ea497ef9ba5:/# cat index.html
<!DOCTYPE html><html><head><meta charset=utf-8><meta name=format-detection content="telephone=no"><meta name=msapplication-tap-highlight content=no><meta name=viewport content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi"><link rel=stylesheet type=text/css href=../css/main.css><link rel="shortcut icon" href=../images/favicon.ico type=image/vnd.microsoft.icon><link rel=icon href=../images/favicon.ico type=image/vnd.microsoft.icon><title>FX システムトレードフレームワーク「Jiji」</title></head><body><div id=main></div><script src=../js/main.js></script></body></html>root@8ea497ef9ba5:/#

自作のユーティリティ

エージェント内で使用する、自作の汎用ライブラリを作りたいと思っているのですが
エージェント作成画面で、「cross」「signals」といったユーティリティを作成することは可能ですか?
「trap_repeat_Ifdone_agent.rb」にあるように、エージェントの中に含める形でしょうか?

4本値の取得方法

素晴らしいツールありがとうございます。
サンプルの移動平均エージェントをRSIやmacdに書き換えて試させていただいています。
同じ要領でdmiを試そうとしたのですが、
def next_tick(tick)のtickには4本値が渡って来ないようでうまくいきません。
4本値はどのように取得すべきでしょうか?

one spec in back_test_repository_spec failed when run isolated spec.

run with

bundle exec rake spec SPEC=./spec/jiji/model/trading/back_test_repository_spec.rb:151

got

Failures:

  1) Jiji::Model::Trading::BackTestRepository テストが3つ登録されている場合 追加したテストは永続化され、再起動時に読み込まれる
     Failure/Error: expect(test.status).to eq :running

       expected: :running
            got: :finished

       (compared using ==)

       Diff:
       @@ -1,2 +1,2 @@
       -:running
       +:finished

     # /opt/dev/+github/unageanu/jiji2/spec/jiji/model/trading/back_test_repository_spec.rb:252:in `block (3 levels) in <top (required)>'

if execute whole spec file without line number

bundle exec rake spec SPEC=./spec/jiji/model/trading/back_test_repository_spec.rb

then got the different failure

Failures:

  1) Jiji::Model::Trading::BackTestRepository テストが3つ登録されている場合 追加したテストは永続化され、再起動時に読み込まれる
     Failure/Error: expect(status[:status]).to eq :running

       expected: :running
            got: :finished

       (compared using ==)

       Diff:
       @@ -1,2 +1,2 @@
       -:running
       +:finished

     # /opt/dev/+github/unageanu/jiji2/spec/jiji/model/trading/back_test_repository_spec.rb:254:in `block (3 levels) in <top (required)>'

OANDA海外での使用

OANDAJapanとはAPIの仕様が異なるのでしょうか?
試しにTokenを入力してみたのですが、動作しないようです。

決済価格のエラー

いつもお世話になっております。
バックテストにおいて以下の画像のように�注文内容に関わらず決まって注文から45秒後に決済される現象がたまに起こっています。
なにか原因がありましたらご教授よろしくお願いいたします。

2017-08-14 18 11 41

How does the future works?

I dont understand invoke_on_rmt_process, my understanding it is a async call to proccess in another thread, how the result returned immediately like sync?

#web/rmt_service.rb
    put '/agents' do
      agent_setting = load_body.map do |setting|
        setting.each_with_object({}) { |pair, r| r[pair[0].to_sym] = pair[1] }
      end
      result = invoke_on_rmt_process do |_trading_context, _queue|   <------here, why get result immediately
        rmt.update_agent_setting(agent_setting)
      end
      ok(result)
    end

Androidからアクセスできない

プログラムの問題ではないのかもしれませんが教えてください。
どうやってもAndroidからアクセスできないです。

ローカル端末のVMwareの中にUbuntuを入れ、各種設定して
ローカル上の別のWindowsマシンやWIFI上のApple系端末からはWebブラウザでアクセスできましたが、
何故かAndroid端末からアクセスできないです。
アクセス端末はAndroid 4.1.2の端末と4.4.2の端末でブラウザからアクセスを試みましたが
アクセスできませんでした。

SSLは無しでテストしていますが、有りでも動作端末ではちゃんと動作しました。

何かご存じのことがありましたら御教授お願いしたいです。

Signクラスの時間足について

Signで取得することができる各種インジケーターですが
日足、4時間足、1時間足のそれぞれの値を取得する方法はありますか?
例えば、

日足、4時間足、1時間足の全てで移動平均線が同方向のトレンドの場合に
トレンドフォローで建て玉する

のような使い方がしたいです。

CADJPYだけエージェントが動作しない。

同じエージェントを複数通貨ペアで動かしているのですが、何故かCADJPYだけ動作しなくなりました。
エラーログは特に出力されておらず、エージェントを消して入れ直しても駄目のようです。

物理ファイルの格納

エージェントから物理ファイルを読み込みたい、書き出したい

jiji/model/hogehoge/a.dat をエージェントで読み込みたい場合
エージェント上でのパスの指定はどこになりますでしょうか?
jiji/model/hogehoge/a.dat だとファイルが見つからないようです。

もしくはフルパス指定ではなく、カレントがあれば教えていただきたいです。
jiji/model/agents/builtin_files でしょうか?

Herokuでデプロイ出来ない。

Herokuにインストールしようとしたら、このようなメッセージが出てdeployに失敗します。
-----> Ruby app detected
-----> Compiling Ruby/Rack
Command: 'set -o pipefail; curl -L --fail --retry 5 --retry-delay 1 --connect-timeout 3 --max-time 30 https://s3-external-1.amazonaws.com/heroku-buildpack-ruby/heroku-18/ruby-2.3.8.tgz -s -o - | tar zxf - ' failed on attempt 1 of 3.
Command: 'set -o pipefail; curl -L --fail --retry 5 --retry-delay 1 --connect-timeout 3 --max-time 30 https://s3-external-1.amazonaws.com/heroku-buildpack-ruby/heroku-18/ruby-2.3.8.tgz -s -o - | tar zxf - ' failed on attempt 2 of 3.
!
! An error occurred while installing ruby-2.3.8
!
! This version of Ruby is not available on Heroku-18. The minimum supported version
! of Ruby on the Heroku-18 stack can found at:
!
! https://devcenter.heroku.com/articles/ruby-support#supported-runtimes
!
! Push rejected, failed to compile Ruby app.
! Push failed

使用しているエージェントが表示されない

取引状況や建玉一覧のページにて、ポジションを持つことになったエージェントを表示する欄がありますが、空欄であったり、「不明」と書かれており、表示されません。

2016-04-12 20 50 52

2016-04-12 20 51 04

エージェント自体は

class TrapRepeatIfDoneAgent

  include Jiji::Model::Agents::Agent

  def self.description
    <<-STR
トラップリピートイフダンのような注文を発行するエージェント
      STR
  end
  ...

ソース全文はこちら

のように書いているのですが、エージェントを表示させるために必要な記述などありますか?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.