Новая версия платформы MetaTrader 5 build 2560: Улучшения во встроенной системе обучения - страница 23

 
prostotrader:

Билд 2360, Открытие ФОРТС, неттинг

Перестала работать функция

Эксперт был откомпилирован в Билд 2360

5 лет отработала нормально!

Проверьте глубину истории ва терминале

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 2560: Улучшения во встроенной системе обучения

prostotrader, 2020.08.03 14:01

//+------------------------------------------------------------------+
//| Expert Get position price function                               |
//+------------------------------------------------------------------+
double GetPositionPrice(const string aSymbol)
{
  double price_in = 0;
  double volume_in = 0;
  if(PositionSelect(aSymbol))
  {
    ulong pos_id = ulong(PositionGetInteger(POSITION_IDENTIFIER));
    if(pos_id > 0)
    {
      if(HistorySelectByPosition(pos_id))
      {
        int deals = HistoryDealsTotal();
        for(int i = 0; i < deals; i++)
        {
          ulong deal_ticket = HistoryDealGetTicket(i);
          ulong order_ticket = ulong(HistoryDealGetInteger(deal_ticket, DEAL_ORDER));
          if(order_ticket > 0)
          {
            ENUM_DEAL_ENTRY deal_entry = ENUM_DEAL_ENTRY(HistoryDealGetInteger(deal_ticket, DEAL_ENTRY));
            if(deal_entry == DEAL_ENTRY_IN)
            {
              double price = HistoryDealGetDouble(deal_ticket, DEAL_PRICE);
              double volume = HistoryDealGetDouble(deal_ticket, DEAL_VOLUME);
              price_in += price * volume;
              volume_in += volume;  
            }
          }
        }
        if(volume_in > 0)
        {
          //int digits=int(SymbolInfoInteger(aSymbol, SYMBOL_DIGITS ));
          return(NormalizeDouble(price_in/volume_in, Digits()));
        }  
      }
      else
      {
        Print(__FUNCTION__, ": Невозможно получить историю позиции по символу ", aSymbol);
      }
    }
    else
    {
      Print(__FUNCTION__, ": Невозможно определить идентификатор позиции по символу ", aSymbol);
    }
  }
  return(0);
}

Не понял, зачем в коде выделенное. И, вроде, логика расчета нетто-цены открытия текущей позиции неверная.

 
Rashid Umarov:

Проверьте глубину истории ва терминале

Спасибо, проверил.

Был сбой у Открывашки, всем пришлось менять пароли,

из-за этого нет истории...

 
fxsaber:

Не понял, зачем в коде выделенное. И, вроде, логика расчета нетто-цены открытия текущей позиции неверная.

Выделенный код нужен для фильтрации клиринговых сделок, чтобы они не попадали в расчет цены.
Цена открытия считается правильно.

 
Vladimir Mikhailov:

Выделенный код нужен для фильтрации клиринговых сделок, чтобы они не попадали в расчет цены.
Цена открытия считается правильно.

Именно так.

Добавлено

Общая цена открытия позиции без учета сделок на выход.

 
prostotrader:

Спасибо, проверил.

Был сбой у Открывашки, всем пришлось менять пароли,

из-за этого нет истории...

Сегодня тоже звонил в Открывашку по проблеме сертификата в МТ5.
Сказали, что это у меня сбой, а у них все нормально. Посоветовали поменять пароль.

 
Vladimir Mikhailov:

Сегодня тоже звонил в Открывашку по проблеме сертификата в МТ5.
Сказали, что это у меня сбой, а у них все нормально. Посоветовали поменять пароль.

Это делается в ЛК (терминалы -- восстановить пароль), но временный пароль может прийти не с первой попытки...

 
prostotrader:

Это делается в ЛК (терминалы -- восстановить пароль), но временный пароль может прийти не с первой попытки...

Поменял без проблем, ещё до начала торговой сессии.

 
prostotrader:

Общая цена открытия позиции без учета сделок на выход.

Наверное, проще написать функцию без ограничений.

 
fxsaber:

Наверное, проще написать функцию без ограничений.

Наверное, у каждого есть свои задачи.

Причина обращения: