Обсуждение статьи "Введение в MQL5 (Часть 7): Руководство для начинающих по созданию советников и использованию кода от ИИ в MQL5"

 

Опубликована статья Введение в MQL5 (Часть 7): Руководство для начинающих по созданию советников и использованию кода от ИИ в MQL5:

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

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

Такой метод обучения обеспечивает стабильное и уверенное развитие. Вам не придется сразу разбираться во всех сложностях и тонкостях языка — все это будет изучаться постепенно, что позволит вам повышать свое мастерство. Поэтому такое проектное обучение можно рассматривать как путешествие, как самый надежный способ изучить MQL5. Я решил использовать проектное обучение в этой серии именно ввиду его эффективности. Вместо того чтобы с головой прыгать сразу в самые сложности MQL5, сосредоточимся на практических проектах и наработке собственного опыта. Кроме того, работа над реальными проектами поможет улучшать имеющиеся торговые стратегии.

И все же мы начнем с самых простых, понятных даже новичкам проектов и постепенно перейдем к более сложным. При этом очень важно тщательно осваивать каждый из этапов, прежде чем переходить к более сложным темам. С каждым проектом вы будете приобретать новые навыки и идеи. Проект, над которым мы будем работать для этой статьи, послужит практическим примером последовательной генерации советника. Также разберем, как можно использовать код, сгенерированный ИИ, в контексте MQL5.

Автор: Israel Pelumi Abioye

 
 
Clemence Benjamin #:

Поучительная информация, сэр, большое спасибо.

Не за что.
 

Очень полезные уроки. С нетерпением жду продолжения серии с дополнительными проектами и углубленным изучением программирования на MQL. Трудно найти пошаговое введение в язык и эффективное его применение.

Спасибо за отличную работу

 
Oscar Hayman проектами и углубленным изучением программирования на MQL. Трудно найти пошаговое введение в язык и эффективное его применение.

Спасибо за отличную работу

Здравствуйте, Оскар. Спасибо за добрые слова.
 
Привет! Прежде всего, спасибо за это руководство. Я увидел его в начале этой недели и просмотрел в поисках быстрого и простого способа познакомиться с MQL5, и ваша работа оказалась полезной. У меня есть очень конкретная задача, и теперь я ищу способ ее решить. Я знаю свою торговую стратегию, я знаю, как я хотел бы оптимизировать свою торговлю с помощью автоматизации, я знаю, что должен делать мой алгоритм / робот / советник, и я разложил весь процесс на простые шаги, поэтому я знаю, как перевести его на MQL5. Я хочу программировать его сам (в отличие от того, чтобы платить кому-то за это или просить GPT написать его для меня), потому что я хочу знать, как изменить код, когда мне это понадобится. Я постараюсь записать все это, но, похоже, неоднократно у меня будут возникать конкретные вопросы. Существует ли форум по MQL5? Или какая-нибудь другая площадка, где пользователи обмениваются мнениями? Буду признателен
 
Rece_w_kieszeniach торговую стратегию, я знаю, как я хотел бы оптимизировать свою торговлю с помощью автоматизации, я знаю, что должен делать мой алгоритм / робот / советник, и я разложил весь процесс на простые шаги, поэтому я знаю, как перевести его на MQL5. Я хочу программировать его сам (в отличие от того, чтобы платить кому-то за это или просить GPT написать его для меня), потому что я хочу знать, как изменить код, когда мне это понадобится. Я постараюсь записать все это, но, похоже, неоднократно у меня будут возникать конкретные вопросы. Существует ли форум по MQL5? Или какая-нибудь другая площадка, где пользователи обмениваются мнениями? Буду признателен
Хорошо, я вижу MQL5-форум, а есть ли другие, что-нибудь примечательное? Спасибо!
 
Rece_w_kieszeniach #:
Хорошо, я вижу форум MQL5, есть ли другие, что-нибудь примечательное? Спасибо!
Здравствуйте, Редже, я рад, что статья оказалась для вас полезной. Если вы хотите написать программу самостоятельно, то лучшим местом для получения ответов на ваши вопросы по-прежнему остается форум MQL5. Если у вас возникнут какие-либо проблемы с советником, не стесняйтесь обращаться ко мне.
 
Я слежу за вашей серией и должен сказать, что объяснения великолепны, и я с нетерпением жду возможности узнать больше из статей, основанных на проектах, подобных этой.
 
Oluwatosin Mary Babalola проектах, как эта.

Здравствуйте, Олуватосин, я с нетерпением жду следующей части. Если у вас есть вопросы по статье, пожалуйста, не стесняйтесь обращаться ко мне.

 

И зачем в руководстве для начинающих сразу учить их кодить неправильно?

Во-первых, есть проблемы с эффективностью, которые станут заметны как только человек начнет писать что-нибудь чуть-чуть более сложное и реальное (но продолжит использовать такую же методику). На каждом тике вызывается троекратное преобразование StringToTime одних и тех же строк. Можно было бы подчистить за ИИ - сделать конвертацию один раз в глобальных переменных:

input string Alarm1 = "00:00:00"; // Default value for first alarm
input string Alarm2 = "00:00:00"; // Default value for second alarm
input string Alarm3 = "00:00:00"; // Default value for third alarm
input string Sound = "alert.wav"; // Default sound file

// Define globals for persistent values
datetime first_Alarm, second_Alarm, third_Alarm;

int OnInit()
{
   // Initialization function, executed once when the EA is launched
   // Make conversions only once per inputs
   first_Alarm = StringToTime(Alarm1);
   second_Alarm = StringToTime(Alarm2);
   third_Alarm = StringToTime(Alarm3);
   return 0; // Return 0 to indicate successful initialization
}

void OnTick()
{
   // Get current local time
   datetime Time = TimeLocal();

   // Check if current time matches any of the alarm times
   if(first_Alarm == Time || second_Alarm == Time || third_Alarm == Time) // another logical error here (see below)
   {
      // Play sound if any alarm time is reached
      PlaySound(Sound);
   }
}

Во-вторых, нет гарантии что времена тиков совпадут с заданными временами алертов - скорее всего, этот код в if-е их упустит. И даже если бы мы сделали проверки в обработчике OnTimer, это не гарантировало бы "поимки" нужных моментов, потому что все события (OnTick, OnTimer и пр.) приходят из очереди, которая опустошается хоть и по возможности быстро, но может подтормаживать, если какая-то другая программа ведет тяжелые расчеты. Поэтому условие проверки наступления алертов нужно переписывать капитально, и как минимум без дополнительных переменных здесь не обойтись (в перспективе напрашивается переделка алертов под классы, но конечно не в этой статье).