アービトラージ戦略の作成とテスト - ページ 7

 
pronych:
わかりました。この足で指値注文をしに行く時の話になりますが))
そうですね、指値注文の群れをコントロールするのはちょっと難しいかもしれませんね ))
 

新しいトピックを立ち上げます。

この問題は、裁定取引のポジションの流動性を定義する際に発生する可能性があります。
ベストバンドでクロスペアの流動性を米ドル単位で正しく再計算する方法(とその理由)を教えてください。

1)基準通貨での 主要通貨を通じて直接
2) 主要通貨建ての場合

例)EURCHF Best Bundの出来高は200万単位。このボリュームはUSDで確認する必要があります。どうすればいいのでしょうか?EURUSDのティッカーを見て、200万ユーロがいくらか試算してみる。それとも、現在の為替レートでCHFの出来高を推定し、USDCHFダイヤルを使ってUSDでの出来高を計算するのでしょうか?

 
GaryKa:

新しいトピックを立ち上げます。

この問題は、裁定取引のポジションの流動性を定義する際に発生する可能性があります。
ベストバンドでクロスペアの流動性を米ドル単位で正しく再計算する方法(とその理由)を教えてください。

1)基準通貨での 主要通貨を通じて直接
2) 主要通貨建ての場合

例)EURCHF Best Bundの出来高は200万単位。このボリュームはUSDで確認する必要があります。どうすればいいのでしょうか?EURUSDのティッカーを見て、200万ユーロがいくらか試算してみる。それとも、現在の為替レートでCHFの出来高を推定し、USDCHFダイヤルを使ってUSDでの出来高を計算するのでしょうか?

そして、ティックの価値を通して、違う?
 

TickValueによる解決策を拝見しました。しかし、このケースは一般的なものであり(MTではない)、しかも、正直なところ、TickValueを操作すると頭が痛くなるのです。覚えやすいような、シンプルな説明が欲しいです。

今のところこんな感じです。

Askのギャングでは、売りに出しているので、売り手は商品(基本通貨)を持っています。私たちは、そのコストを別の引用通貨(USD)で計算するだけです。ビッドバンクの反対側では、購入可能な商品はないが、資金(引用通貨)はある。対応するメジャーを通じて、これらの資金を再計算してください。

合計

  • アスク・ギャング・カウント(1)方法について
  • ビッドギャングについては、(2)の方法で計算する。
 
冗談だろう...あるいは、何を言っているのか理解できない。つまり、例えばEURUSDの1ロットの出来高は、他のシンボルの1ロットの出来高と同じだとお考えですか?
 
GaryKa:...つまり、例えばEURUSDの1ロットのボリュームは、他のシンボルの1ロットと同じだとお考えですか?

基準通貨が 同じペアの場合、単位が同じなので、ロットでの比較は問題ありません。例えば、EURCHFとEURUSDのボリューム。


papaklass

一部の売り手EURUSD ASKバンド= 2.0万、すなわち売り手は2 000 000 / 100000 = EURの20 ロットを販売し、2 000 000 / 136345 = USDの14.67ロットを購入したいと考えています。

他のGBPUSDの売り手のASK-band = 350万、すなわち売り手は3 500 000 / 100000 = 35 ロットのGBPを売り、3 500 000 / 164349 = 21.3 ロットの米ドルを買いたいと考えています。

その結果、現時点では、ユーロとポンドで 14.67 + 21.3 = 35.97 ロットの米ドルを購入したいことがわかります。 この方法で、どの通貨でも計算することができます。

この例では、同じクォート通貨を持つ主要なペアがあります。eur20枚、pound35枚というロット単位での比較はできないので、USDロットに換算して14.67枚、21.3枚とし、すでに比較可能な数量としました。


質問が少し違っていた?クロスペアの体積はどのように計算するのですか?ロットありでもなしでもいいから見せてくれ。例えば、EURCHFとAUDNZDの出来高を比較するにはどうしたらよいでしょうか。

GaryKa:・・・。クロス ペアのベストバンドの流動性を米ドル単位で正しく再計算する方法(その理由も教えてください。)
 

ここで 裁定ポジションのもう一つの選択肢として、共通単位に変換することなく、できるだけ多くの流動性を取引するために、各シンボルのロットを計算することです。

A/B型、B/C型、C/A型の三角形のアービトラージがあるとします。

1) 最初のシンボルから最後のシンボルまで始める。最初のペアでボリュームAを取り(A/Bのオーダーサイズとして覚えておく)、ボリュームBを計算する(AをBに変換する)。得られた体積がB/Cより大きければ2へ、小さければこの体積を記憶し(B/Cのオーダーサイズとして)、Cを計算し、比較する、など。連鎖の末端に到達することに成功した→すでに注文のボリュームがある、出口。

