Difficultés de traduction :) - page 5

 
fxsabers'il y a #include <Trade/Trade.mqh>, insérez cette ligne APRÈS
Si après - tout est ok )
 
Alexey Volchanskiy:

Question - comment connaître la commission d'une position dans MQL5 ?

Je l'ai fait dans MQL4 comme ceci

Il n'y a pas de commission dans MQL5.

J'ai regardé dans les propriétés de la commande, et il n'y a pas de commission non plus. Que dois-je faire ?

Il se trouve quelque part dans les propriétés d'un symbole
 
Alexey Volchanskiy:

Question - comment connaître la commission d'une position dans MQL5 ?

Je l'ai fait dans MQL4 comme ceci

Il n'y a pas de commission dans MQL5.

J'ai regardé dans les propriétés de la commande, et il n'y a pas de commission non plus. Que dois-je faire ?

Vous devriez regarder dans les propriétés de l'accord. HistoryDealGetDouble(ticket, DEAL_COMMISSION) ;
 
Alexey Volchanskiy:

Question - comment connaître la commission d'une position dans MQL5 ?

Je l'ai fait dans MQL4 comme ceci

Il n'y a pas de commission dans MQL5.

J'ai regardé dans les propriétés de la commande, et il n'y a pas de commission non plus. Que dois-je faire ?

La bibliothèque retournera la valeur correcte lors de l'appel

OrderCommission()

Le code source montre ce qui suit

   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);
     }
 

Que pensez-vous de ça... Il n'y a pas de propriété POSITION_COMISSION dans la documentation, seulement dans les propriétés de la transaction DEAL_COMISSION.

Merci, je vais connaître une autre inexactitude dans la documentation.

 
Alors comment la commission est-elle prise en compte ? Il n'est pas ajouté au bénéfice de la position ? Cela affecte-t-il le solde immédiatement après l'ouverture de la position?
 
Dmitry Fedoseev:
Alors comment la commission est-elle prise en compte ? Il n'est pas ajouté au bénéfice de la position ? Immédiatement après une transaction pour ouvrir une position, cela affecte-t-il le solde ?
Oui.
 
fxsaber:

La bibliothèque retournera la valeur correcte lorsqu'elle sera appelée

Dans le code source, c'est comme ça

Vous avez commenté les définitions à la fin, c'est comme ça que ça doit être ? Une dernière chose. Je vais réaliser une bobine vidéo sur mon blog à YouTube en traduisant de MQL4 à MQL5. Ça vous dérange si je traduis votre bibliothèque aussi ? Le lien vers kodobase, bien sûr.

/*
#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:

Que pensez-vous de ça... Il n'y a pas de propriété POSITION_COMISSION dans la documentation, seulement dans les propriétés de la transaction DEAL_COMISSION.

Merci, je vais connaître une autre inexactitude dans la documentation.

Et il n'y a pas une telle propriété dans la documentation, mais il compile ) Voici tout ce qui se trouve dans l'aide du terminal.

POSITION_VOLUME

Volume de la position

double

POSITION_PRIX_OUVERT

Prix de la position

double

POSITION_SL

Niveau de stop loss pour la position ouverte

double

POSITION_TP

Prendre le niveau de profit pour la position ouverte

double

POSITION_PRIX_ACTUEL

Prix actuel du symbole

double

POSITION_SWAP

Swap cumulé

double

POSITION_PROFIT

Bénéfice courant

double

 
Alexey Viktorov:
Regardez dans les propriétés de la transaction. HistoryDealGetDouble(ticket, DEAL_COMMISSION) ;
La commission ne peut donc être découverte qu'après la fermeture de la position? Mais il est pris à l'ouverture, du moins sur les comptes ECN en alp et robot. Ce n'est pas bon.
Raison: