Как Вы учили язык MQL4/5?

 

В данной теме предлагаю поделится своим опытом освоения языка программирования MQL4 и MQL5. Расскажите, знали ли до этого какой то язык или с нуля учили, чего хотели от изучения, какие были самые сложные моменты? Что могло бы помочь быстрей и легче освоить язык программирования MQL5?

 
Aleksey Vyazmikin:

В данной теме предлагаю поделится своим опытом освоения языка программирования MQL4 и MQL5. Расскажите, знали ли до этого какой то язык или с нуля учили, чего хотели от изучения, какие были самые сложные моменты? Что могло бы помочь быстрей и легче освоить язык программирования MQL5?

Скачал ЕА, начал делать правки, смотрел что меняется, потом увидел это

Как-то так. За 15 лет программирования, с каждым годом понимаю, что Я знаю меньше, чем считал 10 лет назад.

Самое сложное: связать логику "если то ниже а то выше, но при этом там вот так". Связать можно разными способами, иногда делаешь так, что открыв программу через год, просто офигеваешь и думаешь "Кто написал эту чушь?", и переписываешь если она нужна, тут-же получаешь дополнительный опыт.

 

1) Дорого. Для чела, который работал в Call-центре тратить 30 долларов на фриланс - никаких денег на депозит не останется, а надо ещё за свет платить

2) Слепая вера в грааль: жалко выкладывать в тему «Бесплатное написание» свою граальную идею ТС, которую подобрал с помойки интернета. 

3) Первые два пункта подтолкнули к ковырянию и правкам, как отметили выше, кодбазы. 

4) Затем в игру влетел вот этот дядька



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

Для новичка - на вес золота

5) Творческие решения. Ничто так не воодушевляет, как написание того, чего нет в кодбазе (или чего ты не нашёл), а сформулировал для себя алгоритм, который решает проблему. 


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


Что бы я изменил в своём обучении? 
Акцентировал бы внимание на базовых операторах, что-то типа ролика на ютубе по типу "Учим язык за 10 минут". 
Какое бы замечательное объяснение не было у авторов учебников, иногда можно ограничиться ключевыми словами и ключевой подачей материала, после чего входишь в тему в разы быстрее. 
Тот же учебник я пробовал коспектировать, пока сидел в универе, распечатывал, перечитывал и тд. 

Кому-то быстро всё даётся, кому-то долго-нудно-муторно. 


 

Я пришёл на портал с целью найти разработчиков, которые смогут мне помочь с реализацией моих идей. Программирование до этого я не знал глубоко, но были попытки в детские годы писать на ZX Spectrum буквально по книжке. Потом появился в семье 486 компьютер, и это был желанный запретный плод, брат учился на программиста и по поручению родителей написал программу-код (ключи уже не помогали - да были раньше такие корпуса), которая блокировала дальнейшую загрузку DOS. Уже не помню как точно, но я смог научиться вызывать ошибку в коде, после чего вылезал некий краш-лог и получал доступ к командной строке, дальнейшая загрузка - дело техники. После учился в колледже, и там уже полноценно преподавали QBASIC, но учил я его на слух, так как зрение не помогало видеть доску и вообще, с преподавателем у меня возникли очень отношения не очень. Помню, когда был итоговый зачёт она потирала лапки... Дело было так, в компьютерном классе сообщили задание, что должна выполнять программа, чего то там рисовалось и объяснялось, я только понял суть - итоговый результат. Надо сказать, что код она для этой программы по кускам давала весь учебный курс, поэтому большая часть учащихся просто писала с тетрадей на коленках, а преподаватель типа не замечал, расхаживая. В общем я уже дописал код на листе бумаги, и начал ерундой заниматься (ох и любили тогда мы с другом нюкать персоналки через сеть - хулиганы :) ), и тут она подходит, смотрит на код и заявляет всей группе учащихся, что я такой балбес и неуч, и код работать мой не будет, я не соглашаюсь с ней. И тут она зовёт всех студентов и говорит, что сейчас опозорит меня, начинает вводить код по листу бумаги. И, код делает то, что от него ожидалось. Она в шоке, перепроверяет, пара уже закончилось, люди начинают отходить от неё, поняв, что это на долго, а она всё сидит... Не знаю точно, именно ситуация такого позора или личная неприязнь ко мне, заставила её отказаться от нашей группы на следующий семестр. Параллельная группа получала знания у неё. А на следующий год был уже другой преподаватель по общей компьютерной грамотности, прозвали мы (с другом больше) его в начале Ламер, но после выяснения с ним отношений (другая история), он признал, что компетенции в ряде вопросов у меня больше, и мы с ним даже стали приятелями в рамках учебного заведения. Мудрый мужик оказался, даже разрешал прогуливать пары, находясь у него на занятиях (тогда там был очень быстрый интернет по сравнению с домашним ночным диалапом). Обучение моё там закончилось, я ушёл работать бухгалтером, и на первом месте работы столкнулся с невиданным зверьком "Турбо Бухгалтер 3.0" которая работала под DOS! Это был подарок судьбы, так как к тому моменту я успел возненавидеть 1С, которую преподавали, и я ничего не слушал (это как раз пример того, как преподавание формирует отношение к продукту, но лучшей 1С по удобству считаю 8.2), так как не планировал идти работать бухгалтером! Быстрое освоение программы (она прекрасна - там признаков торговой операции 255, а в 1С до сих пор всего 3), и отличное знание теории бухгалтерского учёта (привет преподавателю Ольге Николаевне!), позволили мне через месяц стать заместителем главного бухгалтера. Если не считать excel и HTML, то с чем то близким к программированию не припоминаю, что сталкивался после этого. И вот появился интерес к Forex, а вместе с ним и фантазии по ТС. В начале я находил разработчиков, которые писали на интерес в разных местах - им интересны были идеи. Потом открыл для себя портал, где уже был фриланс. С фрилансерами в начале было просто, давал заказы и их исполняли, но через несколько заказов, я обнаружил, что работает индикатор (или советник - точно уже и не помню), не так, как я ожидал. Программист это не признавал, и мне пришлось лезть в код и показывать арбитражу, что условие в коде не соответствует условию в ТЗ. С тех пор я стал тщательно проверять работу перед приёмкой. С ростом сложности, исполнители стали меняться... в итоге пришёл к тому, что моё ТЗ на 50+ листов не хотели брать в работу. Вот я и сел сам вникать в кодирование, и постепенно начал осваивать язык mql4. Потом был мучительный переход на MQL5, сейчас добавили уже нужные функции, сблизив языки.

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

 
Vitaly Muzichenko #:

Скачал ЕА, начал делать правки, смотрел что меняется, потом увидел это

Как-то так. За 15 лет программирования, с каждым годом понимаю, что Я знаю меньше, чем считал 10 лет назад.

Самое сложное: связать логику "если то ниже а то выше, но при этом там вот так". Связать можно разными способами, иногда делаешь так, что открыв программу через год, просто офигеваешь и думаешь "Кто написал эту чушь?", и переписываешь если она нужна, тут-же получаешь дополнительный опыт.

Я вот как раз не так давно разбирал год, который писал 8 лет назад, и пришлось брать бумаги и лист, что бы воспроизвести логику.

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

Справка сейчас к языку весьма хороша, особенно удобно в ME её вызывать.

 
Ivan Butko #:
2) Слепая вера в грааль: жалко выкладывать в тему «Бесплатное написание» свою граальную идею ТС, которую подобрал с помойки интернета. 

А я стал менять логику в ТЗ, когда понял как это делать, но ещё сам не полностью писал :)

Ivan Butko #:
4) Затем в игру влетел вот этот дядька

Надо будет почитать. Ещё есть учебник Дмитрия Федосеева, вроде как. Его труды не читали в виде учебника?