2) サイクリックシフトを行い(A/B, B/C, C/A が B/C, C/A, A/B になりました)、1)に戻る。

 
papaklass:...これらの通貨の数量は、ポジションの開始時に必要な担保を通して表現します。したがって、これらの通貨のドル建て数量を取得し、比較する。
良い提案ですね。

もし、米ドル預金通貨でいくら証拠金が差し引かれる(しなければならない)のか、自分で計算してみましょう。

- EURCHFを1ロット買いたいのですが、どうしたらいいですか?
EURCHFを買うとは、CHFでEURを買うことです。私たちはCHFを持っていません。借りるか、自分たちで買うか(1対1のレバレッジで)。つまり、USD(預金)があり、EURを買うためにCHFを買わなければならない(CHFでクレジットが使える場合は買わない)のである。つまり、EURCHFを買うためには、市場価格(最悪の場合)で、本当に(レバレッジ1:1)または事実上USDCHFを売る(預金からUSDを売り、CHFを買う)必要があるということです。

- EURCHFを1ロット売りたいのですが、どうしたらいいですか?
EURCHFの売りは、CHFのためにEURを売ることです。EURは持っていない(売るものがない)。借りるか、自分たちで買うか(1対1のレバレッジで)。つまり、私たちはUSD(預金)を持っていて、CHFを買うためにEURを買わなければならない(EURで信用供与された場合は買わない)のである。つまり、EURCHFを売るためには、EURUSDを実際に(レバレッジ1:1)、または仮想的に(預託金からUSDを売ってEURを買う)、市場(最悪のケース)価格で買わなければならない。

結論から言うと
  • EURCHFを購入する場合、信用のための米ドルマージンはUSDCHFの価格を使用して計算する必要があります。
  • EURCHFの売りの場合、信用のための米ドル証拠金はEURUSDの価格を使用して計算する必要があります。


では、コードを確認してみましょう。私見ですが、この関数には、取引の方向性に責任を持つような引数が欠けていると思います。変数marginCurrencyが あり、これは常にベース通貨として定義されています。従って、EURCHFの売りと買いの両方の証拠金は、常に EURUSDを通して計算されます。

   string marginCurrency = StringSubstr( StringTrimLeft( smb ), 0, 3 );

...


   if( calcCurrency == "" ){
      calcCurrency = GetSymbolByCurrencies( marginCurrency, accCurrency );
      mode = true;
     
      if( calcCurrency == "NULL" ){
         calcCurrency = GetSymbolByCurrencies( accCurrency, marginCurrency );
         mode = false;
      }
   }


追伸:特に以前から同様の主張が あったので、今のマージン計算がMTの計算とどの程度一致しているのか気になるところです。

 
papaklass:

沈黙から判断すると、すべてが明らかになっているわけではありません。

クロスペアの体積はどのように計算するのですか?ロットありでもなしでもいいから見せてくれ。例えば、EURCHFとAUDNZDの出来高を比較 するとどうでしょうか。"

ロットの違いを知るために、主要通貨のレートを分子で割っています。誓約通貨とは、分子に含まれる通貨です。

EURUSD / AUDUSD -> 1.36368 / 0.90639 = 1.50451, すなわち、 開設 するAUDNZDポジションの 数量はEURCHFの1.50倍である必要があります。

なぜメジャーを分けたのか?

この投稿は理解できません。つまり、AUDNZD(ドル建て)の出来高は EURCHF(ドル建て )の出来高の 約1.5 倍という結論になるわけです。そうだろ?

 
papaklass: ...さて、マージン計算のコードについてです。詳しくコメントさせていただきました。読みにくい、わかりにくくないですか?マージンは別の関数で計算される...コメント「//指定した方向の現在の価格を受け取る」の後のコードを見てください。

papaklass 落ち着かないと口論になりますよ。私はコメントする前にあなたのコードを見ましたが、あなたは私のコメントを見ましたか?慎重に?


あなたの計算方法に対する私の不満(EURCHFの計算の例で).

GaryKa:・・・。EURUSDを通じてEURCHFの売りと買いの両方のセキュリティを常に 計算します。

コメント "//fetch currentprice for specified direction" の後、 買いと売りの両方で常に 同じシンボルで価格を計算していますが、私は異なるシンボルでそれらを計算する必要があると考えています(上記の正当化)。

   prc = Dbl_If( dir == OP_BUY, MarketInfo( calcCurrency, MODE_ASK ),
                                MarketInfo( calcCurrency, MODE_BID ) );

EURCHFの例では、常にEURUSDを持って います。


追伸:余計なお世話でした、すみません

GaryKa:・・・。私の意見では、この関数は取引の方向性に責任があるであろう引数が欠けている ...