как скрыть название настроек советника в параметрах? - страница 5

 
Vladimir Simakov:
Только сет-файл должен лежать уже в папке \Files

Не обязательно. У меня на ВПС (нормальном) около 10 терминалов. ДОпустим надо мне поменять настройки у всех сразу. Я заменяю файл в общей папке (для всех терминалов) и каждый робот считывает настройки из одного и того же файла. При этом оптмимзация происходит с этим же роботом только параметры вынесены в свойство советника. 

 
спасибо всем за неравнодушие)
 
Pavel Malyshko #:

пролистал 700 строк кода,но imput не нашёл(

Тут в  основной  своей  массе  пустозвоны , а не  разрабы  99,99% 

 

Прочёл все комменты. Вашу идею, топикстартер, осуществить можно БЕЗ сет-файлов. Какая разница, будет у Вас набор сет-файлов или набор советников для разных ситуаций, один чёрт набор создавать. Можно сделать так:

строки вида:

extern int TP=20;// размер тейкпрофита в пунктах

заменяете на строки вида:

int TP=20;// размер тейкпрофита  в пунктах .

То есть, просто убираете слово extern. Затем меняете в этих переменных значения на нужные. Например, для торговли на Д1 Вам нужен тейк не 20, а 5000 пунктов. Соответственно пишете:

int TP=5000;// размер тейкпрофита  в пунктах

Задав все нужные значения переменных, сохраняете файл советника с новым именем.Если файл был "Название_Советника.mq4", то теперь он станет  "Название_Советника_EURUSD_D1.mq4". После этого можно откомпилировать экспера и файл "Название_Советника_EURUSD_D1.ex4отдать покупателю.

К сожалению на Вашем скриншоте не видно, какая из функций запускает советника в работу. Но в общем виде это можно сделать примерно так. Ранее советники имели только встроенные функции инициализации, деинициализации и старта, который содержал весь код советника. Выглядело это вот так:

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init(){
   return(0);
 }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit(){
        return(0);
}
//+------------------------------------------------------------------+
//| Начало работы советника                                          |
//+------------------------------------------------------------------+
int start(){
  return(0);
}
//+ Конец работы советника +

Зачем я это говорю? Дело в том, что Вы могли бы подстраховаться на случай, если клиент попытается работать Вашим советником не на том инструменте или не на том таймфрейме. В результате старт советника, который исполняется на каждом тике, выглядел бы так:

//+------------------------------------------------------------------+
//| Начало работы советника                                          |
//+------------------------------------------------------------------+
int start(){
  if(Symbol()!="EURUSD" || Period()!=1440){
    return(0);
  }
// Далее идёт основной код Вашего советника
return(0);
}
//+ Конец работы советника +

То есть этим вставленным кодом советник на каждом тике сперва делает проверку. Если символьное имя инструмента не EURUSD, или таймфрейм не D1 (не 1440 минут), то прервать работу советника, вернув терминалу ноль

return(0);

Сделав для каждой валютной пары и для каждого нужного Вам таймфрейма отдельные версии советника, Вы можете высылать полный комплект покупателю (с пояснением, что для каждой валютной пары из перечисленных, своя версия эксперта).

Фактически вы проделаете чуть больше работы, чем с созданием сет-файлов, зато решите свою проблему без дополнительного геморроя.

Это не совсем красивое решение, но по крайней мере - это решение. И оно работает.