Обсуждение статьи "Создание мульти-экспертов на основе торговых моделей"

 

Опубликована статья Создание мульти-экспертов на основе торговых моделей:

Использование объектно-ориентированного подхода в MQL5 значительно упрощает создание мультивалютных/мультисистемных/мультитаймфреймовых экспертов. Только представьте, ваш один единственный эксперт торгует сразу по нескольким десяткам торговых стратегий, сразу на всех доступных инструментах и сразу на всех возможных таймфреймах! К тому же этот эксперт прекрасно тестируется в тестере, а для всех стратегий, входящих в его состав, действует одна или сразу несколько систем управления капиталом.

Автор: Василий Соколов

 

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

А ведь могли бы обозвать все намного проще - "Как торговать экспертами с логикой MQL4 в терминале MT5". И именно на это обращать внимание.
Если бы основной упор вы делали на этом краеугольном камне, то получилось бы намного компактнее и понятнее.

А так, сначала загрузили динамическими списками и их применения для этого конкретного случая. Затем таблицей виртуальных ордеров.

Вся логика MQL4 - решается в MQL5 с помощью функционала из ДВУХ методов!
1. восстановление из истории терминала тикетов стоплоса и тейкпрофита
2. дальнейший их контроль при срабатыввании одного из них или удалении основного одрера.

А потом уже после объяснения этих двух ГЛАВНЫХ функций переходить на динамические массивы и построение "моделей-mql4-экспертов".

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

Зачем то загрузили читателя бесполезными файлом <Time.mqh>, с не очень красивыми реализациями его функций

Потом функциями для подсчета ордеров, контроля лотов.

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

Ну и по самим приведенным моделям - я так и не понял как вы используете стоплос и тейкпрофит у ордера. Ни в МАКД и в Болинджере я не нашел использование стопов.

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

Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Основы языка / Типы данных / Объект динамического массива - Документация по MQL5
 

Да, без восстановления списка сделок из истории счета (или из собственного файла) получилась игрушка для тестера.

 
udmurt2:

Очень плохо, что вы не описали работу с отложенными ордерами.

Работа с отложками есть. но написана в самом конце статьи. (у вас наверно терпения не хватило дочитать :)).

В целом статья действительно тяжелая для понимания. Её можно было бы лучше структурировать в плане подачи информации.

 

to:Udmurt2

Где по вашему в моей статье логика MQL4 экспертов? Из написанной Вами рецензии создается впечатление полного не понимания материала. Во многом это конечно моя вина, возможно его действительно стоило бы структурировать лучше.

-------------------------------- 

Есть ли у Вас конкретные предложения по улучшению структуры статьи?

Согласен, многое осталось "за кадром". Рассматривайте данную версию как 1.0. Вот что планируется ввести:

1. Серриализация данных  на основе файлов-данных;

2. Восстановление истории сделок модели по истории ордеров;

3. Полное описание модели на основе отложенных ордеров;

4. Описание торговой модели использующей сложную систему взаимоучитываемых ордеров;

5. Динамический контроль эффективности каждой из моделей (изъятие неэффективных моделей из списка моделей).

6. Вывод из торговых моделей внешних, по отношению к ним функций, например, функций управления капиталом. 

7. Поддержка многопоточности (частично используется уже сейчас, благодаря внутреннему распараллеливанию МТ5). 

...

Как видно материал, который еще нужно рассмотреть настолько всеобъемлющий, что впору по нему писать еще одну статью не меньшего объема, вторую часть так сказать. Эта же статья не резиновая, в любом случае, считаю, что задачи, которые я перед собой поставил, были решены. И здесь Udmurt2 особенно не прав. Основа предложенного подхода - динамические списки, а вовсе не работа с отложенными ордерами (как ему почему-то показалась). Именно поэтому им уделяется такое большое внимание. По большому счету, не было бы такой стратегии,  которую нельзя было бы решить без использования отложенных ордеров. Однако предложенный мной подход не налагает ни каких ограничений на использование отложенных ордеров имитирующих те же стопы и тейки. Однако в этом случае требуются дополнительные проверки и программные подсистемы, в частности очень не помешала бы структура, описывающее событие Trade(). А пока ее нет (потому что MQL5 развивается), писать системы контроля под несуществующие возможности считаю полным безумием.

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

Сейчас MQL5 развивается. Предложенный подход так же как и MQL5 со временем тоже будет развиваться и обрастать возможностями. Возможно кому-то кажется, что на сегодняшнем этапе это игрушка для тестера. В таком случае можно сказать, что сейчас MetaTrader 5 - это тоже игрушка для демо счетов. Но поверьте, пройдет не много времени, и МТ5 станет стандартом де-факто, а предложенный мною подход будет мощным решением мультивалютной/мультитаймфреймовой/мультисистемной торговли. Сейчас главное понять основы. Эти основы и были изложены мной в статье. Поняв их вы без труда сможете написать свою торговую модель использующую все преимущества отложенных ордеров и запоминание сделок в файлах.

 
Да, и еще. Изначально я писал предложенный торговый движок для себя, так как являюсь действующим трейдером МТС-ником. Мне нужен был именно такой движок, что бы в будущем, я мог использовать его в работе на реальных счетах. Сейчас реальных счетов нет и полноценный переход на МТ5 еще только предстоит. Поэтому у меня пока есть время хорошо продумать и реализовать необходимый функционал в рамках предложенной модели требуемый для торговли на реальных счетах. В любом случае, считаю что за счет высокой степени инкапсуляции и гибкого управления памятью, достигается высокая мастштабируемость и универсальность. На базе предложенного подхода можно создать много интересных обслуживающих подсистем, как то: система контроля эффективности за каждой торговой моделью из списка, индивидуальная система капитализации для каждой из модели (уже реализована), система условного включения/изъятия торговой модели в список (если рынок обладает определенными формализованными свойствами при которых модель эффективна либо не эффективна, то она динамически включается в список либо изымается из него). При том, алгоритм может обрабатывать сотни моделей одновременно (в дальнейшем планируется ввести многопоточность штатными средствами). Ну скажите, какой еще предложенный подход имеет такую гибкость и управляемость?
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете - Документация по MQL5
 
C-4:

Где по вашему в моей статье логика MQL4 экспертов? 

открываем самое начало и читаем:

Итак, вот основные задачи, которые нам потребуется решить:

  1. Эксперт должен торговать на основе сразу нескольких торговых систем. При этом  он должен одинаково легко торговать как по одной, так и по нескольким торговым системам;
  2. Все торговые системы, заложенные в эксперте, не должны конфликтовать друг с другом. Каждая торговая система должна обрабатывать только свой вклад в совокупную позицию, и только свои ордера;
  3. Любая из совокупности систем должна одинаково легко торговаться как на одном таймфрейме инструмента, так и на всех таймфреймах сразу.
  4. Любая из совокупности систем должна одинаково легко торговаться как на одном торговом инструменте, так и на всех доступных инструментах сразу.

и по всем этим пунктам четко и абсолютно идентифицируется логика терминала MT4

1. Он может вести одновременно несолько экспертов благодаря магику и отсутствию нетто-позиции.  
2. Эксперты не конфликтуют друг с другом благодаря тому же магику и отсутствию нетто-позиции.  
3. Все торгуется на любом таймфрейме
4. Все торгуется на любом инструменте.

ВОСПРОС:  Что вы написали такого нового, чего нет в терминале МТ4 ? 

 

Я написал выше что вы могли бы построить свои рассуждения именно от базы MQL4 и разрабатывать его реализацию. так было бы намного понятнее что хотите сказать.

Есть ли у Вас конкретные предложения по улучшению структуры статьи?

Я бы её строил по-этапно, от учета стопов по магик-тикету для создания модели торгующего эксперта-мт4
и только потом перешел бы на методы контроля нескольких экспертов. (списки/не списки это уже как у кого будет настроение применять)
 

Рассматривайте данную версию как 1.0. Вот что планируется ввести:
2. Восстановление истории сделок модели по истории ордеров;
3. Полное описание модели на основе отложенных ордеров;
4. Описание торговой модели использующей сложную систему взаимоучитываемых ордеров;

пункты 2-4 - это то что вам надо было решать сразу в этой статье. все остальное от лукавого. и можно было оставить на усмотрение программиста или во второй статье.

И здесь Udmurt2 особенно не прав. Основа предложенного подхода - динамические списки, а вовсе не работа с отложенными ордерами (как ему почему-то показалась). Именно поэтому им уделяется такое большое внимание.
как ни крути, а основа данного метода (ваших начальных задач и цель данной статьи) не списки, а распыление нетто-позиции МТ5 на логику экспертов МТ4. и обработка их стопов через магик-тикет.

а динамические списки - это лишь один из методов их контроля и учета. можно и обычным массивом обойтись.

 Ну скажите, какой еще предложенный подход имеет такую гибкость и управляемость? 

любой эксперт МТ4 :))

 

C-4:

Возможно кому-то кажется, что на сегодняшнем этапе это игрушка для тестера. В таком случае можно сказать, что сейчас MetaTrader 5 - это тоже игрушка для демо счетов.

Да, так и есть ;)

Но МТ дорабатывается. А предложенный в статье код можно было написать сразу с рассчетом на реал.


Как, кстати, чемпионатовский советник? Не пострадал от перезагрузок?

 

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

 
komposter:

Да, так и есть ;)

Но МТ дорабатывается. А предложенный в статье код можно было написать сразу с рассчетом на реал.

Как, кстати, чемпионатовский советник? Не пострадал от перезагрузок?


Пострадал, но очень не значительно. В нем разумеется был встроен обработчик событий инициализация/деинициализация.  Однако я не учел одного, инициализация и деинициализация может происходить в не рабочее время например в субботу, что организаторы чемпионата и устроили. Это решается всего несколькими строками кода, но я просто не догадался о такой коварной комбинации (ну нельзя же учесть все), поэтому где-то 1 лот был потерян. 

 

Постараюсь в ближайшее время написать простенькую серриализацию данных и вставить ее в статью (в принципе работы на один два дня). С ней это будет уже полноценный продукт для работы на реал-тайм счетах (демо и реал). Так что все-таки зря Вы говорите что это игрушка для тестера. Не хватает всего 5-6% обслуживающего кода, для надежного использования на реале.

Еще в планах ввести такую штуку: допустим есть абстрактная торговая модель. Она использует только отложенные ордера (стопы, тейки, точки входа). В движке будет два способа использования: все точки входа стопы и тейки будут виртуальными, скрытыми от глаз брокера. Второй вариант: все тейки стопы и точки входа будут на отложенных ордерах, для увеличения надежности. Интересно что для каждой модели будет два вида виртуализации (отложенный и собственно виртуальный). Т.е. будет так: включил переклюичатель virtual_orders=true; -  и все ордера виртуальные, скрытые от глаз брокера; включил virtual_orders=false; - и все ордера становятся волшебным образом отложенными. При этом, самое приятное, не потребуется специальная поддержка от модели, все будет реализовано на уровне движка. Для моделей будет требоваться указать только тип ордера для точек входа, вид стопов и тейков будет выбираться самостоятельно, в зависимости от переключателя virtual_orders.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 

to:Udmurt

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

Наш разговор с нами считаю бессмыслицей, потому что вы даже до конца не понимаете суть ваших же утверждений. Докажите мне что вы действительно разбираетесь в MQL4 и напишите на нем торговый эксперт например одновременно торгующий по 500 различным торговым моделям. Возьмем для примера 5 стратегий * 20 инструментов * 5 таймфремов. Когда ваш эксперт будет четко работать по ним хотя бы в тестере, тогда и только тогда я признаю что тот перегретый бред который вы несете в действительности не бред, а дельные замечания умного человека. Сейчас же я хочу попросить вас об одолжении: не беспокойте меня по пустякам и без исходного кода этого эксперта даже не пытайтесь общаться со мной.

Причина обращения: