Übersetzungsschwierigkeiten :) - Seite 5

 
fxsaberWenn #include <Trade/Trade.mqh> vorhanden ist, fügen Sie diese Zeile NACH
Wenn nach - alles ok )
 
Alexey Volchanskiy:

Frage: Woher weiß ich, wie hoch die Provision für eine Position in MQL5 ist?

Ich habe es in MQL4 wie folgt gemacht

In MQL5 gibt es keine Provision.

Ich habe in den Auftragseigenschaften nachgeschaut, und auch dort gibt es keine Provision. Was sollte ich tun?

Sie befindet sich irgendwo in den Eigenschaften eines Symbols
 
Alexey Volchanskiy:

Frage: Woher weiß ich, wie hoch die Provision für eine Position in MQL5 ist?

Ich habe es in MQL4 wie folgt gemacht

In MQL5 gibt es keine Provision.

Ich habe in den Auftragseigenschaften nachgeschaut, und auch dort gibt es keine Provision. Was sollte ich tun?

Sie sollten in den Eigenschaften des Geschäfts nachsehen. HistoryDealGetDouble(ticket, DEAL_COMMISSION);
 
Alexey Volchanskiy:

Frage: Woher weiß ich, wie hoch die Provision für eine Position in MQL5 ist?

Ich habe es in MQL4 wie folgt gemacht

In MQL5 gibt es keine Provision.

Ich habe in den Auftragseigenschaften nachgeschaut, und auch dort gibt es keine Provision. Was sollte ich tun?

Die Bibliothek wird den richtigen Wert zurückgeben, wenn sie

OrderCommission()

Der Quellcode zeigt folgendes

   static ulong GetPositionDealIn(const ulong HistoryTicket=0)
     {
      ulong Ticket=0;

      if((HistoryTicket==0) ? ::HistorySelectByPosition(::PositionGetInteger(POSITION_TICKET)) : ::HistorySelectByPosition(HistoryTicket))
        {
         const int Total=::HistoryDealsTotal();

         for(int i=0; i<Total; i++)
           {
            const ulong TicketDeal=::HistoryDealGetTicket(i);

            if(TicketDeal>0)
               if((ENUM_DEAL_ENTRY)::HistoryDealGetInteger(TicketDeal,DEAL_ENTRY)==DEAL_ENTRY_IN)
                 {
                  Ticket=TicketDeal;

                  break;
                 }
           }
        }

      return(Ticket);
     }

   static double GetPositionCommission(void)
     {
      double Commission=::PositionGetDouble(POSITION_COMMISSION);

      // На случай, если POSITION_COMMISSION не работает
      if(Commission==0)
        {
         const ulong Ticket=MT4ORDERS::GetPositionDealIn();

         if(Ticket>0)
           {
            const double LotsIn=::HistoryDealGetDouble(Ticket,DEAL_VOLUME);

            if(LotsIn>0)
               Commission=::HistoryDealGetDouble(Ticket,DEAL_COMMISSION)*::PositionGetDouble(POSITION_VOLUME)/LotsIn;
           }
        }

      return(Commission);
     }
 

Wie wäre es damit... In der Dokumentation gibt es keine Eigenschaft POSITION_COMISSION, sondern nur DEAL_COMISSION in den Transaktionseigenschaften.

Danke, ich werde eine weitere Ungenauigkeit in der Dokumentation erkennen.

 
Wie wird dann die Provision berücksichtigt? Sie wird nicht zum Gewinn der Position hinzugerechnet? Wirkt sie sich unmittelbar nach der Eröffnung der Position auf den Saldo aus?
 
Dmitry Fedoseev:
Wie wird dann die Provision berücksichtigt? Sie wird nicht zum Gewinn der Position hinzugerechnet? Wirkt sich die Eröffnung einer Position unmittelbar nach dem Abschluss auf den Kontostand aus?
Ja.
 
fxsaber:

Die Bibliothek gibt den richtigen Wert zurück, wenn sie aufgerufen wird

Im Quellcode sieht es folgendermaßen aus

Haben Sie die Defines am Ende auskommentiert, sollte das so sein? Noch eine Sache. Ich werde auf meinem Blog bei YouTube eine Videoreihe erstellen, in der ich von MQL4 auf MQL5 übersetze. Was dagegen, wenn ich auch Ihre Bibliothek übersetze? Der Link zu kodobase, natürlich.

/*
#define OrderClose  MT4ORDERS::MT4OrderClose
#define OrderModify MT4ORDERS::MT4OrderModify // нельзя, например: CTrade::OrderModify
#define OrderDelete MT4ORDERS::MT4OrderDelete // нельзя, например: CTrade::OrderDelete

#define OrdersHistoryTotal MT4ORDERS::MT4OrdersHistoryTotal

#define OrderTicket      MT4ORDERS::MT4OrderTicket
#define OrderType        MT4ORDERS::MT4OrderType // нельзя, например: CHistoryOrderInfo::OrderType
#define OrderLots        MT4ORDERS::MT4OrderLots
#define OrderSymbol      MT4ORDERS::MT4OrderSymbol
#define OrderComment     MT4ORDERS::MT4OrderComment
#define OrderOpenPrice   MT4ORDERS::MT4OrderOpenPrice
#define OrderOpenTime    MT4ORDERS::MT4OrderOpenTime
#define OrderStopLoss    MT4ORDERS::MT4OrderStopLoss
#define OrderTakeProfit  MT4ORDERS::MT4OrderTakeProfit
#define OrderClosePrice  MT4ORDERS::MT4OrderClosePrice
#define OrderCloseTime   MT4ORDERS::MT4OrderCloseTime
#define OrderExpiration  MT4ORDERS::MT4OrderExpiration
#define OrderMagicNumber MT4ORDERS::MT4OrderMagicNumber
#define OrderProfit      MT4ORDERS::MT4OrderProfit
#define OrderCommission  MT4ORDERS::MT4OrderCommission
#define OrderSwap        MT4ORDERS::MT4OrderSwap
#define OrderPrint       MT4ORDERS::MT4OrderPrint
*/
 
Alexey Viktorov:

Wie wäre es damit... Es gibt keine POSITION_COMISSION-Eigenschaft in der Dokumentation, nur in DEAL_COMISSION-Transaktionseigenschaften.

Danke, ich werde eine weitere Ungenauigkeit in der Dokumentation erkennen.

Und es gibt keine solche Eigenschaft in der Dokumentation, aber es kompiliert ) Hier finden Sie alles, was in der Hilfe des Terminals steht.

POSITION_VOLUMEN

Position Volumen

doppelt

POSITION_PREIS_OFFEN

Position Preis

doppelt

POSITION_SL

Stop-Loss-Niveau für offene Position

doppelt

POSITION_TP

Gewinnmitnahme für offene Position

doppelt

POSITION_PRICE_CURRENT

Aktueller Preis für das Symbol

doppelt

POSITION_SWAP

Kumulierter Swap

doppelt

POSITION_PROFIT

Aktueller Gewinn

doppelt

 
Alexey Viktorov:
Schauen Sie in den Eigenschaften der Transaktion nach. HistoryDealGetDouble(ticket, DEAL_COMMISSION);
Die Provision kann also erst nach Schließung der Position ermittelt werden? Aber es wird bei der Eröffnung genommen, zumindest auf ECN-Konten in Alp und Roboter. Das ist nicht gut.