Giter Club home page Giter Club logo

Comments (9)

unageanu avatar unageanu commented on July 21, 2024

Jijiを使わずに決済されたポジションの損益が正しく反映されない、という認識でよいでしょうか?

現状ではこのような動作になります。決済されると、ポジション一覧から取得できなくなってしまうため、
Jijiの外で決済されると正しい損益が反映されません。(内部的には ロスト したという扱いになっています)

ご指摘の通り、transactions で履歴をたどって追跡すれば、正しい損益に修正することは可能ですが、現在は行ってません。

from jiji2.

ippeif avatar ippeif commented on July 21, 2024

はい,そうです。
すでにJiji外での取引履歴のあるアカウントでJijiを初起動すると,それまでの履歴が
Jijiを起動しっぱなしでJiJi外で取引すると,
「エージェント不明」として取り込まれてきますね。Jijiの外で建てたポジションが入り込んでしまう。
(Jiji専用アカウントを使うことを想定しておられるのだろうな,という想像はしていますが,偶発的にJiji外で取引をしてしまう事態は,あると思うのですよね……)

from jiji2.

unageanu avatar unageanu commented on July 21, 2024

「手動で建てたポジションにもアルゴリズムによる損切ルールを強制する」といったことができるように、Jijiの外で作成されたポジションもJijiで捕捉して処理できるようにしています。

なので、ご指摘の通り、本来はtransactionsをたどって正しい損益に更新するのが理想なのですが、現状では実装できてないです・・・。

from jiji2.

ippeif avatar ippeif commented on July 21, 2024

せっかくのgithubなので,少しずつコード眺めてます。しかしSinatraに不慣れでして……。
OANDA一蓮托生な設計にならないよう気を遣っておられるのもなんとなく伝わっておりまして,ロジックがなにやら internal とかいうところに詰め込んであることもあり,うーん,どうしたものかなというところですね。
リアクションありがとうございました。

from jiji2.

ippeif avatar ippeif commented on July 21, 2024

すみません,思い込みで事実誤認がありました。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.

unageanu avatar unageanu commented on July 21, 2024

クロス円ではないポジションについては, Jiji::Model::Trading::Internal::PositionInternalFunctions.calculate_profit_or_loss で,その時のクロス円レート(USD/JPY)を参照して掛け算し続けないといけないのでは……(ペアによっては割り算)。

あー、これは不具合ですね。非クロス円のポジションの損益計算で考慮漏れしています。。
ご指摘ありがとうございます。これは明確な不具合なので直したいと思います。

from jiji2.

unageanu avatar unageanu commented on July 21, 2024

損益の計算方法って、これであっていますでしょうか?
http://jp.forex.com/jp/learn/profit_loss.shtml

ここで使われている「相対通貨の対円レート」は、(ポジション作成時ではなく)現在の対円レートのように読めます。この通りなら、ポジションを作成した時点の対円レートを記憶しておく必要はないような気がするのですが、どうでしょうか?

いろいろ、ややこしいですね・・・

from jiji2.

ippeif avatar ippeif commented on July 21, 2024

すみません,寝ぼけたことを言いました。(ここ数日,思い込みが激しいみたいで。お察しかと思いますが,まだ私はJiji経由の取引ということをひとつもしていません。怪しいことを言っていたらごめんなさい。)
損益を「建てたときの円換算評価額と,決済時の円換算評価額の差」と定義してしまったら,これは初めからクロス円で取引したのと同じことですね。
正しくは,含み損益も必要証拠金も,あくまで分母側通貨(決済通貨,相対通貨)建てで計算し,生きているポジションの円建て評価額は単に評価する瞬間の対円レート(※)を掛ける。決済のタイミングでは,決済時の対円レートで口座残高にrealizeされる,ということでなければなりません。(ほんとかな……)

(※)あとは,そのレートってmidなの? それとも「損ならask,益ならbid」とかなの? みたいなところは気になります。調べてみるか。。

from jiji2.

unageanu avatar unageanu commented on July 21, 2024

以下の修正を行った Jiji v.1.0.12 をリリースしました。

    1. ポジションの通貨ペアがクロス円でない場合の損益計算の不具合を修正。
    1. Jijiからポジションを決裁したときに、レスポンスとして返される損益をポジションに反映するように変更。

2に関して、以下の場合には同期が行われませんので、ローカルでの損益計算結果がそのまま使われます。

  • 新規注文で既存のポジションが決済/部分的に決済された場合
  • OANDA のツールを利用するなどして、 Jijiの外でポジションを決済した場合

上記の場合、正しい損益はOANDAのツールを利用して確認してください。

from jiji2.

Related Issues (20)

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.