Wie berechnet der MetaTrader 5 den Gewinn?

 

Ausführen eines einfachen Skripts:

//+------------------------------------------------------------------+
//|                                                       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

Der Fehler ist deutlich sichtbar...

Das Problem muss vonSYMBOL_TRADE_TICK_VALUE_PROFIT undSYMBOL_TRADE_TICK_VALUE_LOSS ausgehen.

Wir benötigenSYMBOL_TRADE_TICK_VALUE_LONG und SYMBOL_TRADE_TICK_VALUE_SHORT.

Bei der Suche wurde etwas Interessantes gefunden:

Renat:

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

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


Das ist natürlich falsch. Bei einer Short-Position ist der Preis andersherum....

Ich hoffe wirklich, dass der Fehler unfreiwillig ist! Können Sie das bitte korrigieren!

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

Leider ist die Frage nicht klar formuliert, und es gibt keine Schlussfolgerung aus dem vorgeschlagenen Beispiel. Es ist nicht klar, was genau als Fehler angezeigt wird.

Formulieren Sie Ihre Frage genau, fügen Sie die erzielten Ergebnisse bei und geben Sie bitte an, wo der Fehler darin liegt.

Geben Sie zum Beispiel hier an, wo der Fehler liegt:

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

Ich habe die Werte SYMBOL_TRADE_TICK_VALUE_PROFIT und SYMBOL_TRADE_TICK_VALUE_LOSS am Ende hinzugefügt.

Sie können sehen, dass der Gewinn tatsächlich verschiedene Werte eines Ticks berücksichtigt, je nach Rentabilität oder Verlust eines Handels. Dies liegt daran, dass es eine implizite Umrechnungsoperation in die Einzahlungswährung gibt, wenn man das erhaltene Finanzergebnis in einer Währung zur Umrechnung verkaufen (wenn es ein Gewinn ist) oder zurückkaufen (wenn es ein Verlust ist) muss.

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

 

Der Wert eines Ticks hängt nicht vom Gewinn oder Verlust eines Geschäfts ab.

Gewinn und Verlust werden zum gleichen Preis abgeschlossen. Die Umstellung ist die gleiche.

Nur Short- und Long-Trades können einen Unterschied im Wert des Ticks haben und für die Umrechnung in die Depotwährung unterschiedlich gezählt werden.

Das BuyPlus- und das BuyMinus-Beispiel wären gleich. Auch SellPlus und SellMinus. Sie können nur Buy.... ist anders als Sell...

Sie verwechseln hier etwas:

Renat:

... Wenn Sieverkaufen(wenn es sich um einen Gewinn handelt) oderzurückkaufen(wenn es sich um einen Verlust handelt) müssen, wird das daraus resultierende finanzielle Ergebnis in einer Währung umgerechnet.

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

Wenn Sie einen Handel für EURGBP eröffnen und die Währung der Einlage ist USD,haben Sie im Grunde (ungefähr) EURUSD kaufen und GBPUSD verkaufen. (Der Unterschied in der Lautstärke spielt keine Rolle, da sie sich nicht ändern, wenn Sie schließen)

Zur Eröffnung:Kaufen Sie EURUSD zum Ask(EURUSD) und verkaufen Sie GBPUSD zum Bid(GBPUSD).

Bei Abschluss(wenn es ein Gewinn ist,wenn es ein Verlust ist) haben Sie den gleichen Preis: Bid(EURUSD) und Ask(GBPUSD).

Warum ist der Tick-Wert fürGewinn/Verlust unterschiedlich?

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

Dies ist das Ergebnis eines langjährigen Missverständnisses der Entwickler:

Renat:

Es ist genauer zu sagen, dass der TickValue bei der Umrechnung in die Zielwährung davon abhängt, ob es sich um einen Verlust handelt oder nicht. Das heißt, wenn wir einen Verlust von 1 Pip haben, müssen wir ihn zum Ask-Preis zurückkaufen, und wenn wir einen Gewinn von 1 Pip haben, müssen wir ihn zum Bid-Preis verkaufen.

 
Manov:

Der Wert eines Ticks hängt nicht davon ab, ob ein Handel profitabel oder unprofitabel ist.

Gewinn und Verlust werden zum gleichen Preis abgeschlossen. Bei der Umwandlung - dasselbe.

Genau das tut es.

Dazu müssen Sie die Mathematik der Berechnungen mit komplexen Kreuzumrechnungen verstehen. Solange Sie mit Majors wie EURUSD und GBPUSD arbeiten, werden Sie nichts sehen.

Ja, auf den ersten Blick mag es so aussehen, als ob es nicht davon abhängt, aber wenn Sie die Kreuze im Detail untersuchen, werden Sie sehen, dass es doch so ist.

 
Renat:

Das ist die Sache, es kommt darauf an.

Dies ist eigentlich ein strittiger Punkt. Die Logik von Renat ist klar und scheint auf den ersten Blick sogar richtig zu sein:

Wenn Sie einen Crossover-Handel abschließen, erzielen Sie einen Gewinn in der jeweiligen Basiswährung. Zum Beispiel wird der Gewinn eines EURGBP-Geschäfts in GBP gemessen. Im MT5 gibt es jedoch kein Konzept für Gewinne in mehreren Währungen, so dass die Gewinne in GBP spontan in die Kontowährung umgerechnet werden. Und es scheint, dass im Falle eines positiven Gewinns muss es zum aktuellen Wechselkurs GBPUSD_Bid umgerechnet werden, und im Falle eines negativen - GBPUSD_Ask.

Hier ist jedoch ein Gegenbeispiel:

  1. Sie haben zwei unabhängige Konten. Sie haben beschlossen, Geldmittel von einem zum anderen zu transferieren.
  2. Beim EURGBP setzen Sie den Inside Spread auf einem Konto BuyLimit. Dementsprechend geht der Angebotspreis auf Sie über.
  3. Auf dem anderen Konto führen Sie mit einem Marktauftrag SELL aus.
  4. Durch diesen einfachen Vorgang haben Sie sich selbst verkauft.
  5. Einige Zeit vergeht, und Sie beschließen, das Geschäft abzuschließen.
  6. Auf dem ersten Konto setzen Sie das SellLimit innerhalb des Spreads. Jetzt wird Ihr Preis zum Briefkurs.
  7. Auf dem anderen Konto verwenden Sie eine Marktorder zum KAUFEN.
  8. Es stellt sich heraus, dass Sie jetzt von Ihrem eigenen Konto gekauft haben.
  9. Beide Geschäfte auf beiden Konten wurden geschlossen. Sie haben gekauft und an sich selbst verkauft.
  10. Auf dem einen Konto haben Sie einen positiven Gewinn und auf dem anderen einen negativen.
  11. Glauben Sie, dass sich die Höhe der Mittel auf Ihren beiden Konten geändert hat (ohne Maklerprovisionen)?
  12. Nach der Logik von Renat hat sich das geändert. Denn der Gewinn auf dem einen Konto entspricht nicht dem Verlust auf dem anderen Konto. Und das, obwohl Sie selbst gekauft und verkauft haben.
  13. Ist das richtig?

Ich habe über die Marktbedingungen gesprochen - ECN/STP-Broker.

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

Doch ein Gegenbeispiel:
  1. Ist dies die richtige Entscheidung?

Es ging um die Marktbedingungen - ECN/STP-Broker.

Bedenken Sie, dass es mindestens zwei weitere interne Umrechnungstransaktionen mit eigenen Spreads gibt.
 
Renat:

Das ist die Sache: Es kommt darauf an.

Dazu müssen Sie sich tief genug in die Mathematik der Berechnungen mit komplexen Kreuzumrechnungen einarbeiten. Solange Sie mit Majors wie EURUSD und GBPUSD arbeiten, werden Sie nichts sehen.

Ja, auf den ersten Blick scheint es so, als ob es nicht darauf ankäme, aber wenn Sie die Kreuze genauer untersuchen, werden Sie sehen, dass es doch so ist.

Die Berechnung von Ask/Bid magkompliziert sein, aber in Wirklichkeithaben Siefür alle Crosses 2 Handelsmöglichkeiten:

1.SYMBOL_CURRENCY_BASE-ACCOUNT_CURRENCY zu Ask/Bid kaufen oder verkaufen

2) Kauf oder VerkaufSYMBOL_CURRENCY_PROFIT -ACCOUNT_CURRENCY für Ask/Bid

Jeder Handel, den wir mit Bid eröffnet haben, wird mit Ask geschlossen. Und andersherum ...

Das Vorzeichen des Ergebnisses spielt bei Schlusskursen keine Rolle, wie es jetzt bei MetaTrader 5 der Fall ist!

 
 
Renat:
Beachten Sie, dass es mindestens zwei weitere interne Konvertierungen mit eigenen Spreads gibt.

Von welchen Umwandlungsvorgängen ist die Rede? Die Logik ist einfach: Sie müssen Gewinne in mehreren Währungen in die Kontowährung umrechnen, mehr nicht. Im Fall des Beispiels muss der Gewinn in GBP in USD umgerechnet werden. Es spielt keine Rolle, ob der Gewinn positiv oder negativ ist, Sie müssen ihn umrechnen.

Sie haben das Marktschema aufgegeben, Gewinne in mehreren Währungen mitzunehmen und sie zum Zeitpunkt des Rollover umzurechnen. Dies ist eine Abweichung von den Marktbedingungen des MT5, der als Marktplattform positioniert ist. Der Einfachheit halber ist diese Abweichung jedoch nachvollziehbar und verursacht in vielen (nicht in allen) Fällen keine gravierenden Kosten.

Aber im Falle der Gewinnberechnung, um die Dinge beim richtigen Namen zu nennen, tragen Sie, absichtlich oder versehentlich, zu einem betrügerischen Schema bei, um von den Kunden Geld zu Gunsten eines Brokers zu nehmen, der MT5 verwendet. Lassen Sie mich das erklären: Im Moment macht ein Broker auf MT5 einen zusätzlichen Gewinn aus dem Handel mit allen Kunden, der (ungefähr) dem Umsatz aller seiner Kunden mit Crosses entspricht, multipliziert mit dem entsprechenden Spread der Majors.

Sie haben ein kostenloses System eingeführt, um mit dem Spread Geld zu verdienen, und zwar mit jedem Spread. Zum Beispiel kann der Spread während der Nachrichten für denselben GBPUSD sehr groß sein, und wenn bei den Kunden des Brokers eine Schließung/Öffnung stattfindet, verdient der Broker diesen riesigen Spread an einer flachen Stelle.

Dies ist ein Nachteil und der Mehrwährungs-Gewinnverzicht, denn der Mehrwährungs-Spread kann während der Nachrichten zu sehr unangenehmen Kursen umgesetzt werden. Und in der Tat wird beim Rollover der Mehrwährungsgewinn bei der Gesamtaufrechnung aller Kunden umgerechnet. Und ein solches Ungleichgewicht kann auf keinen Fall entstehen, wie das obige Gegenbeispiel zeigt.

Grund der Beschwerde: