MetaTrader 5はどのように利益を計算するのですか?

 

簡単なスクリプトを実行する。

//+------------------------------------------------------------------+
//|                                                       profit.mq5 |
//+------------------------------------------------------------------+
string com;
string Sy[28]={"EURGBP","EURAUD","EURNZD","EURUSD","EURCAD","EURCHF","EURJPY","GBPAUD","GBPNZD","GBPUSD",
              "GBPCAD","GBPCHF","GBPJPY","AUDNZD","AUDUSD","AUDCAD","AUDCHF","AUDJPY","NZDUSD","NZDCAD",
              "NZDCHF","NZDJPY","USDCAD","USDCHF","USDJPY","CADCHF","CADJPY","CHFJPY"};
double a[28],b[28],BuyPlus[28],BuyMinus[28],SellPlus[28],SellMinus[28];
double diff=0.001;

void OnStart()
  {com="";
   for(int i=0;i<28;i++)
      {b[i]=SymbolInfoDouble(Sy[i],SYMBOL_BID);a[i]=SymbolInfoDouble(Sy[i],SYMBOL_ASK);
       OrderCalcProfit(ORDER_TYPE_BUY,Sy[i],1.0,a[i],a[i]+diff,BuyPlus[i]);
       OrderCalcProfit(ORDER_TYPE_BUY,Sy[i],1.0,a[i],a[i]-diff,BuyMinus[i]);
       OrderCalcProfit(ORDER_TYPE_SELL,Sy[i],1.0,b[i],b[i]+diff,SellPlus[i]);
       OrderCalcProfit(ORDER_TYPE_SELL,Sy[i],1.0,b[i],b[i]-diff,SellMinus[i]);
       
       com=com+"\n"+Sy[i]+"  BuyPlus="  +DoubleToString(BuyPlus[i],4)
                         +"  BuyMinus=" +DoubleToString(BuyMinus[i],4)
                         +"  SellPlus=" +DoubleToString(SellPlus[i],4)
                         +"  SellMinus="+DoubleToString(SellMinus[i],4);
      }//for
   Comment(com);
  }//start

エラーがはっきり見える...

問題はSYMBOL_TRADE_TICK_VALUE_PROFITとSYMBOL_TRADE_TICK_VALUE_LOSSに 起因しているはずです。

SYMBOL_TRADE_TICK_VALUE_LONGとSYMBOL_TRADE_TICK_VALUE_SHORTが 必要です

検索してみると、面白いことがわかりました。

Renat:

Я вчера, когда смотрел код, неверно выразился по поводу разной стоимость пункта в зависимости от направления.

Точнее сказать, что TickValue при конвертации в целевую валюту зависит от того, убыточна она или нет. То есть, если мы получили убыток в 1 пипс, то нам надо его выкупить по цене Ask, а если прибыль в 1 пипс, то продать по цене Bid.


もちろん、これは間違っている。ショートポジションの場合は、価格が逆になる...。

本当に不本意なミスであることを祈るばかりです訂正してもらえますか、お願いします!

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 

残念ながら、質問が明確にされておらず、提案された例からの結論も出ていない。具体的に何がエラーなのかがわからない。

質問を正確に定式化し、得られた結果を添付し、そのどこに誤りがあるのか、示してください。

例えば、ここでエラーが発生している箇所を示す。

EURGBP  BuyPlus=158.40000000  BuyMinus=-158.48000000  SellPlus=-158.48000000  SellMinus=158.40000000  Profit=1.58398000  Loss=1.58482000

最後にSYMBOL_TRADE_TICK_VALUE_PROFITと SYMBOL_TRADE_TICK_VALUE_LOSSの値を追加しています。

利益には、取引の収益性や損失に応じて、1ティックの異なる値が実際に考慮されていることがおわかりいただけると思います。これは、得られた財務結果をある通貨に変換するために売却(利益の場合)または買い戻し(損失の場合)しなければならないとき、預金通貨への暗黙の変換操作があるためである。

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 

 

ティックの価値は、取引の損益に左右されません。

利益と損失は同値で決済されます。変換は同じです。

ショートトレードとロングトレードのみ、ティックの値に差が生じ、入金通貨への 換算に異なるカウントをすることができます。

BuyPlusとBuyMinusの例は、イコールになる。セルプラス、セルマイナスも。You can only Buy....がSellと違うのは...。

あなたは何かを勘違いしています。

レナート

...売却(利益なら)、買い戻し(損失なら)、その結果の財務結果を1つの通貨で換算する必要があるとき。

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете - Документация по MQL5
 

EURGBPの取引を開始し、入金通貨が USDの場合、基本的には(おおよそ)EURUSDの買い、GBPUSDの売 りになります。(クローズしても変わらないので、音量の差は関係ない)

開設方法:EURUSDをAsk(EURUSD)で買い、GBPUSDをBid(GBPUSD)で売り

クローズ時(利益の場合、損失の場合)には、Bid(EURUSD) と Ask(GBPUSD) が同じ価格と なります。

利益/損失の ティック値が異なるのはなぜですか?

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете - Документация по MQL5
 

これは、開発者の長年の誤解が 招いた結果です。

Renat:

ターゲット通貨に変換する際のTickValueは、損切りかどうかで決まると言った方が正確でしょう。つまり、1pipの損失が出たらAsk価格で買い戻し、1pipの利益が出たらBid価格で売らなければならないのです。

 
Manov:

ティックの価値は 、取引が利益を生むか生まないかによって決まるものではありません。

利益と損失は同値で決済されます。換算すると、価格もそうなります。

それはそれでいいんです。

そのためには、複雑な相互 変換を伴う計算の数理を理解する必要があります。EURUSDやGBPUSDなどのメジャーで運用する限りは、何も表示されません。

そう、一見すると依存しないように見えるかもしれませんが、クロスを 詳細に調べると、依存することがわかります。

 
Renat:

それこそ、人それぞれです。

これは、実はムチャクチャな話なんです。レナートの論理は明快で、一見正しいようにさえ思える。

クロスオーバー・トレードを行うと、その基準通貨 で利益を得ることができます。例えば、EURGBPの 取引の利益はGBPで 測定されます。しかし、MT5には 多通貨の利益という概念がないため、GBPの利益は その場で口座通貨に変換されます。つまり、利益がプラスの場合は現在の為替レートGBPUSD_Bidに、マイナスの場合は-GBPUSD_Askに 変換する必要があるようです。

しかし、ここに反例が あります。

  1. 独立した2つのアカウントを持っています。一方から他方へ資金を移動させることにしたのですね。
  2. EURGBPの 場合、1つの口座でインサイドスプレッドを設定します。従って、入札価格は お客様のものとなります。
  3. もう一方の口座では、成行注文で「売り」を実行します。
  4. この簡単な操作で、あなたは自分自身に売り込んだことになるのです。
  5. しばらくして、あなたは取引を成立させることにしました。
  6. 最初の口座では、スプレッドの内側にSellLimitを 入れました。これで、あなたの価格がAsk 価格になります。
  7. もう一方の口座では、成行注文で買い付けを 行います。
  8. 今、自分のアカウントから購入したことが判明しました。
  9. 各口座の取引は両方とも終了しています。自分自身に売買していたんですね。
  10. 一方の口座では利益がプラスになり、もう一方の口座ではマイナスになります。
  11. 両者の口座の資金量(仲介手数料を含まない)は変わっていないと思いますか?
  12. レナートの論理によれば、それは変わった のだ。なぜなら、一方の口座の利益と他方の口座の損失は等しくならないからです。しかも、あなた自身が売買していたにもかかわらず、です。
  13. そうなんですか?

市場の状況について話していたのですが、ECN/STP ブローカー。

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
hrenfx:

しかし、反面教師 がいる。
  1. これは正しいことなのでしょうか?

市場の状況について -ECN/STP ブローカーでした。

他に少なくとも2つの独自のスプレッドを持つ内部変換トランザクションがあることを考慮してください。
 
Renat:

それは、「人による」ということです。

そのためには、複雑な相互 変換を伴う計算の数理を十分に掘り下げていく必要があるのです。EURUSDやGBPUSDなどのメジャーで運用する限りは、何も表示されません。

そう、一見すると関係ないように思えますが、クロスを 細かく見ていくと、関係あることがわかります。

Ask/Bidの計算がややこしいですが、実は全てのクロスにおいて2つのトレードが あります。

1.SYMBOL_CURRENCY_BASE-ACCOUNT_CURRENCY を Ask/Bid で 購入または販売する。

2)SYMBOL_CURRENCY_PROFIT -ACCOUNT_CURRENCY を Ask/Bid で買う、または売る

すべての取引は、Bidで開いたなら、Askで閉じます。その逆もしかり.

結果記号は、MetaTrader 5のように、終値には関係ありません。

 
Renat:
独自のスプレッドを持つ内部変換が少なくともあと2つあることに留意してください。

どのような変換操作をするのでしょうか?理屈は簡単で、複数通貨の利益を口座通貨に変換する必要がある、それ以上のことはないのです。例の場合、GBPでの利益はUSDに変換する必要があります。利益がプラスでもマイナスでも関係なく、変換しなければならない。

多通貨の利益を取ってロールオーバー時に換算するという相場パターンをあきらめたのですね。これは、マーケットプラットフォームと位置づけられるMT5の市況とは 一線を画している。しかし、単純化するために、この出発は理解され、多くの場合(すべてではない)深刻なコストを発生させることはありません。

しかし、利益計算の場合、物事を正式名称で呼ぶと、故意であれ偶然であれ、MT5を使うブローカーに便乗して顧客から金を巻き上げる詐欺行為に加担することになるのです。説 明しますと、現在、ブローカーはMT5ですべてのクライアントの取引から、クロスでのすべてのクライアントの売上高に相当する(大体)余分な利益を上げており、それに対応するメジャーのスプレッドを掛けています。

スプレッドで、しかもどんなスプレッドでも儲かるという、自由なスキームを実装しているんですね。例えば、ニュースの間、同じGBPUSDで、スプレッドは非常に広く、ブローカーのクライアントでクローズ/オープンがあった場合、ブローカーはフラットスポットでこの巨大なスプレッドを獲得することができます。

これはデメリットであり、多通貨の利益放棄は、多通貨のスプレッドがニュース中に非常に意地悪な価格で変換される可能性があるからです。そして実際、ロールオーバーの間、多通貨の利益はすべてのクライアントの総ネッティングで変換されます。また、上記の反例にあるように、そのようなアンバランスが生じることはあり得ません。

理由: