4102 не правили, как и многие другие баг-репорты с воспроизведением.
Да, больше всего напрягает отсутствие нормальной обратной связи с их стороны - то ли они видели сообщение об ошибке и поставили в очередь работу над ней, то ли просмотрели... или информации им мало. Бывает быстро реагируют, а бывает так - ждёшь реакцию неделями - непоследовательность.
Да, больше всего напрягает отсутствие нормальной обратной связи с их стороны - то ли они видели сообщение об ошибке и поставили в очередь работу над ней, то ли просмотрели... или информации им мало. Бывает быстро реагируют, а бывает так - ждёшь реакцию неделями - непоследовательность.
Согласен, без обратной связи очень грустно. Как будто в пустоту орёшь.
Предлагаю сделать тему "Баги" в которой могут писать только модераторы и админы.
Если пользователь выявил баг и его смогли воспроизвести ещё пара пользователей, то модератор переносит пост в эту тему и ссылки на подтверждающие посты.
А админы отвечают уже не по всем веткам форума, а в этой конкретной теме. Пользователи смогут зайти и почитать, без возможности захламить тему.
Например выявлены баги.
1. Не работает функция на ObjectGetInteger сервере.
2. Не работает как надо функция HistorySelect
3. Не работает ещё что то.
Заходим в эту тему и читаем ответы админов:
1. Да нафига вам эти серверы.
2. Мы эту функцию всё равно собрались убрать, поэтому исправлять ничего не будем.
3. А вы видели какие у нас сейчас возможности по нейросетям!
Раз воспроизводится - нужно показывать разработчикам.
А как? Я хз. Вряд ли она воспроизводится. Думаю проблема именно в большом перерыве между сделками.
Я вообще вчера всю голову сломал, пока нашёл кто в коде косячит, а понять почему, уже сил не хватило.
Сейчас посмотрел. Только последняя позиция сделанная 2024 году попадает в конец истории при запросе с 01.01.2023, а все что были до неё в 2024 году не понятно где находятся.
HistorySelect возвращает все сделки 2023 года и в конце как вишенка на торте сделки последней позиции из 2024 года)))
Сортировка по тикетам тут не при чём, тикеты все идут по порядку, я проверил. Видимо сортировка происходит по другому принципу.
Если пользователь выявил баг и его смогли воспроизвести ещё пара пользователей, то модератор переносит пост в эту тему и ссылки на подтверждающие посты.
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(constulong lTicket)
{
constbool Res = HistoryPositionSelect(lTicket); // https://www.mql5.com/ru/blogs/post/755007if(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--;) // Бежим по всем сделкам в обратной хронологии.
{
constulong 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)
returnfalse;
ArrayResize(Positions, Amount); // Определили количество закрытых позиций.ArrayReverse(Positions); // Расположили закрытые позиции по хронологии закрытия.ArrayPrint(Positions); // Распечатали информацию обо всех закрытых позициях.
}
returntrue;
}
4102 не правили, как и многие другие баг-репорты с воспроизведением.
Да, больше всего напрягает отсутствие нормальной обратной связи с их стороны - то ли они видели сообщение об ошибке и поставили в очередь работу над ней, то ли просмотрели... или информации им мало. Бывает быстро реагируют, а бывает так - ждёшь реакцию неделями - непоследовательность.
4102 воспроизводится на WinServer и, похоже, на Win7. Win10 - порядок.
Проверил. Да, при обращении к ObjectGetInteger() выдаёт ошибку 4102.
Проверял на Windows Server 2022 Standard.
Полный абзац.
Сайбер об этом писал два с половиной года назад.
А HistorySelect до сих пор корректно работает только при запросе 0, INT_MAX,
если поставить с даты, то корректной работы ожидать не приходится.
Блиииин (злой, презлой смайл)
Ситуация: сделок не было три месяца, вчера открыл позицию, чуть позже закрыл. Сделал запрос HistorySelect за год, всё норм.
Открыл вторую позицию, чуть позже закрыл. Сделал запрос HistorySelect за год, нету предпоследней позиции.
Делаю запрос с начала истории, все сделки есть, делаю запрос за год, сделок предпоследней позиции нет.
Блиииин (злой, презлой смайл)
делаю запрос за год, сделок предпоследней позиции нет.
Раз воспроизводится - нужно показывать разработчикам.
Сайбер об этом писал два с половиной года назад.
Да, больше всего напрягает отсутствие нормальной обратной связи с их стороны - то ли они видели сообщение об ошибке и поставили в очередь работу над ней, то ли просмотрели... или информации им мало. Бывает быстро реагируют, а бывает так - ждёшь реакцию неделями - непоследовательность.
Согласен, без обратной связи очень грустно. Как будто в пустоту орёшь.
Предлагаю сделать тему "Баги" в которой могут писать только модераторы и админы.
Если пользователь выявил баг и его смогли воспроизвести ещё пара пользователей, то модератор переносит пост в эту тему и ссылки на подтверждающие посты.
А админы отвечают уже не по всем веткам форума, а в этой конкретной теме. Пользователи смогут зайти и почитать, без возможности захламить тему.
Например выявлены баги.
1. Не работает функция на ObjectGetInteger сервере.
2. Не работает как надо функция HistorySelect
3. Не работает ещё что то.
Заходим в эту тему и читаем ответы админов:
1. Да нафига вам эти серверы.
2. Мы эту функцию всё равно собрались убрать, поэтому исправлять ничего не будем.
3. А вы видели какие у нас сейчас возможности по нейросетям!
)))
Раз воспроизводится - нужно показывать разработчикам.
А как? Я хз. Вряд ли она воспроизводится. Думаю проблема именно в большом перерыве между сделками.
Я вообще вчера всю голову сломал, пока нашёл кто в коде косячит, а понять почему, уже сил не хватило.
Сейчас посмотрел. Только последняя позиция сделанная 2024 году попадает в конец истории при запросе с 01.01.2023, а все что были до неё в 2024 году не понятно где находятся.
HistorySelect возвращает все сделки 2023 года и в конце как вишенка на торте сделки последней позиции из 2024 года)))
Сортировка по тикетам тут не при чём, тикеты все идут по порядку, я проверил. Видимо сортировка происходит по другому принципу.
А как? Я хз. Вряд ли она воспроизводится.
Если пользователь выявил баг и его смогли воспроизвести ещё пара пользователей, то модератор переносит пост в эту тему и ссылки на подтверждающие посты.
Если пользователь выявил баг и его смогли воспроизвести ещё пара пользователей, то модератор переносит пост в эту тему и ссылки на подтверждающие посты.
Задумка интересная.
Что скажет модератор по поводу реализации?
Инвест-доступ к счету и код, показывающий проблему на этом счете.
Не получается. Счёт MetaQuotes-Demo, пароль от него я забыл, его теперь ни передать ни изменить, а инвесторский пароль без основного пароля не установить.
Но судя по всему ошибка должна быть на любом счёте.
А код для воспроизведения написан в вашей HistoryPosition, если в вашем примере изменить from_date=0 на любую дату, то распечатывается только последняя позиция