Difficoltà di traduzione :) - pagina 5

 
fxsaberse c'è #include <Trade/Trade.mqh>, inserire questa linea DOPO
Se dopo - tutto ok )
 
Alexey Volchanskiy:

Domanda - come faccio a sapere la commissione di una posizione in MQL5?

L'ho fatto in MQL4 in questo modo

Non ci sono commissioni in MQL5.

Ho guardato nelle proprietà dell'ordine e non c'è neanche la commissione. Cosa devo fare?

È da qualche parte nelle proprietà di un simbolo
 
Alexey Volchanskiy:

Domanda - come faccio a sapere la commissione di una posizione in MQL5?

L'ho fatto in MQL4 in questo modo

Non ci sono commissioni in MQL5.

Ho guardato nelle proprietà dell'ordine e non c'è neanche la commissione. Cosa devo fare?

Dovresti guardare nelle proprietà dell'accordo. HistoryDealGetDouble(ticket, DEAL_COMMISSION);
 
Alexey Volchanskiy:

Domanda - come faccio a sapere la commissione di una posizione in MQL5?

L'ho fatto in MQL4 in questo modo

Non ci sono commissioni in MQL5.

Ho guardato nelle proprietà dell'ordine e non c'è neanche la commissione. Cosa devo fare?

La libreria restituirà il valore corretto quando si chiama

OrderCommission()

Il codice sorgente mostra quanto segue

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

Ecco qui... Non c'è una proprietà POSITION_COMISSION nella documentazione, solo nelle proprietà della transazione DEAL_COMISSION.

Grazie, saprò un'altra imprecisione nella documentazione.

 
Allora come si tiene conto della commissione? Non si aggiunge al profitto della posizione? Influisce sul saldo subito dopo l'apertura della posizione?
 
Dmitry Fedoseev:
Allora come si tiene conto della commissione? Non si aggiunge al profitto della posizione? Immediatamente dopo un trade per aprire una posizione, influisce sul saldo?
Sì.
 
fxsaber:

La libreria restituirà il valore corretto quando viene chiamata

Nel codice sorgente è così

Hai le definizioni commentate alla fine, è così che dovrebbe essere? Un'altra cosa. Farò un video reel sul mio blog su YouTube traducendo da MQL4 a MQL5. Ti dispiace se traduco anche la tua biblioteca? Il link a kodobase, naturalmente.

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

Che ne dici di questo... Non c'è una proprietà POSITION_COMISSION nella documentazione, solo nelle proprietà della transazione DEAL_COMISSION.

Grazie, saprò un'altra imprecisione nella documentazione.

E non c'è una tale proprietà nella documentazione, ma si compila) Ecco tutto quello che c'è nell'aiuto del terminale.

POSIZIONE_VOLUME

Volume della posizione

doppio

POSIZIONE_PREZZO_APERTO

Prezzo di posizione

doppio

POSIZIONE_SL

Livello di stop loss per la posizione aperta

doppio

POSIZIONE_TP

Take Profit level per la posizione aperta

doppio

PREZZO_DI_POSIZIONE_CORRENTE

Prezzo corrente per il simbolo

doppio

POSIZIONE_SWAP

Swap accumulato

doppio

POSIZIONE_PROFITTO

Profitto corrente

doppio

 
Alexey Viktorov:
Guarda nelle proprietà della transazione. HistoryDealGetDouble(ticket, DEAL_COMMISSION);
Quindi, la commissione può essere scoperta solo dopo la chiusura della posizione? Ma viene preso all'apertura, almeno sui conti ECN in alp e robot. Questo non va bene.