Новая версия платформы MetaTrader 5 build 2280 - страница 4

 
traveller00:

Билд 2280. Прогоняется следующий советник (ниже). По идее исходя из документации при ExpertRemove он должен быть удалён с графика через 3 секунды. Реально же в лог выводится, что был вызван ExpertRemove, но сам советник остаётся. И, к примеру при перезапуске MetaTrader, снова вешается на график и начинает работать. Баг или фича?

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

Новая версия платформы MetaTrader 5 build 2190

fxsaber, 2019.11.22 21:57

Успеете поправить этот баг? ExpertRemove не срабатывает в этой ситуации.

class A
{
public:
  ~A()
  {
    Print(__FUNCSIG__);
  }
} a;

const bool Init = EventSetTimer(1);

void OnTimer()
{
  EventKillTimer(); // Если это закомментировать, то все норм.
  ExpertRemove();
  Print("ExpertRemove()");
}
 
Artyom Trishkin:

OnTick() запустите хоть раз. ExpertRemove() не удаляет советник, а взводит флаг необходимости удаления на следующем тике.

А если нету больше тиков? На это как-то можно влиять из советника? Или он обречён висеть в ожидании внешнего и независящего от него события, хотя вроде как и отдал команду выгрузиться?

 

После обновления ваших VPS до 2280 у меня перестали мигрировать эксперты на сервер.

По логам все хорошо, только через секунду все эксперты автоматически удаляются.

Создал тему 4 часа назад, но видимо админы ее не читают.

Сервисдеск не дает выбрать технические вопросы. Куда писать - непонятно.

Не очень приятно, у меня там открытые позиции и робот должен их сопровождать.

 
SEM:

Похоже ошибка с буфером спрэда, данные не совпадают и занижены. Такая ситуация по всем символам кроме мажоров и кроссов.

График чистый, без индикаторов.


Какой сервер?

Задайте вопрос про спред Вашему брокеру

 
RickD:
Что-то когда-то изменилось, OnTimer теперь срабатывает в тестере?
OnTimer работал в пятёрочном тестере с самого начала
 
Roffild:

А еще увеличилось время передачи структур в библиотечную функцию аж в 2 раза.

Как делали замеры?

 
traveller00:

Билд 2280. Прогоняется следующий советник (ниже). По идее исходя из документации при ExpertRemove он должен быть удалён с графика через 3 секунды. Реально же в лог выводится, что был вызван ExpertRemove, но сам советник остаётся. И, к примеру при перезапуске MetaTrader, снова вешается на график и начинает работать. Баг или фича?

Вы какую задачу хотите решить? Однократное выполнение кода?

Для этого есть специальный тип mql5-программ - скрипты

 
traveller00:

А если нету больше тиков? На это как-то можно влиять из советника? Или он обречён висеть в ожидании внешнего и независящего от него события, хотя вроде как и отдал команду выгрузиться?

Вы совсем не читаете документацию

 
Slava:

Вы какую задачу хотите решить? Однократное выполнение кода?

Для этого есть специальный тип mql5-программ - скрипты

Так это же результат вырезания из кода всего лишнего. Там баг.

 
fxsaber:

Так это же результат вырезания из кода всего лишнего. Там баг.

С чего это?

Просто не надо вызывать EventKillTimer вместе с ExpertRemove и не будет никакого бага. Документацию надо читать. Внимательно.

Документация по MQL5: Работа с событиями / EventKillTimer
Документация по MQL5: Работа с событиями / EventKillTimer
  • www.mql5.com
Обычно эта функция должна вызываться из функции OnDeinit() в том случае, если в функции OnInit() была вызвана функция EventSetTimer(). Либо должна вызываться из деструктора класса, если в конструкторе этого класса вызывается функция EventSetTimer(). Каждый...
Причина обращения: