Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

バックテストの一括登録 #86

Open
Yasushi-cc opened this issue Jun 21, 2016 · 5 comments
Open

バックテストの一括登録 #86

Yasushi-cc opened this issue Jun 21, 2016 · 5 comments

Comments

@Yasushi-cc
Copy link

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

2点質問がございます。

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

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

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

@unageanu
Copy link
Owner

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

旧バージョンと同様にREST APIの「POST /backtest」を呼び出すことで登録は可能です。ただ、ドキュメント等は用意できていません。REST APIのテストケースで呼び出しているところがあるので、こちらが参考になるかもしれません。
https://github.com/unageanu/jiji2/blob/master/rest_spec/trading/backtest_spec.rb#L12

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

バックテストのスレッド数は以下で定義しています。
https://github.com/unageanu/jiji2/blob/master/src/jiji/composing/configurators/model/trading_configurator.rb#L43

ここを変更することで複数スレッドで並列実行することはできるはずですが、動作確認は十分ではないので自己責任でお試しください。また、Rubyの特性として、スレッドを増やすだけではマルチコアCPUを使い切ることはできないハズなので、効果がどれだけあるかも不明です。(たしか、プロセスレベルで並列化しないといけないはず。それでもOANDAとの通信部分は並列化できそうなので、多少は効果があるとは思います。)

@Yasushi-cc
Copy link
Author

ご回答いただきありがとうございます。

「POST /backtest」を呼び出すことで登録可能とのこと、スクリプトを作成して実行してみます。
また、スレッド数についても変更して実行してみたいと思います。

ありがとうございました。

@Yasushi-cc
Copy link
Author

Yasushi-cc commented Jun 25, 2016

REST APIの「POST /backtest」を呼び出すことでバックテストが可能とのご回答をいただきましたので、
試しているのですが、うまく動かせていない状態です。 お手数かけますが、お教え願えますでしょうか。
Dockerにインストールして実行しております。

下記のURIにPOSTしているのですが、<h1>Not Found</h1> が返ってくるため、うまくアクセスできていないようです。 パスワード認証等、何か設定が必要かと思うのですが、お教え願えますでしょうか。

http://<インストール先ホスト>:<docker-compose.ymlで設定したJijiのポート/デフォルトは8080>/backtest

何卒宜しくお願い致します。

@unageanu
Copy link
Owner

unageanu commented Jun 25, 2016

すみません、URLは、正確には以下になります。(/api/ が必要です。また、 backtest は複数形でした。)

http://<インストール先ホスト>:<docker-compose.ymlで設定したJijiのポート/デフォルトは8080>/api/backtests

リクエストボディは JSON or MessagePack が利用できますがJSON形式の方が簡単かと。

{
  "name": "テスト",
  "start_time" : "2016-06-17T15:00:00.000Z",
  "end_time" : "2016-06-18T15:00:00.000Z",
  "memo" : "メモ",
  "pair_names" : ["EURJPY", "EURUSD"],
  "balance" : 1000000,
  "agent_setting" : [
    {
      "agent_class": "TestAgent1@テスト1",
      "agent_name":  "テスト1",
      "properties":  { "a" : 1, "b" : "bb" }
    }
  ]
}

また、リクエストヘッダでリクエストボディの形式と認証トークン(詳細は後述)を指定する必要があります。

Accept: application/json
Content-Type: application/json
Authorization: X-JIJI-AUTHENTICATE <認証トークン:例)aab001f00988fba9635ca9f4b70a032ad8e91fc972679b57d66ef5c5b089399eb2>

認証トークンは、以下のURLにPOSTリクエストを送付することで得られます。

URL:

POST http://<インストール先ホスト>:<ポート>/api/authenticator

リクエストヘッダ:

Accept: application/json
Content-Type: application/json

リクエストボディ:

{
   password: '<パスワード>'
}

これでどうでしょうか?

@Yasushi-cc
Copy link
Author

ありがとうございます。
POST /api/backtests できました。
今後とも宜しくお願い致します。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants