Как можно влиять на оптимизируемый параметр, если его диапазон зависит от другого оптимизируемого параметра?Вызывать в oninit expertremove в случае если параметр не подходит?Как оптимально сделать, чтобы ускорить оптимизацию?
aharata: Как можно влиять на оптимизируемый параметр, если его диапазон зависит от другого оптимизируемого параметра?Вызывать в oninit expertremove в случае если параметр не подходит?Как оптимально сделать, чтобы ускорить оптимизацию?
Посмотрите на функции ParameterSetRange и ParameterGetRange. Они как раз позволяют перезаписывать перебираемый параметр на основе ранее выставленных нечисловых условий.
Например, вот так:
//--- input parameters
sinput int Param1=4; // хитрый параметр
sinput int Param2=30; // хитрый параметр
sinput bool Param3=false; // хитрый параметр
sinput long Counter=1; // а вот этот параметр мы и будем оптимизировать (синтетический счетчик)
//--- на основе Param1, Param2 и Param3 высчитаем хитрое количество проходов счетчика Counter
ParameterSetRange("Counter",true,0,0,1,1+long(Param3 ? (Param1*Param2):(Param1*2));
Обратите внимание на использование sinput (static input) вместо input, что дает блокировку изменения "от" и "до" этого параметра в GUI. Причем аналогично выставленный заблокированным для изменений параметр Counter с помощью функции ParameterSetRange разблокируется с выставлением расчетных пределов.
С помощью такого механизма можно делать очень сложные входные условия, по которым крутятся синтетические расчетные счетчики. Не забудьте только, что функция установки параметров работает только в OnTesterInit.
Вопрос по организации цикла запуска терминала для проведения тестирования с использованием командной строки.
Текущая ситуация: 1. Использую командную строку для запуска терминала для оптимизации советника. 2. Терминал запускается, проводит оптимизацию, записывает результат в xml файл. 3. Вручную закрываю терминал 4. Редактирую файл ini (меняю например период тестирования)
5. Перехожу к пункту 1.
Вопрос: кто-нибудь уже смог автоматизировать данный процесс, включая автоматический выбор параметров для файла ini из заданного списка, и закрытие терминала? Поделитесь, пожалуйста, идеями как это можно сделать. Лучшим вариантом было бы предложение готового решения по автоматизации описанного выше процесса. Наверняка кто-то до меня над этим уже ломал голову.
Renat, ну сделайте для четверки STORAGE, ПОЖАЛУЙСТА. Скинул в ноут эксперта, а инклудники забыл. Теперь, как простой :) программист сижу и пишу функции вместо того, чтобы отлаживать работу эксперта.
У меня висит Внешний ЖД автоматически проводящий синхронизацию 1 раз в день(около 300 гиг рабочих файлов) Если еду куда нить - бросил в сумку и счастье.
Говорят что ssd накопители вообще не убиваемы. Но очень дорогие.
из этого условия выходит, что оно будет выполнять в трех ситуациях:
1)Когда работает тестер
2)Когда тестер НЕ работает
3)Когда работает визуальный тестер
таким образом функция будет всегда работать, скорее всего вам надо убрать второе условие, а первое и третье соединить с помощью &&
Скорее так:
2 или (1 и 2). Что мне и надо. Чтобы не было в тестере, но было в визуальном режиме тестера.
Я извиняюсь, но вроде я просто спутал терминалы и тестил не тот код. Кажется мое условие работает корректно.
таким образом функция будет всегда работать, скорее всего вам надо убрать второе условие, а первое и третье соединить с помощью &&
Вы имеете в виду, что достаточно такого условия:
if(MQL5InfoInteger(MQL5_TESTER)!=1 || MQL5InfoInteger(MQL5_VISUAL_MODE)==1)
Вы имеете в виду, что достаточно такого условия:
if(MQL5InfoInteger(MQL5_TESTER)!=1 || MQL5InfoInteger(MQL5_VISUAL_MODE)==1)
Как можно влиять на оптимизируемый параметр, если его диапазон зависит от другого оптимизируемого параметра?Вызывать в oninit expertremove в случае если параметр не подходит?Как оптимально сделать, чтобы ускорить оптимизацию?
Посмотрите на функции ParameterSetRange и ParameterGetRange. Они как раз позволяют перезаписывать перебираемый параметр на основе ранее выставленных нечисловых условий.
Например, вот так:
Обратите внимание на использование sinput (static input) вместо input, что дает блокировку изменения "от" и "до" этого параметра в GUI. Причем аналогично выставленный заблокированным для изменений параметр Counter с помощью функции ParameterSetRange разблокируется с выставлением расчетных пределов.
С помощью такого механизма можно делать очень сложные входные условия, по которым крутятся синтетические расчетные счетчики. Не забудьте только, что функция установки параметров работает только в OnTesterInit.
Текущая ситуация:
1. Использую командную строку для запуска терминала для оптимизации советника.
2. Терминал запускается, проводит оптимизацию, записывает результат в xml файл.
3. Вручную закрываю терминал
4. Редактирую файл ini (меняю например период тестирования)
5. Перехожу к пункту 1.
Вопрос: кто-нибудь уже смог автоматизировать данный процесс, включая автоматический выбор параметров для файла ini из заданного списка, и закрытие терминала? Поделитесь, пожалуйста, идеями как это можно сделать. Лучшим вариантом было бы предложение готового решения по автоматизации описанного выше процесса. Наверняка кто-то до меня над этим уже ломал голову.
Renat, ну сделайте для четверки STORAGE, ПОЖАЛУЙСТА. Скинул в ноут эксперта, а инклудники забыл. Теперь, как простой :) программист сижу и пишу функции вместо того, чтобы отлаживать работу эксперта.
Флешка наш надежный STORAGE :)
ЗЫ, ну и еще почта иногда
Флешка наш надежный STORAGE :)
ЗЫ, ну и еще почта иногда
Флешка - я бы поспорил, часто они ломаются.
У меня висит Внешний ЖД автоматически проводящий синхронизацию 1 раз в день(около 300 гиг рабочих файлов) Если еду куда нить - бросил в сумку и счастье.
Говорят что ssd накопители вообще не убиваемы. Но очень дорогие.