Трудности перевода :) - страница 5

 
fxsaberесли есть #include <Trade/Trade.mqh>, вставить эту строчку ПОСЛЕ
Если после - все ок )
 
Alexey Volchanskiy:

Вопрос - а как узнать комиссию позиции в MQL5?

В МQL4 я делал так

 А в MQL5 комиссии нет, получается только так

 Посмотрел в свойствах ордера, тоже нет комиссии. И что делать?

Она где-то в свойствах символа
 
Alexey Volchanskiy:

Вопрос - а как узнать комиссию позиции в MQL5?

В МQL4 я делал так

 А в MQL5 комиссии нет, получается только так

 Посмотрел в свойствах ордера, тоже нет комиссии. И что делать?

Смотри в свойствах сделки. HistoryDealGetDouble(ticket, DEAL_COMMISSION);
 
Alexey Volchanskiy:

Вопрос - а как узнать комиссию позиции в MQL5?

В МQL4 я делал так

 А в MQL5 комиссии нет, получается только так

 Посмотрел в свойствах ордера, тоже нет комиссии. И что делать?

Библиотека вернет правильное значение при вызове

OrderCommission()

В исходнике там так

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

Во дают... В документации нет свойства POSITION_COMISSION только в свойствах сделки DEAL_COMISSION.

Спасибо, буду знать ещё одну неточность в документации.

 
Тогда как комиссия учитывается? К прибыли позиции она не приплюсовывается? Сразу после сделки по открытию позиции на баланс влияет?
 
Dmitry Fedoseev:
Тогда как комиссия учитывается? К прибыли позиции она не приплюсовывается? Сразу после сделки по открытию позиции на баланс влияет?
Да.
 
fxsaber:

Библиотека вернет правильное значение при вызове

В исходнике там так

У вас там дефайны в конце закомментированы, так и надо? И еще. Я ролик буду делать в своем блоге на ютубе по переводу с MQL4 на MQL5. Не против, если вашу библиотеку рассмотрю тоже? И ссылку на кодобазу конечно.

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

Во дают... В документации нет свойства POSITION_COMISSION только в свойствах сделки DEAL_COMISSION.

Спасибо, буду знать ещё одну неточность в документации.

А в документации и нет такого свойства, но компилируется ) Вот все, что есть в справке терминала.

POSITION_VOLUME

Объем позиции

double

POSITION_PRICE_OPEN

Цена позиции

double

POSITION_SL

Уровень Stop Loss для открытой позиции

double

POSITION_TP

Уровень Take Profit для открытой позиции

double

POSITION_PRICE_CURRENT

Текущая цена по символу

double

POSITION_SWAP

Накопленный своп

double

POSITION_PROFIT

Текущая прибыль

double

 
Alexey Viktorov:
Смотри в свойствах сделки. HistoryDealGetDouble(ticket, DEAL_COMMISSION);
Тое есть комиссию можно узнать только после закрытия позиции? А ведь она берется при открытии, по крайней мере на ECN счетах в алпе и робо. Плохо это..
Причина обращения: