Вопрос можно ли в МТ4 в вводных данных сделать свое выпадающее меню - страница 2

 
Taras Slobodyanik:

extern удобен тем что его можно модифицировать.
Иначе приходится дублировать переменные, чтобы проверить(изменить) правильность ввода.

extern не виден в мт5, а писать НЕ кроссплатформенные коды - это высший пилотаж программирования :)

 
Vitaly Muzichenko:

extern не виден в мт5, а писать НЕ кроссплатформенные коды - это высший пилотаж программирования :)

ну, кому "страшный сон", кому "высший пилотаж" )

просто удобство, которое убрали в МТ5
 
Taras Slobodyanik:

ну, кому "страшный сон", кому "высший пилотаж" )

просто удобство, которое убрали в МТ5

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

 
Alexey Viktorov:

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

Я правильно понимаю, в МТ5 вводимые данные по input изменять по ходу работы программы нельзя, и необходимо переназначение?

 
Valeriy Yastremskiy:

Я правильно понимаю, в МТ5 вводимые данные по input изменять по ходу работы программы нельзя, и необходимо переназначение?

Да, всё верно. И логично. Входная переменная на то и входная, что должна остаться такой, какой её ввёл пользователь, а не меняться программой как ей вздумается.
Соответственно, для входных переменных есть дополнительные "вкусности", в отличии от extern-переменных, как пример - облегчающих хранение программы в разных файлах.

Ещё одним плюсом невозможности программного изменения введённого значения input-переменной является то, что всегда можно вернуть одним нажатием кнопки мышки программу к её состоянию "как при запуске": введённые значения в OnInit() копируются в обычные глобальные переменные (при этом ещё и проводится контроль ввода ошибочных значений), а затем - уже программно - значения переменных-копий можно менять по логике программы. Но всегда можно заново назначить для них введённые при запуске программы значения, например - нажатием на кнопку в GUI программы.

Taras Slobodyanik:

ну, кому "страшный сон", кому "высший пилотаж" )

просто удобство, которое убрали в МТ5

Поясните пожалуйста в чём удобство затирания введённых пользователем значений?

Представьте, что терминал сам поменяет значения настроек, которые вы выполнили вручную. Удобно?

А почему mql-программа должна иметь право сама изменять настройки, введённые пользователем?

Документация по MQL5: Основы языка / Переменные / Input переменные
Документация по MQL5: Основы языка / Переменные / Input переменные
  • www.mql5.com
указывается перед типом данных. Изменять значение переменной с модификатором input внутри mql5-программы нельзя, такие переменные доступны только для чтения. Изменять значения input-переменных может только пользователь из окна свойств программы. Внешние переменные всегда переинициализируются непосредственно перед вызовом OnInit().   Существует...
 
Artyom Trishkin:

Да, всё верно. И логично. Входная переменная на то и входная, что должна остаться такой, какой её ввёл пользователь, а не меняться программой как ей вздумается.
Соответственно, для входных переменных есть дополнительные "вкусности", в отличии от extern-переменных, как пример - облегчающих хранение программы в разных файлах.

Ещё одним плюсом невозможности программного изменения введённого значения input-переменной является то, что всегда можно вернуть одним нажатием кнопки мышки программу к её состоянию "как при запуске": введённые значения в OnInit() копируются в обычные глобальные переменные (при этом ещё и проводится контроль ввода ошибочных значений), а затем - уже программно - значения переменных-копий можно менять по логике программы. Но всегда можно заново назначить для них введённые при запуске программы значения, например - нажатием на кнопку в GUI программы.

Поясните пожалуйста в чём удобство затирания введённых пользователем значений?

Представьте, что терминал сам поменяет значения настроек, которые вы выполнили вручную. Удобно?

А почему mql-программа должна иметь право сама изменять настройки, введённые пользователем?

Удобство у всех разное. А у разработчиков пользователей и других групп имеет коренные отличия обычно))) К тому же все имеет стоимость. Сохранение вводимых данных бесспорно. Но любое сохранение требует переменных. В общем логика понятна, не всем приятна, но как есть. Главное что бы логика была понятна. Вопрос про привидение типов. Можно ли привести типы без ввода технических переменных. double n1; string  ns1=string (n1); Можно ли как то вставить в текстовую переменную числовую без дополнительных переменных.

 
Artyom Trishkin:

Поясните пожалуйста в чём удобство затирания введённых пользователем значений?

Представьте, что терминал сам поменяет значения настроек, которые вы выполнили вручную. Удобно?

А почему mql-программа должна иметь право сама изменять настройки, введённые пользователем?

именно об удобстве и идет речь)

Например:

- индикатор что-то рисует на чарте, а при рестарте читает эти данные в те же переменные, а не делает копии.
- или имена шаблонов для ТФ, пользователю удобней ввести просто имя, без расширения. То есть нужно или сразу "подправить", добавить .tpl или потом каждый раз делать проверку и добавлять при открытии чарта.
- ну и проверка переменных, чтобы не выходили за нужные пределы.

Это жеж не супер-навороченый ооп-проект, а простой робот. Именно удобство делает мт4 до сих пор популярным.

 
Taras Slobodyanik:

именно об удобстве и идет речь)

Например:

- индикатор что-то рисует на чарте, а при рестарте читает эти данные в те же переменные, а не делает копии.
- или имена шаблонов для ТФ, пользователю удобней ввести просто имя, без расширения. То есть нужно или сразу "подправить", добавить .tpl или потом каждый раз делать проверку и добавлять при открытии чарта.
- ну и проверка переменных, чтобы не выходили за нужные пределы.

Это жеж не супер-навороченый ооп-проект, а простой робот. Именно удобство делает мт4 до сих пор популярным.

"Удобно" только для "сам для себя". Но с введением и развитием маркета, любой начал пытаться продавать то, что для себя слепил. Но тут-то и наступает ответственность. За свою программу. Не перед собой, а перед покупателями. И наступает совсем иной уровень той самой ответственности, выливающийся в качество программы с её усложнением. При этом нужно забыть про "ай, и так сойдёт" 

 

Вопрос про привидение типов. Он тоже требует дополнительных переменных. Удобно же в наименовании объекта на графике видеть так же какие то данные. Можно ли привести типы без ввода технических переменных.

double n1; string  ns1=string (n1); string Nmaxbar = "Nmaxbar = " + ns1;

Можно ли как то вставить в текстовую переменную числовую без дополнительных переменных.

 
Artyom Trishkin:
"Удобно" только для "сам для себя". Но с введением и развитием маркета, любой начал пытаться продавать то, что для себя слепил. Но тут-то и наступает ответственность. За свою программу. Не перед собой, а перед покупателями. И наступает совсем иной уровень той самой ответственности, выливающийся в качество программы с её усложнением. При этом нужно забыть про "ай, и так сойдёт" 

Не думаю что дело в маркете. Погоня за возможностями почти всегда приводит к усложнению и желанию убрать лишнее. Но в случае МТ4 -> МТ5 для меня, и судя по всему не только для меня, тоже не все логично.

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