Ошибки, баги, вопросы - страница 3504

 
fxsaber #:

4102 не правили, как и многие другие баг-репорты с воспроизведением.

Да, больше всего напрягает отсутствие нормальной обратной связи с их стороны - то ли они видели сообщение об ошибке и поставили в очередь работу над ней, то ли просмотрели... или информации им мало. Бывает быстро реагируют, а бывает так - ждёшь реакцию неделями - непоследовательность.

 
fxsaber #:
4102 воспроизводится на WinServer и, похоже, на Win7. Win10 - порядок.

Проверил. Да, при обращении к ObjectGetInteger() выдаёт ошибку 4102.

Проверял на Windows Server 2022 Standard.

 

Полный абзац.

Сайбер об этом писал два с половиной года назад.

А HistorySelect до сих пор корректно работает только при запросе  0, INT_MAX,

если поставить с даты, то корректной работы ожидать не приходится.

Блиииин (злой, презлой смайл)


Ситуация: сделок не было три месяца, вчера открыл позицию, чуть позже закрыл. Сделал запрос  HistorySelect за год, всё норм.

Открыл вторую позицию, чуть позже закрыл.  Сделал запрос  HistorySelect за год, нету предпоследней позиции.

Делаю запрос с начала истории, все сделки есть, делаю запрос за год, сделок предпоследней позиции нет.

Блиииин (злой, презлой смайл)

 
Aleksandr Slavskii #:

делаю запрос за год, сделок предпоследней позиции нет.

Раз воспроизводится - нужно показывать разработчикам.

Aleksandr Slavskii #:

Сайбер об этом писал два с половиной года назад.

Там о другом. И несколько раз после менялось.
 
Aleksey Vyazmikin #:

Да, больше всего напрягает отсутствие нормальной обратной связи с их стороны - то ли они видели сообщение об ошибке и поставили в очередь работу над ней, то ли просмотрели... или информации им мало. Бывает быстро реагируют, а бывает так - ждёшь реакцию неделями - непоследовательность.

Согласен, без обратной связи очень грустно. Как будто в пустоту орёшь.

Предлагаю сделать тему "Баги" в которой могут писать только модераторы и админы.

Если пользователь выявил баг и его смогли воспроизвести ещё пара пользователей, то модератор переносит пост в эту тему и ссылки на подтверждающие посты.

А админы отвечают уже не по всем веткам форума, а в этой конкретной теме. Пользователи смогут зайти и почитать, без возможности захламить тему.

Например выявлены баги.

1. Не работает функция на ObjectGetInteger сервере.

2. Не работает как надо функция  HistorySelect 

3. Не работает ещё что то.


Заходим в эту тему и читаем ответы админов:

1. Да нафига вам эти серверы.

2. Мы эту функцию всё равно собрались убрать, поэтому исправлять ничего не будем.

3. А вы видели какие у нас сейчас возможности по нейросетям!

)))

 
fxsaber #:

Раз воспроизводится - нужно показывать разработчикам.

А как? Я хз. Вряд ли она воспроизводится. Думаю проблема именно в большом перерыве между сделками.

Я вообще вчера всю голову сломал, пока нашёл кто в коде косячит, а понять почему, уже сил не хватило.


Сейчас посмотрел. Только последняя позиция сделанная 2024 году попадает в конец истории при запросе с 01.01.2023, а все что были до неё в 2024 году не понятно где находятся.

HistorySelect возвращает все сделки 2023 года и в конце как вишенка на торте сделки последней позиции из 2024 года)))

Сортировка по тикетам тут не при чём, тикеты все идут по порядку, я проверил. Видимо сортировка происходит по другому принципу.

 
Aleksandr Slavskii #:

А как? Я хз. Вряд ли она воспроизводится.

Инвест-доступ к счету и код, показывающий проблему на этом счете.
 
Aleksandr Slavskii #:

Если пользователь выявил баг и его смогли воспроизвести ещё пара пользователей, то модератор переносит пост в эту тему и ссылки на подтверждающие посты.

Поддерживаю. Свои баг-репорты по "хеш-тегу" ищу.
 
Aleksandr Slavskii #:
Если пользователь выявил баг и его смогли воспроизвести ещё пара пользователей, то модератор переносит пост в эту тему и ссылки на подтверждающие посты.

Задумка интересная.

Что скажет модератор по поводу реализации?

 
fxsaber #:
Инвест-доступ к счету и код, показывающий проблему на этом счете.

Не получается. Счёт MetaQuotes-Demo, пароль от него я забыл, его теперь ни передать ни изменить, а инвесторский пароль без основного пароля не установить.

Но судя по всему ошибка должна быть на любом счёте.

А код для воспроизведения написан в вашей HistoryPosition, если в вашем примере изменить from_date=0 на любую дату, то распечатывается только последняя позиция

//+------------------------------------------------------------------+
// Создаем структуру некоторых свойств закрытой позиции.
struct POSITION_HISTORY
  {
   ulong             ticket;
   int               type;
   datetime          timeOpen;
   datetime          timeClose;
   double            priceOpen;
   double            priceClose;
   // Заполнение структуры соответствующими данными закрытой позиции.
   bool              Set(const ulong lTicket)
     {
      const bool Res = HistoryPositionSelect(lTicket); // https://www.mql5.com/ru/blogs/post/755007

      if(Res)
        {
         this.ticket = HistoryPositionGetInteger(POSITION_HISTORY_TICKET);
         this.type = (ENUM_POSITION_TYPE)HistoryPositionGetInteger(POSITION_HISTORY_TYPE);
         this.timeOpen = (datetime)HistoryPositionGetInteger(POSITION_HISTORY_TIME_OPEN);
         this.timeClose = (datetime)HistoryPositionGetInteger(POSITION_HISTORY_TIME_CLOSE);
         this.priceOpen = HistoryPositionGetDouble(POSITION_HISTORY_PRICE_OPEN);
         this.priceClose = HistoryPositionGetDouble(POSITION_HISTORY_PRICE_CLOSE);
        }
      return(Res);
     }
  };
POSITION_HISTORY Positions[];// Сюда будем собирать данные обо всех закрытых позициях.
//+------------------------------------------------------------------+
bool PositionHistori(datetime from_date = 0, datetime  to_date = INT_MAX)
  {
   if(m_TF.flagCustom)
     {
      int Amount = 0; // Количество закрытых позиций.

      if(HistorySelect(from_date, to_date))  // Запросили интервал торговой истории.
         for(uint i = ArrayResize(Positions, HistoryDealsTotal()); (bool)i--;)  // Бежим по всем сделкам в обратной хронологии.
           {
            const ulong DealTicket = HistoryDealGetTicket(i); // Тикет сделки.
            if(HistoryDealGetString(DealTicket, DEAL_SYMBOL) == _Symb && (HistoryDealGetInteger(DealTicket, DEAL_MAGIC) == Magic || Magic == 0))
               if((HistoryDealGetInteger(DealTicket, DEAL_ENTRY) != DEAL_ENTRY_IN) &&  // Если сделка не является открывающей,
                  Positions[Amount].Set(DealTicket))                                  // записываем данные позиции, закрытой этой сделкой.
                  Amount++;
           }
      if(Amount <= 0)
         return false;

      ArrayResize(Positions, Amount); // Определили количество закрытых позиций.
      ArrayReverse(Positions); // Расположили закрытые позиции по хронологии закрытия.
      ArrayPrint(Positions); // Распечатали информацию обо всех закрытых позициях.      
     }

   return true;
  }