Dificuldades de tradução :) - página 5

 
fxsaberse houver #include <Trade/Trade.mqh>, insira esta linha APÓS
Se depois - tudo bem )
 
Alexey Volchanskiy:

Pergunta - como conheço a comissão de uma posição na MQL5?

Eu o fiz na MQL4 desta maneira

Não há comissão na MQL5.

Procurei nas propriedades do pedido, e não há comissão também. O que eu devo fazer?

Está em algum lugar nas propriedades de um símbolo
 
Alexey Volchanskiy:

Pergunta - como conheço a comissão de uma posição na MQL5?

Eu o fiz na MQL4 desta maneira

Não há comissão na MQL5.

Procurei nas propriedades do pedido, e não há comissão também. O que eu devo fazer?

Você deve procurar nas propriedades do negócio. HistóriaDealGetDouble(ticket, DEAL_COMMISSION);
 
Alexey Volchanskiy:

Pergunta - como conheço a comissão de uma posição na MQL5?

Eu o fiz na MQL4 desta maneira

Não há comissão na MQL5.

Procurei nas propriedades do pedido, e não há comissão também. O que eu devo fazer?

A biblioteca devolverá o valor correto ao chamar

OrderCommission()

O código fonte mostra o seguinte

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

Aqui vamos nós... Não há nenhuma propriedade POSITION_COMISSION na documentação, somente nas propriedades de transação DEAL_COMISSION.

Obrigado, conhecerei outra imprecisão na documentação.

 
Então, como a comissão é levada em conta? Não é acrescentado ao lucro da posição? Isso afeta o equilíbrio imediatamente após a abertura da posição?
 
Dmitry Fedoseev:
Então, como a comissão é levada em conta? Não é acrescentado ao lucro da posição? Imediatamente após uma negociação para abrir uma posição, isso afeta o equilíbrio?
Sim.
 
fxsaber:

A biblioteca retornará o valor correto quando chamada

No código fonte, é assim

Você tem as definições comentadas no final, é assim que deve ser? Mais uma coisa. Estarei fazendo um vídeo no meu blog no YouTube traduzindo da MQL4 para a MQL5. Você se importa se eu traduzir sua biblioteca também? A ligação com a kodobase, é claro.

/*
#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 tal isto... Não há nenhuma propriedade POSITION_COMISSION na documentação, somente nas propriedades de transação DEAL_COMISSION.

Obrigado, conhecerei outra imprecisão na documentação.

E não existe tal propriedade na documentação, mas ela compila ) Aqui está tudo o que está na ajuda do terminal.

VOLUME_DE_POSIÇÃO

Volume da posição

duplo

POSITION_PRICE_OPEN

Preço da posição

duplo

POSIÇÃO_SL

Parar nível de perda para posição aberta

duplo

POSIÇÃO_TP

Obter nível de lucro para posição aberta

duplo

POSITION_PRICE_CURRENT

Preço atual para o símbolo

duplo

POSIÇÃO_SWAP

Troca acumulada

duplo

POSITION_PROFIT

Lucro atual

duplo

 
Alexey Viktorov:
Veja nas propriedades da transação. HistóriaDealGetDouble(ticket, DEAL_COMMISSION);
Então, a comissão só pode ser descoberta depois que a posição for fechada? Mas é tomada na abertura, pelo menos nas contas ECN em alp e robô. Isto não é bom.