unageanu / jiji2 Goto Github PK
View Code? Open in Web Editor NEWForex algorithmic trading framework using OANDA REST API.
Home Page: http://jiji2.unageanu.net/
Forex algorithmic trading framework using OANDA REST API.
Home Page: http://jiji2.unageanu.net/
ボリンジャーバンドの傾きを「Signals::BollingerBands」を用いて取得した値から導出し、
その傾きを売買判定に使用したいと思っていますが、傾きの取得部分が実装できず困っています。
表題の機能の実装方法をご教示頂けないでしょうか。
素晴らしいシステムトレードフレームワーク、ありがとうございます。
初心者なのですが質問がございます。
next_tickの行われる間隔を15秒からより長い時間に変更することはできるのでしょうか?
#324 #175 を参照させていただきましたが解決に至らなかったので質問させていただきます。
こちらのページを参考に設定を行っているのですが、
URLにてアクセスの部分で躓いております。ブラウザ上で表示できません。
上記2つを参考に切り分けて見たのですが、原因がわからず
対処方法をご教授願いたいです。
[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]#
[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]#
[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:/#
現在、、、、
http://qiita.com/jiji_platform/items/268377c542706e6f44b1
このシステムを取り入れようとしてまして
設定ファイルの編集のところで
をしているところで、./docker-compose.ymlを開きたいのですが、開きません
「No such file or directory」と記載されます。
すいません
初心者のもので、、、、
ご教授のほどよろしくお願いします。
OANDAJapanとはAPIの仕様が異なるのでしょうか?
試しにTokenを入力してみたのですが、動作しないようです。
コンテナの作成には成功するのですが、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です。
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
表題につきまして、自力で解決できませんでしたので、こちらに記載させていただきます。
現在、オーダー発行について、
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下"などと指定する方法はあるのでしょうか?
合わせてご教示頂けたら幸いです。
よろしくお願い致します。
現在の足のN本前から(N+M)本前までの期間Mの移動平均を求める方法を教えて下さい。
①エージェントに置いてあるsignals.rbを修正してみましたが、ビルドインのsigals.rbが動作しているようで修正が反映されません。
②方法は何でもよいので他の方法があれば教えてください。
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
unageanu様
JIJI2で大変お世話になっております。
おかげさまで、様々なトレードアルゴリズムを考えることができています。
ご相談ですが・・・
module Signalsの中にRSIの算出関数はあるのですが、RCIが無いようです。
RCIもよく参照する指標のため、RCIの算出関数も盛り込んでいただけますと、
非常に助かります。
大変お忙しい中申し訳ないですが、何卒ご検討よろしくお願いいたします。
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
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)>'
Rt
AgentSource will create agent source in db, it's very hard to debug or trace when agent grows up.
how can I just add a simple ruby file include agents to codebase, so can debug step by step?
OandaAPI からのレスポンスが帰ってこないとの例外処理を拾っていないため、アプリケーションが落ちてしまうようです。
該当行の処理に対して、 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'
昨日に続き、もう1点教えていただけますでしょうか。
以下の2つのエージェントを実行させた際、
グラフが片方の通貨しか表示されないのですが、
両通貨でグラフを表示させることは可能でしょうか。
今、手元で fork して spec を全部走らせてみたのですが、
だけ、必ず失敗してしまいます。
5つの Jiji::Model::Notification::Notification
を作った後に、 3つの Jiji::Model::Notification::Notification
レコードが存在することを確認していますが、どういう処理を行ったうえで、2つのオブジェクトが count
の対象から外れる感じでしょうか。
issue に立てるべき内容かアヤシイですが、ご教授いただけると嬉しいです。
前回はnext_tickの間隔を変える方法についてご教授いただきありがとうございました。
現在、Herokuのhobbyプランを使って、next_tickの間隔を6-10h程度にしたエージェントを
プラクティスの講座で動かしています。
next_tickやpost_createのところにloggerを入れて見ているのですが、next_tickの間隔はうまくコントロールできている一方で、1日1回必ずpost_createされています。
ここで質問なのですが、
post_createされた直後の一番最初のnext_tickは、ただレートを受け取るだけで、前日の最後のnext_tickのレートと比較してCross upやdownの判断をすることはないですよね?
1.の質問のようにシステムが動くとすると、1日1回 post_createされた直後のnext_tick一回分、取引のチャンスが無駄になってしまうと思うのですが、なんとかそれを回避する方法はないでしょうか。
(restore stateを使えば良いのでしょうか? もしそうであれば、エージェントへのオーバーライドの仕方を教えていただけませんか?)
お手数をおかけしますが、宜しくお願い致します。
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
突然すみません。お手すきの際で良いので確認させて下さい。
Issuesというか質問なのですが、表題の件ですが動くのでしょうか。
貴重な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'
Signで取得することができる各種インジケーターですが
日足、4時間足、1時間足のそれぞれの値を取得する方法はありますか?
例えば、
日足、4時間足、1時間足の全てで移動平均線が同方向のトレンドの場合に
トレンドフォローで建て玉する
のような使い方がしたいです。
プログラムの問題ではないのかもしれませんが教えてください。
どうやってもAndroidからアクセスできないです。
ローカル端末のVMwareの中にUbuntuを入れ、各種設定して
ローカル上の別のWindowsマシンやWIFI上のApple系端末からはWebブラウザでアクセスできましたが、
何故かAndroid端末からアクセスできないです。
アクセス端末はAndroid 4.1.2の端末と4.4.2の端末でブラウザからアクセスを試みましたが
アクセスできませんでした。
SSLは無しでテストしていますが、有りでも動作端末ではちゃんと動作しました。
何かご存じのことがありましたら御教授お願いしたいです。
同じエージェントを複数通貨ペアで動かしているのですが、何故かCADJPYだけ動作しなくなりました。
エラーログは特に出力されておらず、エージェントを消して入れ直しても駄目のようです。
jiji停止中に jiji外で 決済された非クロス円ポジションの損益計算が正しくない
インストールして動かしてみました。
jiji外での取引データを取り込んで履歴を構築してくれる機能がありますが(/positions の表示まわり),
非クロス円ポジションの損益計算が正しくないです。
たとえば EUR/USD とか AUD/CAD とかの取引ログがまじっていると,集計の数字がめっちゃくちゃになってしまいます。
ここはブローカー側から実現損益の値を取得するのが筋のように思います。
(概算であれば,決済時刻におけるレートを取得して円に換算することもできそうですが)
oanda_api gemのオブジェクトでいうと OandaAPI::Resource::Transaction#pl
がそれだと思います。
OandaAPI::Resource::Transaction#account_balance
も役に立つかもしれません。
ご検討ください……。
こんにちは。
herokuにインストールしたjiji2がAplication errorで開くことができません。
(2周間ほど前は問題なくopen appで起動できました)
また、新しくデプロイしてみたのですが
「サーバーが混雑しています。しばらく待ってからやり直してください。」
というメッセージが出てきてチャートの更新等が行われません。
考えられる原因をご教授していただけないでしょうか?
(OANDAの問題でしょうか?)
APIはOANDAのデモアカウントのもの使用しています。
よろしくお願いします。
position list only show position, where the pending order list?
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'
よろしくお願いいたします。
素晴らしいツールありがとうございます。
サンプルの移動平均エージェントをRSIやmacdに書き換えて試させていただいています。
同じ要領でdmiを試そうとしたのですが、
def next_tick(tick)のtickには4本値が渡って来ないようでうまくいきません。
4本値はどのように取得すべきでしょうか?
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)>'
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?
エージェントから物理ファイルを読み込みたい、書き出したい
jiji/model/hogehoge/a.dat
をエージェントで読み込みたい場合
エージェント上でのパスの指定はどこになりますでしょうか?
jiji/model/hogehoge/a.dat
だとファイルが見つからないようです。
もしくはフルパス指定ではなく、カレントがあれば教えていただきたいです。
jiji/model/agents/builtin_files
でしょうか?
要望や質問は日本語でOKですか?
エージェントのソースに[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'
以下略
お世話になります。
表題の件、ご教示くださいませ。
現在の状況としては、
以下、コードの一部を転記します
require 'logger'
@logger = Logger.new(STDOUT)
@logger.level = Logger::DEBUG
@logger.debug '*** ログテスト ***'
jijiのバージョンは確認方法がわかりませんでしたが、
tensorflow連携サンプルのgitリポジトリをベースにしております。
以上、よろしくお願いいたします。
素晴らしいシステムトレードフレームワーク、ありがとうございます。
2点質問がございます。
①バックテストを一括投入することは可能でしょうか。
jiji(1)では、下記の方法で行えておりましたが、jiji2でも可能でしょうか。
②複数のバックテストを並列に実行することはできますでしょうか。
マルチコアCPUを活用して複数のバックテストを実行できれば大変助かります。
何卒よろしくお願いいたします。
大変よいフレームワークありがとうございます。
さて、現在「MovingAverageAgent@moving_average_agent.rb」を元に独自にAgentを作成しております。あらかた出来上がりまして、バックテストに必要項目を選択して、開始したところ上記のようなメッセージが出て、前に進めません。必要項目は全て入力していますので、作成したAgentの問題かと思われるのですが、何かヒントのようなものをいただけるとありがたいのですが...
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は不要なのでしょうか?
I found the Future implement is not async call, process.post_exec{...}.value
will block the main thread, so why are we using it? what's the point? or why are we using thread mode?
下記のようなエラーメッセージが表示され、注文が通りません。
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'
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.
取引状況や建玉一覧のページにて、ポジションを持つことになったエージェントを表示する欄がありますが、空欄であったり、「不明」と書かれており、表示されません。
エージェント自体は
class TrapRepeatIfDoneAgent
include Jiji::Model::Agents::Agent
def self.description
<<-STR
トラップリピートイフダンのような注文を発行するエージェント
STR
end
...
のように書いているのですが、エージェントを表示させるために必要な記述などありますか?
エージェント内で使用する、自作の汎用ライブラリを作りたいと思っているのですが
エージェント作成画面で、「cross」「signals」といったユーティリティを作成することは可能ですか?
「trap_repeat_Ifdone_agent.rb」にあるように、エージェントの中に含める形でしょうか?
I know many exceptions is part of test case, but the stacktrace emded in rspec output is really mess.
はじめまして、非常に面白そう!と思い、試してみたのですが、下記エラー出ました。
お知恵をいただければと思います。
■事象
・初期設定で、「証券会社の設定」が完了しません
デモ口座で試しており、発行されたPersonal Access Tokenを設定しましたが、この画像のようなメッセージが出て、設定が完了しませんでした。
$ 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:innot_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:intick' /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:inbefore_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:indo_next_job' /app/jiji2/src/jiji/model/trading/process.rb:28:in
run'
/app/jiji2/src/jiji/model/trading/process.rb:22:inblock 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:inblock (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を取得.
公開された手順通りにHerokuにインストールした直後、デフォルトの設定でバックテストを実行したのですが、エラーになってしまい下記のようなログが出ております。
何かやり方が間違っていますでしょうか?
E, [2016-09-07T23:25:34.573397 #3] ERROR -- : undefined method
bid' for nil:NilClass (NoMethodError) agent/moving_average_agent.rb:45:in
block in next_tick'
agent/moving_average_agent.rb:45:inmap' agent/moving_average_agent.rb:45:in
next_tick'
/app/src/jiji/model/agents/agents.rb:35:inblock in next_tick' /app/src/jiji/model/agents/agents.rb:33:in
each'
/app/src/jiji/model/agents/agents.rb:33:innext_tick' /app/src/jiji/model/trading/jobs/notify_next_tick_job.rb:17:in
exec'
/app/src/jiji/model/trading/jobs/notify_next_tick_job.rb:74:inexec' /app/src/jiji/model/trading/process.rb:37:in
do_next_job'
/app/src/jiji/model/trading/process.rb:30:inrun' /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:incall' /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:inblock (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'
よろしくお願いします。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.