Новички, с какими трудностями в программировании на MQL вы сталкиваетесь в 2025 году? - страница 14

 
Alexey Viktorov #:
Да не будет никакой точности. От применения этой директивы только увеличивается время оптимизации или тестирования. Особенно если индикаторы со сложными расчётами.

пока что это просто ваши догадки из "собственной формулировки " описания в справке

мои тесты показывают, что визуальный режим (который равен принудительному включению директивы) отображает правильно сделки при тестировании, а обычный как минимум другой,

позже  сравню проходы с реалтаймовыми входами, результаты напишу


и еще раз, просил ответ на использование , кто точно знает или проводил исследования с tester_everytick_calculate

догадки из описания, неоднозначного, тут неуместны, вопрос касается денег, а не того,  упадет ли песочный замок на пляже, если еще этаж построить

 
MrBrooklin #:

Просто основная трудность в программировании для новичков - это то, как материал преподносится на начальном, т.е. на нулевом уровне знаний в программировании. Сразу вспомнил своего преподавателя по автоматизации в институте, который буквально на пальцах за пять минут разжевал математическую логику Джорджа Буля (булевва алгебра, алгебра логики, как только её не называют) и преподнёс нам студентам так, используя всего три слова - троллейбус, автобус и институт, что самым непонятливым было всё ясно к концу его объяснения.

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

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

Вот для примера - параллельное обсуждение директивы tester_everytick_calculate. Лично у меня никогда не возникало вопроса, где писать директиву и как она работает. Она описана в документации в разных местах, в частности, здесь:

Расчет индикаторов при тестировании #

В режиме реального времени значения индикаторов вычисляются на каждом тике.

В тестере стратегий индикаторы рассчитываются только при обращении к ним за данными — то есть только в тот момент, когда запрашиваются значения индикаторных буферов. Исключение составляют пользовательские индикаторы с выставленным #property tester_everytick_calculate, в этом случае пересчет идет на каждом тике.

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

Расчет индикатора на каждом тике делается однократно, и все последующие обращения за данными индикатора до поступления нового тика не вызывают пересчета....

В книге, я сформулировал похожим образом, но видимо для кого-то и это будет непонятно. И саму книгу пытался писать от простого к сложному, по шагам.

Документация по MQL5: Программы MQL5 / Тестирование торговых стратегий
Документация по MQL5: Программы MQL5 / Тестирование торговых стратегий
  • www.mql5.com
Идея автоматической торговли привлекательна тем, что торговый робот может без устали работать 24 часа в сутки и семь дней в неделю. Робот не знает...
 
Stanislav Korotky #:

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

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

Вот для примера - параллельное обсуждение директивы tester_everytick_calculate. Лично у меня никогда не возникало вопроса, где писать директиву и как она работает. Она описана в документации в разных местах, в частности, здесь:

В книге, я сформулировал похожим образом, но видимо для кого-то и это будет непонятно. И саму книгу пытался писать от простого к сложному, по шагам.

Учебники и книги по программированию начинал просматривать лет 30 назад. В книжных магазинах. Открывал и читал несколько начальных страниц. Ни одна из них не "зацепила" от слова совсем. Наоборот, после прочтения этих несколько страниц, возникало полное ощущение, что программирование - это не моё! А вот в пятнадцатилетнем возрасте, когда гостил в деревне у своих родственников, мне попалась на глаза книга с названием "Эра милосердия" братьев Вайнеров. "Проглотил" её, как мне тогда показалось, буквально за 3-и дня. Может быть не совсем и корректное сравнение, но этим примером попытался объяснить, как может материал заинтересовать человека или наоборот - оттолкнуть.

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

 

Давайте для наглядности разберём начало Вашего учебника по алготрейдингу:

Знакомство c MQL5 и средой разработки

Одним из важнейших изменений в языке MQL5 при переходе к его новой инкарнации в MetaTrader 5 явилась поддержка концепции объектно-ориентированного
программирования (ООП). Если предыдущий MQL4 (язык MetaTrader 4) было принято сравнивать в момент его появления с языком программирования C, то 
для MQL5 уместно проводить параллели с C++.  Справедливости ради отметим, что сегодня все инструменты ООП, присутствовавшие изначально только в MQL5,
уже перенесены и в MQL4, но, тем не менее, для пользователей, мало знакомых с программированием, ООП по-прежнему кажется чем-то чересчур сложным.

Эта книга призвана, в некотором смысле, сделать сложное простым. Она является не заменой, а дополнением к справочному руководству по MQL5, которое
поставляется вместе с терминалом и также доступно на сайте mql5.com.

В данной книге мы последовательно расскажем о всех составных частях и приемах программирования на MQL5, двигаясь небольшими шагами — так, чтобы каждая
итерация была понятной, а технология ООП постепенно раскрывала свой потенциал, наиболее заметный, как и в случае с любым мощным инструментом, только
при правильном, обоснованном применении. В результате разработчики MQL-программ смогут выбирать наиболее подходящий для себя и для конкретной задачи
стиль программирования — не только объектно-ориентированный, но и "старый" процедурный, а также комбинировать их в произвольных сочетаниях.

Желтым выделил всё то, что 6 лет назад у меня, как у новичка с полным отсутствия такого понятия, как программирование, вызвало бы отсутствие желания читать дальше. Набор непонятных слов сразу отталкивает от изучения дальнейшей информации. Это не попытка Вас оскорбить, а наоборот, попытка объяснить, что для новичков с "нулевым уровнем" нужна примерно такая же подача информации, как в первом классе средней школы. Только не принимайте всё близко к сердцу. Это моё личное мнение, не претендующее на истину в последней инстанции. ))

Не смотря на вышесказанное, всё равно выражаю Вам огромную благодарность за то, что создали этот учебник.

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

 
MrBrooklin #:
Желтым выделил всё то, что 6 лет назад у меня, как у новичка с полным отсутствия такого понятия, как программирование, вызвало бы отсутствие желания читать дальше. Набор непонятных слов сразу отталкивает от изучения дальнейшей информации.

Что, и "итерация" слово непонятное?

 
Sergey Gridnev #:

Что, и "итерация" слово непонятное?

Узнал, об существовании этого слова только тогда, когда начал изучать программирование. ))

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

 

Для продолжения темы определения трудностей для новичков.

А вот представьте себе такую ситуацию, если бы мне в голову пришла мысль написать книгу (учебник) для начинающих электронщиков. И тут в самом начале книги (учебника) стал бы сразу объяснять  в чём разница между варикапом и варистором. Чтобы самому не выдумывать, решил обратиться за помощью к ИИ и вот, что искусственный интеллект выдал:

Обзор от ИИ
Варикап — это полупроводниковый диод, который изменяет свою электрическую ёмкость в зависимости от приложенного обратного напряжения,
а варистор — это двухполюсник (обычно резистор), чьё сопротивление меняется в зависимости от приложенного напряжения, обычно снижаясь
при его увеличении выше определённого порога. Варикап используется для создания перестраиваемых резонансных контуров и фильтров,
а варистор — для защиты от перенапряжений в электронных схемах. 
Варикап (вариаторная ёмкость)
Принцип работы: Использует зависимость барьерной ёмкости p-n-перехода полупроводникового диода от величины приложенного обратного напряжения. 
Функция: Позволяет изменять электрическую ёмкость схемы, что используется для настройки и регулировки в радиочастотных устройствах. 
Назначение: Применение в перестраиваемых фильтрах, резонансных контурах, генераторах частоты. 
Варистор (варисторное сопротивление)
Принцип работы: Имеет очень высокое сопротивление при нормальных напряжениях, но при увеличении напряжения выше определённого порога,
сопротивление резко снижается. 
Функция: Защищает электронные устройства от внезапных скачков напряжения (перенапряжений). 
Назначение: Защита электроприборов, стабилизация напряжения и токов. 
Основные отличия
Изменяемый параметр: Варикап меняет ёмкость, а варистор — сопротивление. 
Функционал: Варикап — это элемент для настройки и регулировки, а варистор — это элемент защиты. 
Тип элемента: Варикап — это тип полупроводникового диода, а варистор — это скорее полупроводниковый резистор. 

Нормально? Для человека (новичка) абсолютно далекого от такого понятия, как ток и напряжение. Попытаюсь объяснить ещё раз - новичка в программировании можно сравнить с младенцем и с ним нужно ещё изрядно повозиться, пока до него что-то начнёт доходить. ))

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

 
MrBrooklin #:

Давайте для наглядности разберём начало Вашего учебника по алготрейдингу:

Желтым выделил всё то, что 6 лет назад у меня, как у новичка с полным отсутствия такого понятия, как программирование, вызвало бы отсутствие желания читать дальше. Набор непонятных слов сразу отталкивает от изучения дальнейшей информации. Это не попытка Вас оскорбить, а наоборот, попытка объяснить, что для новичков с "нулевым уровнем" нужна примерно такая же подача информации, как в первом классе средней школы. Только не принимайте всё близко к сердцу. Это моё личное мнение, не претендующее на истину в последней инстанции. ))

Не смотря на вышесказанное, всё равно выражаю Вам огромную благодарность за то, что создали этот учебник.

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

Владимир, для этого существуют курсы. Это вообще отдельная тема.

Помню в институте первую контрольную по программированию. Сижу читаю задание и ничего не понимаю. Что тут надо делать???

Подходит лаборант и спрашивает: В чём проблема?

— Да я вообще ничего не понимаю…

— Да что тут понимать? Надо ввести данные, посчитать по формуле и вывести результат на экран монитора.

— И всё??????????

—ДА.

— Ну тады ОЙ!

И с этого момента у меня вообще никаких затыков в программировании нет. Всё сказано в документации. Не понял что написано читаю ещё и ещё пока не пойму… Что касается ООП это просто красивые слова и чуток удобства. Но это не для новичков. Без ООП в MQL5 обойтись можно. Но лучше постараться понять что это такое.

 
Alexey Viktorov #:


И с этого момента у меня вообще никаких затыков в программировании нет. Всё сказано в документации. Не понял что написано читаю ещё и ещё пока не пойму… Что касается ООП это просто красивые слова и чуток удобства. Но это не для новичков. Без ООП в MQL5 обойтись можно. Но лучше постараться понять что это такое.

Привет, Алексей! Рад за тебя, что в институте у тебя так быстро "зашло". У нас кроме ромбиков, прямоугольников и стрелочек ничего толком не преподавали. Да и не нужно было, т.к. из нас "делали" инженеров для автоматизации технологических процессов в производстве, а не для программирования вычислительной техники.

Ладно, всё это лирика. Просто Василий начал хорошую тему, близкую мне по духу, вот поэтому и пытаюсь объяснить со своей точки зрения с какими трудностями сталкиваются новички. Сейчас тоже очень много читаю документацию по MQL5, но 6 лет назад, не смотря на то, что много раз её читал и перечитывал, но всё равно ничего не понимал. Только постоянное написание советников помогло частично освоить азы программирования.

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

 
MrBrooklin #:

Здравствуйте, Василий. Не хватает Вашего подхода к разжёвыванию информации для людей, которые абсолютно далеки от программирования. Говорю о том подходе, который Вы осуществили в ходе моего самообучения. Вам бы с Алексеем Викторовым объединить усилия и написать НАСТОЯЩУЮ статью для новичков. Вот такой статье цены бы не было!!!

С чем самым сложным мне пришлось столкнуться при самообучении?

  1. Не было абсолютно никакого понимания, что такое программа. Для меня это был просто набор иероглифов, которые что-то делают и вообще не понятно как.
  2. В ходе самообучения мне в большей степени приходилось самому рыться в документации и комментировать каждую строчку написанного или подсмотренного в CodeBase кусочка кода или целой функции, о существовании которой не имел ни малейшего представления. Комментарии мне тогда очень сильно помогли, хотя читая их сейчас, уже прекрасно понимаю, что некоторые из них имели не совсем правильную трактовку.
  3. Слава Богу к моему самообучению подключились Вы и Алексей Викторов. И тут постепенно информация стала структурироваться. Да, мне было нужно очень много времени, чтобы переварить весь тот поток информации, который на меня обрушился в тот момент.
  4. Статьи читал, но они все были написаны программистами, которые уже не могли себя поставить на место новичка и прочитать написанное его глазами. Были некоторые статьи, которые мне "заходили", но это уже была стадия абсолютного нуля.
  5. Книги тоже читал, но здесь тоже самое. Программисту при написании книги или учебника очень сложно понять, что не понятно этому ... новичку. Не буду говорить какому! )

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

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

Да, проблема понятна. В следующем посте опишу, почему, по моему мнению, писатели статей для новичков свернули не туда.