Ivan Butko #:
Акцентировал бы внимание на базовых операторах, что-то типа ролика на ютубе по типу "Учим язык за 10 минут". 
Т.е. выучил новое и сразу опробовал как работает, а не изучаешь весь код индикатора с множеством новых функций?
 

Не программист, но с программированием знаком с середины 80-х, сначала - коды i8080 и Электроника-60(система команд PDP-11), калькулятор МК-54 и (уже больше, чем калькулятор) Д3-28, BASIC.

Потом - спаял ZX Spectrum, BASIC и asm Z80, Gens4/Mons4.

Искра-1030М - 386 - 486 - DX4 - P - PMMX, Turbo-BASIC, TC, TASM, BC++, Hiew, AFD, SoftIce, IDA Pro. Писал резиденты под DOS, "лечил" игрушки и не только. Больше дизассемблировал, "хачил", чем программировал.

P2 - P3 - C2Duo - i5-2500K - i7-14700K, работа сисадмином, правка чужих кодов на C, Python,..., написание своих на BASH и Perl.

С 2004 - ПИФы, прибыль, с 2005 - попытки торговли на ММВБ. Большие потери в 2008.

С 2010-11 - ФОРТС, желание автоматизировать, попытки использовать Lua в Quik, отказ от Lua (кто бы знал, что в 2023-24, при переходе из О в Ф, всё же придётся его использовть, хоть и с отвращением и недолго).

2013-2014 - знакомство с MT5 и MQL5, восторг от возможностей и ужас перед освоением. Написание простого советника, сопровождающего (скользящий стоп по ATR) открытые вручную позиции. Попытки написания и тестирования простых советников на индикаторах. На этот форум попал сильно позже знакомства с MQL5, осваивал самостоятельно по документации и примерам в дистре.

2015 - Написание базовой библиотеки для использования в советниках.

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

2018 - первые прибыльные роботы.

С 2020 - стабильная прибыль.

С 2021 - роботы в аренду для своих за % от прибыли.

2024 -  >1000% на ИИС за неполные 3 года.

 

никак не учил :-) 

с беком C/C+, а тем более Pascal (а MQL это Паскаль по происхождению) учить нечего. 

только разобраться в API платформы, которое в 4-ке было близко к идеалу. 

---

и всем советую, если нет опыта программирования - Pascal ABC (современно - максимально удобный для обучения), на MQL нельзя.

 
Ivan Butko #:

1) Дорого. Для чела, который работал в Call-центре тратить 30 долларов на фриланс - никаких денег на депозит не останется, а надо ещё за свет платить

2) Слепая вера в грааль: жалко выкладывать в тему «Бесплатное написание» свою граальную идею ТС, которую подобрал с помойки интернета. 

3) Первые два пункта подтолкнули к ковырянию и правкам, как отметили выше, кодбазы. 

4) Затем в игру влетел вот этот дядька



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

Для новичка - на вес золота

5) Творческие решения. Ничто так не воодушевляет, как написание того, чего нет в кодбазе (или чего ты не нашёл), а сформулировал для себя алгоритм, который решает проблему. 


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


Что бы я изменил в своём обучении? 
Акцентировал бы внимание на базовых операторах, что-то типа ролика на ютубе по типу "Учим язык за 10 минут". 
Какое бы замечательное объяснение не было у авторов учебников, иногда можно ограничиться ключевыми словами и ключевой подачей материала, после чего входишь в тему в разы быстрее. 
Тот же учебник я пробовал коспектировать, пока сидел в универе, распечатывал, перечитывал и тд. 

Кому-то быстро всё даётся, кому-то долго-нудно-муторно. 


У Федосеева лучше 

 
хелп от ковалева и исходники его эксперта, дали отличные уроки....
 
ruslan #:
хелп от ковалева и исходники его эксперта, дали отличные уроки....

Моя личная благодарность Сергею Ковалёву. С легкостью  проник в тонкости программирования.