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

 
Vasiliy Sokolov:

Это сферический конь в вакууме, а не блок-схема работающего эксперта. Некоторых блоков может не быть вовсе. Блоки могут быть переставлены местами. Любая программа на МКЛ это обработчик событий. Вот этого главного постулата на схеме нет, а значит она вводит в заблуждение читателей. Мой Вам совет: не читайте это старье. Учебник Ковалева устарел. Многая информация в нем не верна, особенно это касается ордерной системы МТ5. Ковалев по сути предлагает заучить эту нелепую схему, затем заучить наборы событий, а потом натягивается сова на глобус: где яко бы эта схема реализована в программе эксперта. В МКЛ нет ни каких схем. Есть типичные паттерны использования торгового окружения. Но какой-то универсальной схемы которую нужно понять и запомнить в нем нет. Все "схемы" составляются в нем с помощью функций и реакций этих функций на поступающие события. Плюс есть данные, которые запрашиваются... снова функциями. 

При всем уважении. Там такого нет. Там как раз доносится до учеников, что это учебный советник, и по нему торговать нельзя. А что бы торговать надо изучать торговые стратегии... Но это после изучения языка. Кстати хороший и понятным языком объяснения. Что часто здесь не хватает, особенно в комментах в кодобазе. Голову иной раз сломаешь, что написано)))) Согласен, в хорошем коде такого нет)

 
MrBrooklin:

В учебнике MQL4 Сергея Ковалёва нашёл то, что так долго искал. Приводу выдержку из книги: "Структура простого эксперта. Ниже представлена структурная схема простого эксперта, построенная на основе нескольких функциональных блоков, в каждом из которых выполняется некоторая обособленная часть вычислений."


В связи с этим, прошу специалистов подсказать - применима ли данная структурная схема для написания эксперта (советника) на языке MQL5 или нужно добавить ещё какой-нибудь блок?

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

Да, эта схема подойдет Вам. Она проста и упорядочена. Когда освоите язык, будете усложнять/менять/добавлять блоки по своему усмотрению, но для начала остановитесь на ней. Правильная схема.
 
Vasiliy Sokolov:

Это сферический конь в вакууме, а не блок-схема работающего эксперта. Некоторых блоков может не быть вовсе. Блоки могут быть переставлены местами. Любая программа на МКЛ это обработчик событий. Вот этого главного постулата на схеме нет, а значит она вводит в заблуждение читателей. Мой Вам совет: не читайте это старье. Учебник Ковалева устарел. Многая информация в нем не верна, особенно это касается ордерной системы МТ5. Ковалев по сути предлагает заучить эту нелепую схему, затем заучить наборы событий, а потом натягивается сова на глобус: где яко бы эта схема реализована в программе эксперта. В МКЛ нет ни каких схем. Есть типичные паттерны использования торгового окружения. Но какой-то универсальной схемы которую нужно понять и запомнить в нем нет. Все "схемы" составляются в нем с помощью функций и реакций этих функций на поступающие события. Плюс есть данные, которые запрашиваются... снова функциями. 

Не понимаю твою критику. Схема логичная, все действия последовательно упорядочены. Дает представление о правильной структуре советника. Конечно, можно все перемешать, что то выкинуть, что то добавить, но стабильность работы такой программы резко нарушится. В общем, не вижу к чему в схеме можно придраться.
 
Реter Konow:
Не понимаю твою критику. Схема логичная, все действия последовательно упорядочены. Дает представление о правильной структуре советника. Конечно, можно все перемешать, что то выкинуть, что то добавить, но стабильность работы такой программы резко нарушится. В общем, не вижу к чему в схеме можно придраться.

Ок, хорошо. Попробую объяснить.

1) Вот дана схема. Даны некие блоки (что такое блок, применительно к mql программе не объясняется. Возможно это функция, возможно набор процедур, возможно еще что-то, ну да ладно, допустим мы интуитивно на одном уровне с автором понимаем что такое блок).

2) Блоки образуют цепочку от начала программы к ее завершению. На некоторых блоках цепочка выполнения программы разделяется на две (а почему кстати только на две? а на три нельзя? а на четыре? а если нужно четыре, то как это показать на схеме? перейти на А1 формат печати?).  Видимо это способ показать ветвление.

3) Есть очень странные блоки, вроде "сообщений".  Что это за блок? Наверное уведомление какое-то от программы что подходящих условий нет: каждый тик допустим будет приходит сообщение: "Слишком дорого для покупки, слишком дорого для покупки, слишком..." - круто конечно, Но это все догадки.

4) Самый странный блок, это блок "обработки ошибок". В него можно попасть, но выйти из него нельзя. Т.е. программа поймала ошибку и сидит в этом блоке (зависает наверное до полной перезагрузки, еще лучше сделать так что бы терминал намертво зависал, что бы точно больше ошибок не понаделать - вот эта мысль!) 

5) Если мы запустим программу в первый раз, или на счету не будет открытых позиций, то блок закрытия ордеров делает что? Ничего. Но мы судя по логики этой схемы, все равно должны попасть в блок закрытия ордеров. Попадаем мы туда, потому что схема жестко и иерархически структурирована. Все блоки должны быть обработаны по-очереди, даже если это бессмысленная и беспощадная обработка пустого списка позиций.

6) Блок вычисления стоимости ордеров размещен ниже блока закрытия ордеров. Это как вообще? Может мы и закрывает ордер на основании его "стоимости". Тут вообще не понятно что происходит.

И смотрю я вот на эту схему и реально не понимаю, как "это" можно рекомендовать к изучению? Как ее можно считать хорошей, замечательной и обучающей? 

 
Vasiliy Sokolov:

Ок, хорошо. Попробую объяснить.

1) Вот дана схема. Даны некие блоки (что такое блок, применительно к mql программе не объясняется. Возможно это функция, возможно набор процедур, возможно еще что-то, ну да ладно, допустим мы интуитивно на одном уровне с автором понимаем что такое блок).

2) Блоки образуют цепочку от начала программы к ее завершению. На некоторых блоках цепочка выполнения программы разделяется на две (а почему кстати только на две? а на три нельзя? а на четыре? а если нужно четыре, то как это показать на схеме? перейти на А1 формат печати?).  Видимо это способ показать ветвление.

3) Есть очень странные блоки, вроде "сообщений".  Что это за блок? Наверное уведомление какое-то от программы что подходящих условий нет: каждый тик допустим будет приходит сообщение: "Слишком дорого для покупки, слишком дорого для покупки, слишком..." - круто конечно, Но это все догадки.

4) Самый странный блок, это блок "обработки ошибок". В него можно попасть, но выйти из него нельзя. Т.е. программа поймала ошибку и сидит в этом блоке (зависает наверное до полной перезагрузки, еще лучше сделать так что бы терминал намертво зависал, что бы точно больше ошибок не понаделать - вот эта мысль!) 

5) Если мы запустим программу в первый раз, или на счету не будет открытых позиций, то блок закрытия ордеров делает что? Ничего. Но мы судя по логики этой схемы, все равно должны попасть в блок закрытия ордеров. Попадаем мы туда, потому что схема жестко и иерархически структурирована. Все блоки должны быть обработаны по-очереди, даже если это бессмысленная и беспощадная обработка пустого списка позиций.

6) Блок вычисления стоимости ордеров размещен ниже блока закрытия ордеров. Это как вообще? Может мы и закрывает ордер на основании его "стоимости". Тут вообще не понятно что происходит.

И смотрю я вот на эту схему и реально не понимаю, как "это" можно рекомендовать к изучению? Как ее можно считать хорошей, замечательной и обучающей? 

Ок. Теперь критика стала понятнее. Ну, во многом можно согласится, если рассматривать ее "под лупой", но нет смысла этого делать. Новичек должен получить бызовое, обобщенное и упрощенное представление о наиболее распостроненной и верной (в глоб.смысле) композиции советника. 

Блок - это логически обособленный набор условий, проверок, функций, программы. 

Конструкция из программных блоков реализует правильное выполнение программы. 

Разветвленность и глубокая иерархия связей блоков не показана на схеме, чтобы не запутывать ученика. Все упрощено намеренно и это правильно с пед.точки зрения. Ну расписал бы С.Ковалев "галлерею" иерархий возможных структур на 20 страниц, было лучше? Наверное, все таки, нет...) А так, да, - все на самом деле сложнее и разнообразнее в жизни, чем на схеме. Но начинать нужно с простого.
 
Реter Konow:
Новичек должен получить бызовое, обобщенное и упрощенное представление о наиболее распостроненной и верной (в глоб.смысле) композиции советника. 

