Обсуждение реализации советников.

 

Здравствуйте. Изучаю mql5 и очень долго не могу сдвинуться с мёртвой точки. Потому что все пишут программы по разному, каждый уверен в своем подходе, и понять какой из них оптимален новичкам тяжело.

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

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

Заранее спасибо тем, кто решит сделать вклад в просвещение и улучшение качества кода открытого сообщества.

 
Ivan_Invanov:

Здравствуйте. Изучаю mql5 и очень долго не могу сдвинуться с мёртвой точки. Потому что все пишут программы по разному, каждый уверен в своем подходе, и понять какой из них оптимален новичкам тяжело.

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

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

Заранее спасибо тем, кто решит сделать вклад в просвещение и улучшение качества кода открытого сообщества.

вы прочли все статьи о разработке советников на этом сайте, и вам показалось мало? а вы буквоед..)

 
Aleksey Mavrin:

вы прочли все статьи о разработке советников на этом сайте, и вам показалось мало? а вы буквоед..)

Я затрудняюсь сформировать парадигму выполнения программы. Да, видел эту статью по снижению времени, она очень полезна. Но что толку снижать время исполнения отдельно взятого куска. Когда например сам подход к решению приносит значительное замедление, в сравнии с другим подходом решения. Вы уверены, что нет более оптимального пути написания советников, чем ваш. Мои поздравления, наверно Вы специалист высочайшего уровня. Может тогда покажете пример кода?
 
Ivan_Invanov:
Я затрудняюсь сформировать парадигму выполнения программы. Да, видел эту статью по снижению времени, она очень полезна. Но что толку снижать время исполнения отдельно взятого куска. Когда например сам подход к решению приносит значительное замедление, в сравнии с другим подходом решения. Вы уверены, что нет более оптимального пути написания советников, чем ваш. Мои поздравления, наверно Вы специалист высочайшего уровня. Может тогда покажете пример кода?
Делай, как получается. А свою парадигму выработаешь со временем
 
Ivan_Invanov:
Я затрудняюсь сформировать парадигму выполнения программы. Да, видел эту статью по снижению времени, она очень полезна. Но что толку снижать время исполнения отдельно взятого куска. Когда например сам подход к решению приносит значительное замедление, в сравнии с другим подходом решения. Вы уверены, что нет более оптимального пути написания советников, чем ваш. Мои поздравления, наверно Вы специалист высочайшего уровня. Может тогда покажете пример кода?

Ссылки на статьи здесь вставляются автоматом по ключевым словам.

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

Оптимальный путь - понятие ситуационное.

Системный подход ваш - это хорошо.

Разделите процесс создания советника на два этапа:

1. алгоритм

2. код.

Главное научиться формулировать алгоритм. А закодить можно кучей способов какой удобнее.

Конечные автоматы с несколькими обратными связями - знакомо? Если нет - изучите теорию, станет понятнее откуда плясать.

 
Ivan_Invanov:

Здравствуйте. Изучаю mql5 и очень долго не могу сдвинуться с мёртвой точки. Потому что все пишут программы по разному, каждый уверен в своем подходе, и понять какой из них оптимален новичкам тяжело.

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

   

Непонятен смысл темы.

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

Конкретные реализации - в КодоБазе, куча вариантов. Бери любой, и рассматривай, используй, изменяй.

Что еще требуется ?

 
Georgiy Merts:

Непонятен смысл темы.

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

Конкретные реализации - в КодоБазе, куча вариантов. Бери любой, и рассматривай, используй, изменяй.

Что еще требуется ?

Смотрю конечно кодобазу. У меня не вызвал никаких сомнений код только у одного автора, metaquotes, это официальный разработчик. Учусь у него. Там человек пишет логично и использует встроенные функции по максимуму. Но у него мало именно советников. А вообще, очень много сомнительного кода от разных авторов, и часто бывает такое такое, что вот смотришь, и не понимаешь, почему так написано. Ну и меня удивляет как то, что вот люди так уверены в этих реализациях. Я может слишком парюсь конечно. Надо наверно писать уже лишь бы работало, как тут сказали.

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

Идея хорошая. В свое время очень помогла база Игоря Ким, ему огромное спасибо за труд :)

 
Ivan_Invanov:

Смотрю конечно кодобазу. У меня не вызвал никаких сомнений код только у одного автора, metaquotes, это официальный разработчик. Учусь у него. Там человек пишет логично и использует встроенные функции по максимуму. Но у него мало именно советников. А вообще, очень много сомнительного кода от разных авторов, и часто бывает такое такое, что вот смотришь, и не понимаешь, почему так написано. Ну и меня удивляет как то, что вот люди так уверены в этих реализациях. Я может слишком парюсь конечно. Надо наверно писать уже лишь бы работало, как тут сказали.

Так это другое дело.

Прикинь, я на свой собственный код иногда гляжу, и не понимаю, почему в данном месте написано именно так.  Поэтому такие места я стараюсь очень подробно комментировать, стараясь упомянуть все тонкости. При этом все равно, регулярно вижу, что какие-то моменты не учел .

Более того - я использую следующий код (для определения типа исполнения), который написан очень авторитетным форумчанином:

ENUM_ORDER_TYPE_FILLING CSymbolInfo::GetTypeFilling(string strSymbol,ENUM_ORDER_TYPE_FILLING otfFilingType)
{
   #ifndef __MQL5__
      return(otfFilingType);
   #else // __MQL5__
      
   const ENUM_SYMBOL_TRADE_EXECUTION steExeMode = (ENUM_SYMBOL_TRADE_EXECUTION)::SymbolInfoInteger(strSymbol, SYMBOL_TRADE_EXEMODE);
   const int iFillingMode = (int)::SymbolInfoInteger(strSymbol, SYMBOL_FILLING_MODE);

   return((iFillingMode == 0 || (otfFilingType >= ORDER_FILLING_RETURN) || ((iFillingMode & (otfFilingType + 1)) != otfFilingType + 1)) ?
         (((steExeMode == SYMBOL_TRADE_EXECUTION_EXCHANGE) || (steExeMode == SYMBOL_TRADE_EXECUTION_INSTANT)) ?
           ORDER_FILLING_RETURN : ((iFillingMode == SYMBOL_FILLING_IOC) ? ORDER_FILLING_IOC : ORDER_FILLING_FOK)) :
          otfFilingType);
  
   #endif // __MQL5__
};

Я НЕ ПОНИМАЮ, как она работает.  Более того, и сам этот форумчанин при вопросе сказал, что уже не помнит, просто этот код уже многократно проверен, и ему можно доверять.

Ну что ж... Если у меня дойдут руки заменить эти дурацкие "вопросики" на нормальные операторы if, я разберусь, как тут и что... Пока - так...  

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