Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В OnTesterInit() глобальная переменная создаётся. И по F3 она отображается правильно.
А вот в Агенты тестирования эта глобальная переменная не попадает.
Пока решение "через дополнительную переменную" мне представляется наиболее приемлемым. Сегодня я уже не буду заниматься, а вот завтра с утра - попробую.
если по F3 она отображается, ТО ЭТО ОШИБКА
у тестера/оптимизатора и терминала - разные пространства имён
Разве TimeLocal() в проходе тестера возваращает время на компьютере? Мне казалось, что эта функция возвращает время в среде самого тестируемого эксперта.
Как мне кажется, такая функция прервёт работу эксперта в одиночном проходе.
А требуется прервать процесс оптимизации при достижении условия (либо максимального времени, либо необходимого значения OnTester()
Я не прав?
Здравствуйте, Георгий! Вот ссылка, в которой найдёте ответ на Ваш вопрос.
С уважением, Владимир.
Интересное наблюдение: в функции OnTesterPass(), когда выясняется, что оптимизация идёт слишком долгое время - вызываю функцию ExpertRemove().
Эксперт, видимо, снимается с тестирования, происходит обработка фреймов, собранных за прошедшее время, формируется нормальный файл отчета (моими, внутренними функциями), но сам процесс оптимизации продолжается дальше.
Значит, нельзя в OnTesterPass() остановить оптимизацию.
Ищем варианты дальше.
Здравствуйте, Георгий! Вот ссылка, в которой найдёте ответ на Ваш вопрос.
С уважением, Владимир.
Ну так я и говорю - моделируемому времени. А задача - ограничить общее время всей оптимизации. То есть, нужно знать не моделируемое время, а время на локальном компьютере, и когда оно превысит заданный период - прекратить оптимизацию, остановившись на максимальном достигнутом результате.
Пока что, как я вижу - вариант с дополнительной переменной наилучший. При начале оптимизации каждый агент получает время старта через дополнительную переменную, а внутри OnInit() анализирует текущее время (причём, получать его надо не через TimeLocal(), а через создание временного файла и анализ параметров его создания), и если прошло слишком много времени - возвращать AGENT_NOT_SUITABLE.
Сегодня я уже не буду заниматься, а вот завтра - попробую.Интересное наблюдение: в функции OnTesterPass(), когда выясняется, что оптимизация идёт слишком долгое время - вызываю функцию ExpertRemove().
Эксперт, видимо, снимается с тестирования, происходит обработка фреймов, собранных за прошедшее время, формируется нормальный файл отчета (моими, внутренними функциями), но сам процесс оптимизации продолжается дальше.
Значит, нельзя в OnTesterPass() остановить оптимизацию.
Ищем варианты дальше.
Нельзя никак. Даже если программно закрыть в терминале тот чарт, на котором выполняется контролирующая оптимизацию копия эксперта (в котором срабатывают OnTesterXXX-события). ИМХО, это баг, но есть как есть.
если по F3 она отображается, ТО ЭТО ОШИБКА
у тестера/оптимизатора и терминала - разные пространства имён
Да, возможно.
Вот и проблема в том, чтобы из терминала в тестер передать данные "в другое пространство".
Да, возможно.
Вот и проблема в том, чтобы из терминала в тестер передать данные "в другое пространство".
не просто "да, возможно", но если в OnTesterInit установка глоб.переменной меняет (или устанавливает) значения которые вы видите тыкнув F3 терминала, это не "проблема", это @#па
Разве TimeLocal() в проходе тестера возваращает время на компьютере? Мне казалось, что эта функция возвращает время в среде самого тестируемого эксперта.
Как мне кажется, такая функция прервёт работу эксперта в одиночном проходе.
А требуется прервать процесс оптимизации при достижении условия (либо максимального времени, либо необходимого значения OnTester()
Я не прав?
Это скрипт, запуск которого в Терминале запустит Оптимизатор любого выбранного в нем советника и прервет эту оптимизацию через заданное время.
Ну так я и говорю - моделируемому времени. А задача - ограничить общее время всей оптимизации. То есть, нужно знать не моделируемое время, а время на локальном компьютере, и когда оно превысит заданный период - прекратить оптимизацию, остановившись на максимальном достигнутом результате.
Пока что, как я вижу - вариант с дополнительной переменной наилучший. При начале оптимизации каждый агент получает время старта через дополнительную переменную, а внутри OnInit() анализирует текущее время (причём, получать его надо не через TimeLocal(), а через создание временного файла и анализ параметров его создания), и если прошло слишком много времени - возвращать AGENT_NOT_SUITABLE.
Сегодня я уже не буду заниматься, а вот завтра - попробую.А через GetTickCount() никак не пойти? Или там тоже моделируемые?
Это скрипт, запуск которого в Терминале запустит Оптимизатор любого выбранного в нем советника и прервет эту оптимизацию через заданное время.
Надо разобраться. Хорошо звучит, именно то, что надо.