Ваши вопросы по языку MQL4

eevviill

Заблокирован
Уважаемые знатоки MQL.
Хотел бы задать вопрос по поводу внешних переменных советника, индикатора не важно.
Есть ли в MQL возможность сделать переменные неактивными для выбора (серым цветом обычно)? А именно например, есть булевый параметр, который включает и выключает использование, например, стохастика. При выборе true стохастик применяется и все его переменные можно изменить, а при выборе false стохастик не используется в торговле и по идее нужно сделать, чтобы переменные были неактивными и их нельзя было менять. Возможно ли сделать такое средствами MQL ?
Спасибо.
Неа.
 

matro3

Почетный гражданин
_https://www.mql5.com/ru/docs/basis/variables/inputvariables
 
Последнее редактирование модератором:

Andy200577

Новичок форума

Я видел в одном советнике, что во входных параметрах есть строчки, которые нельзя менять, они описывают следующие за этой строкой параметры, потом опять строчка описания и опять параметры. Например "Параметры индикатора стохастик", пос этого идет например K = 5, D = 3, Z =3. Вот как сделать, чтобы строка "Параметры индикатора стохастик" не подлежала изменениям и была серым цветом выделена?
 

Lender

Активный участник
Я видел в одном советнике, что во входных параметрах есть строчки, которые нельзя менять, они описывают следующие за этой строкой параметры, потом опять строчка описания и опять параметры. Например "Параметры индикатора стохастик", пос этого идет например K = 5, D = 3, Z =3. Вот как сделать, чтобы строка "Параметры индикатора стохастик" не подлежала изменениям и была серым цветом выделена?

можно скрин того что ты видел?)
 

Andy200577

Новичок форума
можно скрин того что ты видел?)

К сожалению потерял этого советника, но то что видел, это точно )
Решил также сделать у себя в советнике, думал, что тут все просто и я чего-то не знаю, но судя по ответам, не так всё просто )
В прочем это всего лишь удобное описание внешних параметров. После такой строки серым цветом сразу понятно, что означают параметры после этой строки, но это совсем не обязательно.
 

matro3

Почетный гражданин

Я же дал ссылку, нужно просто почитать...

Переменные с модификатором sinput

В некоторых случаях бывает необходимо исключить некоторые внешние параметры программы из формирования области всех возможных проходов в тестере. Специально для таких случаев существует модификатор памяти sinput. sinput - это сокращенное написание объявления статической внешней переменной: sinput = static input. То есть такое объявление в коде советника

sinput int layers=6; // Количество слоев
будет эквивалентно полному объявлению
static input int layers=6; // Количество слоев

Переменная, объявленная с модификатором sinput, является входным параметром MQL5-программы, значение этого параметра можно изменять при её запуске. Но при этом данная переменная не участвует в процессе оптимизации входных параметров, то есть не производится перебор её значений при поиске наилучшего набора параметров по заданному критерию.

sinput.png


На рисунке показано, что эксперт имеет 5 внешних параметров, из них параметр "Количество слоев" объявлен как sinput и равен 6. Этот параметр не может изменяться в процедуре оптимизации торговой стратегии, для него возможно установить нужное значение, которое и будет использоваться. Поля Старт, Шаг и Стоп для такой переменной не доступны для установки значений.

Таким образом, задав для переменной модификатор sinput, мы запрещаем пользователю оптимизировать данный параметр. Это значит, что в тестере стратегий пользователю терминала становится недоступным задавать для неё начальное и конечное значения для автоматического перебора в указанном диапазоне в процессе оптимизации.
 

Andy200577

Новичок форума
Я же дал ссылку, нужно просто почитать...


Лично внимательно прочитал, то о чём я спрашиваю там НЕТУ!
Там есть только про то, как исключить из оптимизации параметры, а я спрашивал про отображение во "Входящие параметры" как такое сделать.
 

matro3

Почетный гражданин
Значит я совсем не понимаю что нужно )))
Если нужно убрать из внешних переменных что-то, то нужно не объявлять эти переменные внешними.
Т.е.
Код:
input bool useInd = true;
написать как
Код:
bool useInd = true;
Если нельзя менять какой-то параметр, то нечего ему делать во внешних переменных.
 

Andy200577

Новичок форума
Я же дал ссылку, нужно просто почитать...


Вот выдержка из вашей статьи:
Переменная, объявленная с модификатором sinput, является входным параметром MQL5-программы, значение этого параметра можно изменять при её запуске.
А я спрашивал про то, чтобы сделать так, что эту переменную нельзя было бы изменять при запуске.
 

ansol

Местный знаток
Значит я совсем не понимаю что нужно )))
Если нужно убрать из внешних переменных что-то, то нужно не объявлять эти переменные внешними.
Т.е.
Код:
input bool useInd = true;
написать как
Код:
bool useInd = true;
Если нельзя менять какой-то параметр, то нечего ему делать во внешних переменных.

Он имеет в виду, что если переменная false, то следующую за ней переменную нельзя менять, а если true - то можно.

По-моему, так не сделать.
 

Andy200577

Новичок форума
Значит я совсем не понимаю что нужно )))
Если нужно убрать из внешних переменных что-то, то нужно не объявлять эти переменные внешними.
Т.е.
Код:
input bool useInd = true;
написать как
Код:
bool useInd = true;
Если нельзя менять какой-то параметр, то нечего ему делать во внешних переменных.

Я же писал уже.
Например переменная типа string = "Параметры стохастика", она описывает, что дальше идут его параметры. Но её можно изменить (хоть и бестолку) точно также как и другие параметры. А хотелось бы сделать так, чтобы она была жестко задана и выделена серым цветом, это выглядит более красиво на мой взгляд.
 

matro3

Почетный гражданин
Понятно, но я говорю:
Если нельзя менять какой-то параметр, то нечего ему делать во внешних переменных.
А так да. Такого способа нет. Видимо в виду его ненужности.
 

Andy200577

Новичок форума
Понятно, но я говорю:

А так да. Такого способа нет. Видимо в виду его ненужности.

Я вообще думаю, может это вовсе и не переменная была...
Возможно ли во входящие параметры кроме самих переменных вставлять также некие строчки описания, чтобы они там отображались?
 

ansol

Местный знаток
Напиши так:
PHP:
extern string    Descr1   = "Метод МА: 0 - SMA, 1 - EMA, 2 - SMMA, 3 - LWMA";
extern int       Method   = 1;
И посмотри что будет, может и оно
 

Andy200577

Новичок форума
Правое поле(для значения переменной) всегда будет меняться, если задано extern или input
Я сам уже это начинаю понимать. Вот и спросил, может это не переменная вовсе, а возможно какие-то описания вставлять во входящие параметры не через переменные string ?
 
Верх