Вопросы от "чайника" - страница 198

 
lazarev-d-m:

из этого условия выходит, что оно будет выполнять в трех ситуациях:

1)Когда работает тестер 

2)Когда тестер НЕ работает

3)Когда работает визуальный тестер

таким образом функция будет всегда работать, скорее всего вам надо убрать второе условие, а первое и третье соединить с помощью && 

Скорее так:

2 или (1 и 2). Что мне и надо. Чтобы не было в тестере, но было в визуальном режиме тестера.

Я извиняюсь, но вроде я просто спутал терминалы и тестил не тот код. Кажется мое условие работает корректно.

 
lazarev-d-m:

таким образом функция будет всегда работать, скорее всего вам надо убрать второе условие, а первое и третье соединить с помощью && 

Вы имеете в виду, что достаточно такого условия:

if(MQL5InfoInteger(MQL5_TESTER)!=1 || MQL5InfoInteger(MQL5_VISUAL_MODE)==1)

 
tor4en:

Вы имеете в виду, что достаточно такого условия:

if(MQL5InfoInteger(MQL5_TESTER)!=1 || MQL5InfoInteger(MQL5_VISUAL_MODE)==1)

Да, так тоже работает. Спасибо.
 
Как можно влиять на оптимизируемый параметр, если его диапазон зависит от другого оптимизируемого параметра?Вызывать в 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 из заданного списка, и закрытие терминала? Поделитесь, пожалуйста, идеями как это можно сделать. Лучшим вариантом было бы предложение готового решения по автоматизации описанного выше процесса. Наверняка кто-то до меня над этим уже ломал голову.

 
В конфиг файле есть команда автоматического закрытия терминала по окончании теста. Посмотрите в справке.
 
papaklass:

Renat, ну сделайте для четверки STORAGE, ПОЖАЛУЙСТА. Скинул в ноут эксперта, а инклудники забыл. Теперь, как простой :) программист сижу и пишу функции вместо того, чтобы отлаживать работу эксперта.

Флешка  наш надежный STORAGE :)

ЗЫ, ну и еще почта иногда

 
sergeev:

Флешка  наш надежный STORAGE :)

ЗЫ, ну и еще почта иногда

Флешка - я бы поспорил, часто они ломаются. 

У меня висит Внешний ЖД автоматически проводящий синхронизацию 1 раз в день(около 300 гиг рабочих файлов) Если еду куда нить - бросил в сумку и счастье.

 

Говорят что ssd накопители вообще не убиваемы. Но очень дорогие. 

Причина обращения: