Dificultades de traducción :) - página 5

 
fxsabersi hay #include <Trade/Trade.mqh>, inserte esta línea DESPUÉS
Si después - todo bien )
 
Alexey Volchanskiy:

Pregunta - ¿Cómo puedo saber la comisión de una posición en MQL5?

Lo hice en MQL4 así

En MQL5 no hay comisiones.

He mirado en las propiedades del pedido y tampoco hay comisión. ¿Qué debo hacer?

Está en algún lugar de las propiedades de un símbolo
 
Alexey Volchanskiy:

Pregunta - ¿Cómo puedo saber la comisión de una posición en MQL5?

Lo hice en MQL4 así

En MQL5 no hay comisiones.

He mirado en las propiedades del pedido y tampoco hay comisión. ¿Qué debo hacer?

Deberías mirar en las propiedades del trato. HistoryDealGetDouble(ticket, DEAL_COMMISSION);
 
Alexey Volchanskiy:

Pregunta - ¿Cómo puedo saber la comisión de una posición en MQL5?

Lo hice en MQL4 así

En MQL5 no hay comisiones.

He mirado en las propiedades del pedido y tampoco hay comisión. ¿Qué debo hacer?

La biblioteca devolverá el valor correcto al llamar a

OrderCommission()

El código fuente muestra lo siguiente

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

Qué tal esto... No hay ninguna propiedad POSITION_COMISSION en la documentación, sólo DEAL_COMISSION en las propiedades de la transacción.

Gracias, voy a conocer otra inexactitud en la documentación.

 
Entonces, ¿cómo se tiene en cuenta la comisión? ¿No se añade al beneficio de la posición? ¿Afecta al saldo inmediatamente después de abrir la posición?
 
Dmitry Fedoseev:
Entonces, ¿cómo se tiene en cuenta la comisión? ¿No se añade al beneficio de la posición? Inmediatamente después de una operación para abrir una posición, ¿afecta al saldo?
Sí.
 
fxsaber:

La biblioteca devolverá el valor correcto cuando se llame a

En el código fuente es así

¿Tienes las definiciones comentadas al final, es así como debe ser? Una cosa más. Voy a hacer un video en mi blog en YouTube traduciendo de MQL4 a MQL5. ¿Te importa si también traduzco tu biblioteca? El enlace a kodobase, por supuesto.

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

Qué tal esto... No hay ninguna propiedad POSITION_COMISSION en la documentación, sólo en las propiedades de la transacción DEAL_COMISSION.

Gracias, voy a conocer otra inexactitud en la documentación.

Y no hay tal propiedad en la documentación, pero compila ) Aquí está todo lo que hay en la ayuda del terminal.

POSICIÓN_VOLUMEN

Volumen de la posición

doble

POSICIÓN_PRECIO_ABIERTA

Precio de la posición

doble

POSICIÓN_SL

Nivel de stop loss para la posición abierta

doble

POSICIÓN_TP

Nivel de beneficios para la posición abierta

doble

POSICIÓN_PRECIO_ACTUAL

Precio actual del símbolo

doble

POSITION_SWAP

Canje acumulado

doble

POSICIÓN_GANANCIA

Beneficio actual

doble

 
Alexey Viktorov:
Mira en las propiedades de la transacción. HistoryDealGetDouble(ticket, DEAL_COMMISSION);
Entonces, ¿la comisión se puede averiguar sólo después de cerrar la posición? Pero se toma en la apertura, al menos en las cuentas ECN en alp y robot. Esto no es bueno.