Ага, ну т.е. глобально-то Ковалев прав, ну и что что ошибок в схеме понаделал, - новичок и так разберется где эти ошибки, а где правильно нарисовано. На то он и новичок, что бы суть получить об обобщенном представлении устройства советника. И что такое блок, что такое стрелки, и почему надо зависнуть после обработки ошибок, это новичок и сам домыслит своим могучим умом.

 
Реter Konow:
Ок. Теперь критика стала понятнее. Ну, во многом можно согласится, если рассматривать ее "под лупой", но нет смысла этого делать. Новичек должен получить бызовое, обобщенное и упрощенное представление о наиболее распостроненной и верной (в глоб.смысле) композиции советника. 

Блок - это логически обособленный набор условий, проверок, функций, программы. 

Конструкция из программных блоков реализует правильное выполнение программы. 

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

Здравствуйте, Петер! Из всех сообщений суммирую информацию. В языке программирования MQL5  нет четко расписанного БАЗОВОГО алгоритма создания и выполнения программы (скрипта, советника). Все алгоритмы по своему уникальны и не могут иметь так называемое "ядро", которое затем можно наращивать. Тогда получается моя программа самообучения идёт в тупик? Если кто-нибудь обратил внимание, то все ранее написанные мною скрипты идут по схеме усложнения, т.е. от простого к сложному. По сути дела мне в своей голове нужно сломать само представление об упорядочивании мыслей. Получается так?

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

 
MrBrooklin:

Здравствуйте, Петер! Из всех сообщений суммирую информацию. В языке программирования MQL5  нет четко расписанного БАЗОВОГО алгоритма создания и выполнения программы (скрипта, советника). Все алгоритмы по своему уникальны и не могут иметь так называемое "ядро", которое затем можно наращивать. Тогда получается моя программа самообучения идёт в тупик? Если кто-нибудь обратил внимание, то все ранее написанные мною скрипты идут по схеме усложнения, т.е. от простого к сложному. По сути дела мне в своей голове нужно сломать само представление об упорядочивании мыслей. Получается так?

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

Нет. Ни в коем случае. Критика Василия никак не уничтожила логическую правильность схемы построения советника. Да, помарки можно найти и "докопаться" до них, но В ЦЕЛОМ - она верная и это главное. Эта схема поможет Вам начать писать свои советники, когда до этого дойдете. По большому счету, разницы между mql4 и mql5 нет. Детали разняться, но с ними легко разобраться.  Продолжайте учиться как прежде.
 
Vasiliy Sokolov:

Ага, ну т.е. глобально-то Ковалев прав, ну и что что ошибок в схеме понаделал, - новичок и так разберется где эти ошибки, а где правильно нарисовано. На то он и новичок, что бы суть получить об обобщенном представлении устройства советника. И что такое блок, что такое стрелки, и почему надо зависнуть после обработки ошибок, это новичок и сам домыслит своим могучим умом.

Лучшего учебника все равно у нас нет, так что.... 

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

Здравствуйте, Петер! Из всех сообщений суммирую информацию. В языке программирования MQL5  нет четко расписанного БАЗОВОГО алгоритма создания и выполнения программы (скрипта, советника). Все алгоритмы по своему уникальны и не могут иметь так называемое "ядро", которое затем можно наращивать. Тогда получается моя программа самообучения идёт в тупик? Если кто-нибудь обратил внимание, то все ранее написанные мною скрипты идут по схеме усложнения, т.е. от простого к сложному. По сути дела мне в своей голове нужно сломать само представление об упорядочивании мыслей. Получается так?

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

Верно! Все пытаются обучатся программированию, используя неверные представления о программе, основанные на жизненном опыте. Например, что программа это вроде текста в книге, где есть оглавление, вступление, содержание и заключение. Т.е. что программа это некая последовательная схема от начала к концу. На первых этапах это представление работает, потом, с усложнением программы, начинаются трудности, и не удается сколько-нибудь нормально написать надежную рабочую программу. Наступает быстрое разочарование, и откладывание изучения программирования в долгий ящик.  И Ковалев в этом плане знатный делец по оказанию медвежьих услуг: он пытается объяснить читателю, используя его доступный понятийном аппарат, что программа это таже книга с такой-то и такой схемой. Но схем-то ни каких нет! Скрипт имеет принципиально другую "схему" чем эксперт, а эксперт иную схему чем индикатор.