Comments (9)
Jijiを使わずに決済されたポジションの損益が正しく反映されない、という認識でよいでしょうか?
現状ではこのような動作になります。決済されると、ポジション一覧から取得できなくなってしまうため、
Jijiの外で決済されると正しい損益が反映されません。(内部的には ロスト したという扱いになっています)
ご指摘の通り、transactions で履歴をたどって追跡すれば、正しい損益に修正することは可能ですが、現在は行ってません。
from jiji2.
はい,そうです。
すでにJiji外での取引履歴のあるアカウントでJijiを初起動すると,それまでの履歴が
Jijiを起動しっぱなしでJiJi外で取引すると,
「エージェント不明」として取り込まれてきますね。Jijiの外で建てたポジションが入り込んでしまう。
(Jiji専用アカウントを使うことを想定しておられるのだろうな,という想像はしていますが,偶発的にJiji外で取引をしてしまう事態は,あると思うのですよね……)
from jiji2.
「手動で建てたポジションにもアルゴリズムによる損切ルールを強制する」といったことができるように、Jijiの外で作成されたポジションもJijiで捕捉して処理できるようにしています。
なので、ご指摘の通り、本来はtransactionsをたどって正しい損益に更新するのが理想なのですが、現状では実装できてないです・・・。
from jiji2.
せっかくのgithubなので,少しずつコード眺めてます。しかしSinatraに不慣れでして……。
OANDA一蓮托生な設計にならないよう気を遣っておられるのもなんとなく伝わっておりまして,ロジックがなにやら internal とかいうところに詰め込んであることもあり,うーん,どうしたものかなというところですね。
リアクションありがとうございました。
from jiji2.
すみません,思い込みで事実誤認がありました。Jijiを止めていると思い込んでいたのですが,
「起動しっぱなしの状態で,Jiji外で取引をしたもの」について表題のような状況になっていました。
(コードのどこを読んでも過去の履歴を取り込んでいるところがなく,おかしいなおかしいなと思ってしまいました……)
なんと,生きているポジション(trade)のリアルタイム損益,APIで取れないんですね……なんてこった……fxTradeとやらのUIには表示されるのになー
あれっ,とすると,実はこれJiji経由で建てたポジションについてもおんなじ現象になったりしませんか?
クロス円ではないポジション(たとえばEUR/USD)については, Jiji::Model::Trading::Internal::PositionInternalFunctions.calculate_profit_or_loss
で,その時のクロス円レート(USD/JPY)を参照して掛け算し続けないといけないのでは……(ペアによっては割り算)。
建てたときのポジション評価額(円換算)も計算して覚えておかないといけない。
(編集: 寝言を言いました。そんなことをしたら,初めからクロス円で建てたのと同じなってしまいます)
(いずれにしても,interest分のズレとかも気にし始めると気になるので,やはり履歴が取れるブローカーからは履歴を取って,後でつじつま合わせをするのが望ましいですかね)
ちょっとやる気になったのですがSinatraもMongoDBも勝手がよくわからなくて,すみません!(:3 _ )=
from jiji2.
クロス円ではないポジションについては, Jiji::Model::Trading::Internal::PositionInternalFunctions.calculate_profit_or_loss で,その時のクロス円レート(USD/JPY)を参照して掛け算し続けないといけないのでは……(ペアによっては割り算)。
あー、これは不具合ですね。非クロス円のポジションの損益計算で考慮漏れしています。。
ご指摘ありがとうございます。これは明確な不具合なので直したいと思います。
from jiji2.
損益の計算方法って、これであっていますでしょうか?
http://jp.forex.com/jp/learn/profit_loss.shtml
ここで使われている「相対通貨の対円レート」は、(ポジション作成時ではなく)現在の対円レートのように読めます。この通りなら、ポジションを作成した時点の対円レートを記憶しておく必要はないような気がするのですが、どうでしょうか?
いろいろ、ややこしいですね・・・
from jiji2.
すみません,寝ぼけたことを言いました。(ここ数日,思い込みが激しいみたいで。お察しかと思いますが,まだ私はJiji経由の取引ということをひとつもしていません。怪しいことを言っていたらごめんなさい。)
損益を「建てたときの円換算評価額と,決済時の円換算評価額の差」と定義してしまったら,これは初めからクロス円で取引したのと同じことですね。
正しくは,含み損益も必要証拠金も,あくまで分母側通貨(決済通貨,相対通貨)建てで計算し,生きているポジションの円建て評価額は単に評価する瞬間の対円レート(※)を掛ける。決済のタイミングでは,決済時の対円レートで口座残高にrealizeされる,ということでなければなりません。(ほんとかな……)
(※)あとは,そのレートってmidなの? それとも「損ならask,益ならbid」とかなの? みたいなところは気になります。調べてみるか。。
from jiji2.
以下の修正を行った Jiji v.1.0.12 をリリースしました。
-
- ポジションの通貨ペアがクロス円でない場合の損益計算の不具合を修正。
-
- Jijiからポジションを決裁したときに、レスポンスとして返される損益をポジションに反映するように変更。
2に関して、以下の場合には同期が行われませんので、ローカルでの損益計算結果がそのまま使われます。
- 新規注文で既存のポジションが決済/部分的に決済された場合
- OANDA のツールを利用するなどして、 Jijiの外でポジションを決済した場合
上記の場合、正しい損益はOANDAのツールを利用して確認してください。
from jiji2.
Related Issues (20)
- How does the future works? HOT 2
- Rake spec should include sample_agents/spec HOT 4
- what's the benefits using process.post_exec{...}.value? HOT 1
- Question about tradeReduced. HOT 5
- CADJPYだけエージェントが動作しない。 HOT 6
- 現在の足のN本前から(N+M)本前までの期間Mの移動平均求める方法 HOT 2
- one spec in back_test_repository_spec failed when run isolated spec. HOT 1
- Can you support an agent in simple ruby file instead of text in mongo HOT 1
- next_tickの間隔について HOT 25
- If I create buy_limit order, where can I saw it? HOT 1
- Can I specific interval for agent in live trade? HOT 1
- リアルトレードとバックテスト実施中にMongoDBのエラーが発生しました HOT 2
- 通貨違いのエージェントを複数実行させた時にそれぞれ通貨でグラフを描画することは可能でしょうか HOT 3
- 初期化処理(post_create)について HOT 4
- Herokuでデプロイ出来ない。 HOT 1
- 初期設定:証券会社の設定 でエラー HOT 2
- MARKET_IF_TOUCHED_ORDER_REJECT HOT 4
- AWSとDockerを利用したシステムのセットアップにて躓きます HOT 10
- Docker for WindowsでOANDAに接続できない HOT 2
- [include Mongoid::Document]でエラーが発生 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jiji2.