Самообучение языку MQL5 с полного нуля - страница 47

 

Vladimir Simakov:

Посмотрел кореш на это непотребство и молвил: 250 тыр. зарплата мне и по 75 тыр. двум моим джунам, а мы эту хрень за полгода перепишем или выкидывай нахрен.

вот это правильное решение судя по сетапу, с описанным подходом проблемы с ГП будут просто всегда.

 
MrBrooklin:

Прочитал все сообщения про глобальные переменные и понял, что именно хотели донести до меня все участники этой дискуссии. Буду учиться писать программный код, стараясь при этом не использовать глобальные переменные. За конструктивные советы всем спасибо!

С уважением, Владимир.

Программисты боятся использовать глоб.переменные, из за ошибок возникающих при изменении их значения. Создается ситуация когда ошибку сложно локализовать, поскольку каждая функция может их менять. Естественно, что в глобальной области должны существовать только те переменные, видеть которые должны все функции программы. По другому и быть не может. 

Мне всегда нравилось использовать глоб.переменные, потому что они обеспечивали быстрый рост функционала, а программа превращалась в огромную, активную стройку. Часто ставили в упрек то, как я пишу код, но на то она и стройка, что чистота наводится после завершения основных работ по возведению здания, а когда дом построен, можно занятся облицовкой, покраской, уборкой территории. До этого времени, в приоритете остается сборка опалубки и заливка бетоном.)

Однако, программисты мыслять иначе. Они будут "мыть" и "драять" свой код, даже если он в две с половиной строчки. Программа с "гулькин нос", но блестеть у них будет... как новая монета.)) Такое отношение к коду оправдано их профессией, которой они живут, но с творческой точки зрения, они зажаты и плохо развиваются. Так уж получается...

Мой совет: учитесь писать правильно, но иногда позволяйте себе отойти от правил и экспериментировать, чтобы обрести более разнообразный опыт. Это поможет в обучении и Вы быстрее усвоите материал.
 
MrBrooklin:

Продолжаю изучение языка программирования MQL5. Снова выкладываю доработанный код скрипта с учетом подсказок от участников данной темы. Произведена проверка работы скрипта на всех режимах. Проблемы не выявлены. Для начала применил минимальное количество входных параметров. Код скрипта написан на английском языке, а комментарии к коду на русском языке, чтобы облегчить усвоение материала. В данном скрипте постарался всё расписать, как ранее и обещал, в изложении доступном для ученика 1-го класса школы программирования.

Надеюсь, что теперь сделал именно так, как мне объяснили участники данной темы, но могу и ошибаться.

С уважением, Владимир.

Здорово, что Вы сами догадались как и куда перенести глоб.переменную bool enough_timе. Делаете успехи.
 
Реter Konow:
Здорово, что Вы сами догадались как и куда перенести глоб.переменную bool enough_timе. Делаете успехи.

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

С уважением, Владимир.

 

Всем доброго утра и хорошего настроения!

Уважаемые специалисты в области программирования! Выражаю Вам искреннюю благодарность за все подсказки и конструктивные советы, которыми Вы делитесь со мной!

С уважением, Владимир.

 
MrBrooklin:

Всем доброго утра и хорошего настроения!

Уважаемые специалисты в области программирования! Выражаю Вам искреннюю благодарность за все подсказки и конструктивные советы, которыми Вы делитесь со мной!

С уважением, Владимир.


Вы быстро двИжетесь... :-)
Это из-за базового высшего технического образования, если не ошибаюсь...

 
Aleksey Masterov:

Вы быстро двИжетесь... :-)
Это из-за базового высшего технического образования, если не ошибаюсь...

Здравствуйте, Алексей! Да, всё правильно, у меня советское высшее техническое образование, связанное с автоматизацией процессов в производстве и опыт работы инженером-электронщиком в организации, которая занималась, в те же советские времена, ремонтом ЕС ЭВМ.

С уважением, Владимир

 
MrBrooklin:

Здравствуйте, Алексей! Да, всё правильно, у меня советское высшее техническое образование, связанное с автоматизацией процессов в производстве и опыт работы инженером-электронщиком в организации, которая занималась, в те же советские времена, ремонтом ЕС ЭВМ.

С уважением, Владимир


Это сразу у Вас заметно, для меня... по уровню и скорости движа Вашего в этом "искусстве" перекладки фантазий в код, тем более таких философичных, как в крайнем Вашем скрипте!!! :-)
ИМХО, если продолжите в таких темпах утрете тут носы многим а ля экспертам проггерам... :-)
Проситесь на удаленку к команду метаквотес МТ5!!!
 
Vasiliy Sokolov:

Продолжение

Из поста выше было понятно, что основное внимание уделяется функциям. Все было посвящено им, и ничему кроме них. Можно посчитать что это явный субъективный перекос или некая заумная "философия". Однако никакой философии здесь нет. И такое внимание к функциям не случайно. Дело в том, что в программировании, функция имеет фундаментальное значение. Более того, в математике функция также очень важное и фундаментальное понятие. В 20-ых годах прошлого века Алонзо Черчем была разработана система исчисления основанная на функциях. Она была названа лямбда-исчислением. Эта система формализовала понятие вычислимости и плотно связывала компьютерные вычисления и математику.  На основе лямбда-исчисления ведущими программистами мира были разработаны так называемые функциональные языки программирования, в которых функции отводится ведущее место. Например в функциональном языке программирования Haskell нет даже цикла for или чего-то подобного. Вместо этого предлагается вызывать функцию специальным образом, рекурсивно, для вычисления нужного значения. Можно доказать, что имея в наличии только функции и запрет на присваивание, можно написать тьюринг-полный язык программирования. Это такой язык на котором было бы возможно написать все, что возможно на любой другом тьюринг-полном языке, вроде процедурного или ООП языка.

MQL не функциональный язык, а скорее процедурный, расширяемый классами, со строгой типизацией и богатым предметно-ориентированным API (в виде тех же функций, о неожиданность). С другой стороны, теория функций базируется на прочном математическом фундаменте, предлагает простые и действенные паттерны использования любого языка программирования где есть функции, поэтому от функций и математической базы, которая за ними стоит, отказываться как минимум не дальновидно. Поэтому столь большое внимание я уделяю функциями. Не важно на сколько правильно Вы поймете устройство массива, не важно если ошибетесь с каким-то типом данных. Это быстро исправляется и корректируется. Но если Вы не разберетесь с функциями, и тому как они связаны между собой, то даже среднего программера из Вас не получится.

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

  • Четко (можно не досконально, но четко нужно) представлять событийную модель МетаТрейдер 4.5. 
  • Уметь работать с системными функциями. Обобщать их результат в своих собственных функциях. Объединять вызовы системных функций в свою собственную.
  • Уметь и любить писать свои функции.
  • Разбираться в цепочках вызова функций: например когда функция а() вызывает функцию б(), а б() вызывает с() и д(), а д() вызывает функцию с().
  • Уметь писать "чистые" функции и понимать, почему нужно писать чистые функции. Что такое чистая функция я объясню позже.

Функции кажутся простыми. "А чего там изучать-то. Вот тут абзац прочитать и делов-то. А дальше массивы, for, while..." - Нет, это не так. Функции в самом деле устроены на вид просто (и это прекрасно). Но что бы они по-настоящему умели решать задачи эффективно, функции должны обладать определенными свойствами и объединятся друг с другом определенным способом. Как это все делать возможно напишу позже.

Здравствуте, Василий! Пожалуйста, если Вам не трудно, то напишите продолжение про свойства функции. Мне, как и другим новичкам в программировании, очень важно и полезно будет знать о том, что функции должны обладать определенными свойствами и объединятся друг с другом определенным способом.

Все Ваши блоки сообщений, касающиеся функций, уже собрал для себя в единый вордовский файл.

С уважением, Владимир.

 
Aleksey Masterov:

... Проситесь на удаленку к команду метаквотес МТ5!!!

Алексей, Вы шутите? Да, мне бы для начала азы усвоить!

С уважением, Владимир.

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