Обсуждение статьи "Рецепты MQL5 - Мультивалютный советник и работа с отложенными ордерами на MQL5"

 

Опубликована статья Рецепты MQL5 - Мультивалютный советник и работа с отложенными ордерами на MQL5:

На этот раз рассмотрим создание мультивалютного советника, торговый алгоритм которого строится на работе с отложенными ордерами Buy Stop и Sell Stop. Схему будем строить для внутридневной торговли/тестов. В статье будут рассмотрены следующие вопросы:

  • Торговля в указанном временном диапазоне. Сделаем так, чтобы можно было указать время начала и окончания торговли. Например, это может быть временной диапазон во время европейской или американской торговых сессий. Конечно же, будет возможность подобрать наилучший временной диапазон во время оптимизации параметров эксперта.
  • Установка/модификация/удаление отложенных ордеров.
  • Обработка торговых событий: проверка закрытия последней позиция по Тейк Профит или Стоп Лосс, контроль истории сделок на каждом символе.

Рецепты MQL5 - Мультивалютный советник и работа с отложенными ордерами на MQL5

Автор: Anatoli Kazharski

 

По времени.

Часов не всегда хватает, минуты тоже надо. Например если открытие закрытие рынка в дробное время.

Ну и вот эта функция вызывает вопросы -- через полночь торговать надобится намного чаще, чем минуты

bool IsInTradeTimeRange(int symbol_number)
  {
//--- Если включена торговля во временном диапазоне
   if(TradeInTimeRange[symbol_number])
     {
      //--- Структура даты и времени
      MqlDateTime last_date;
      //--- Получим последние данные даты и времени
      TimeTradeServer(last_date);
      //--- Вне разрешенного временного диапазона
      if(last_date.hour<StartTrade[symbol_number] ||
         last_date.hour>=EndTrade[symbol_number])
         return(false);
     }
//--- В разрешенном временном диапазоне
   return(true);
  }
 
TheXpert:

По времени.

Часов не всегда хватает, минуты тоже надо. Например если открытие закрытие рынка в дробное время.

Ну и вот эта функция вызывает вопросы -- через полночь торговать надобится намного чаще, чем минуты

Да, согласен. Попробую потом изобразить, в какой-нибудь новой схеме.

Тогда наверное вместо перечислений нужно сделать строку, где пользователь сам указывает время. Например: "9 : 35". Иначе список параметров расширяется ещё тремя параметрами (в схеме статьи) для указания минут.

Было бы здорово, если бы была удобная штатная возможность указывать время. Сейчас есть datetime, нужно ещё сделать time. ) 

 

Фактически сплошной программный код, ИМХО как статья это не катит, скорее это для раздела Code Base.

 
revers45:

Фактически сплошной программный код, ИМХО как статья это не катит, скорее это для раздела Code Base.

Ну что же. Удачной работы тогда. Пишите и выкладывайте всё в Code Base. ;)
 
revers45:

Фактически сплошной программный код, ИМХО как статья это не катит, скорее это для раздела Code Base.

Такие статьи удобны для изучения языка.

Проще читать и текст и код, и сразу смотреть иллюстрации, чем отдельно скроллить статью, а отдельно коды из разных файлов.

 

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

 
komposter:

Такие статьи удобны для изучения языка.

Проще читать и текст и код, и сразу смотреть иллюстрации, чем отдельно скроллить статью, а отдельно коды из разных файлов.


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

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

Даже не представляю, что можно было бы ещё добавить в статью. Но ничего страшного. ))

 
  Зачем нагорожено столько кода для нескольких символов? Не проще ли по одному эксперту поставить на разных символах, по-моему так будет и программа быстрее исполняться. В связи с этим, уважаемый автор, не подскажите  как преобразовать эти функции для работы с отложенными ордерами, чтобы они были только для одного символа, кроме способа поставить в переменной  #define NUMBER_OF_SYMBOLS один?
 
kuva:
Зачем нагорожено столько кода для нескольких символов?

Чтобы была возможность протестировать систему в тестере сразу на нескольких символах.

kuva:
Не проще ли по одному эксперту поставить на разных символах, по-моему так будет и программы быстрее исполняться. В связи с этим, уважаемый автор, не подскажите  как преобразовать этот код, чтобы он был работал только на  одном символе, кроме способа поставить в переменной  #define NUMBER_OF_SYMBOLS один?

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

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

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