Статья: Универсальный шаблон экспертов

 
Опубликованиа статья Универсальный шаблон экспертов

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

Автор: Вадим Андреевич

 
Ну!? Помог кому-нибудь???
 

Да там просто ошибка на ошибке. И проверок никаких. Особенно убило вот это

int CloseOnlyOrder()
{
   SelectOnlyOrder();
   if(OrderType()==0)  // Закрываем BUY
   {
      OrderClose(OrderTicket(), OrderLots(), Bid, 0, 0);
   }
   else if(OrderType()==0)  // Это просто никогда не срабатывает. Еще один BUY???
   {
      OrderClose(OrderTicket(), OrderLots(), Ask, 0, 0);
   }
   return(0);
}
 
PSmith:

Да там просто ошибка на ошибке. И проверок никаких. Особенно убило вот это

int CloseOnlyOrder()
{
   SelectOnlyOrder();
   if(OrderType()==0)  // Закрываем BUY
   {
      OrderClose(OrderTicket(), OrderLots(), Bid, 0, 0);
   }
   else if(OrderType()==0)  // Это просто никогда не срабатывает. Еще один BUY???
   {
      OrderClose(OrderTicket(), OrderLots(), Ask, 0, 0);
   }
   return(0);
}

Похоже MQ значительно ослабили рецензию статей, если так пойдет и дальше, то "база знаний" превратится в мусорную свалку.

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

 
PSmith:

Да там просто ошибка на ошибке. И проверок никаких. Особенно убило вот это

int CloseOnlyOrder()
{
   SelectOnlyOrder();
   if(OrderType()==0)  // Закрываем BUY
   {
      OrderClose(OrderTicket(), OrderLots(), Bid, 0, 0);
   }
   else if(OrderType()==0)  // Это просто никогда не срабатывает. Еще один BUY???
   {
      OrderClose(OrderTicket(), OrderLots(), Ask, 0, 0);
   }
   return(0);
}
Еще какие? Щас подправлю и на проверку! Давайте хоть своими силами исправлять ситуацию!
 
cloud666 писал (а): Еще какие? Щас подправлю и на проверку! Давайте хоть своими силами исправлять ситуацию!


Статья уже не доступна... Но даже пустой шаблон не приспособлен к реальной торговле.

1. SelectOnlyOrder всегда выбирает первый ордер по истории, не проверяя при этом ни символ, ни магикнумбер.

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

2. В приведенном отрывке проскальзывание=0. В тестере это работает, а в реальной торговле бывают реквоты.

3. Нет проверки результата (того же OrderClose, OrderSend тоже без проверки ставился).

И т.д.

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

 
PSmith:
cloud666 писал (а): Еще какие? Щас подправлю и на проверку! Давайте хоть своими силами исправлять ситуацию!


Статья уже не доступна... Но даже пустой шаблон не приспособлен к реальной торговле.


1. SelectOnlyOrder всегда выбирает первый ордер по истории, не проверяя при этом ни символ, ни магикнумбер.


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


2. В приведенном отрывке проскальзывание=0. В тестере это работает,  а в реальной торговле бывают реквоты.  


3. Нет проверки результата (того же OrderClose, OrderSend тоже без проверки ставился).


И т.д.


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


 



Статья не доступна из-за исправленной ошибки!
1. Он просто как пример реализации большинства полезных функций.
2. Я использую проскальзывание 0, мой сигнал формируется по дневкам, установит ордер по-любому в течение минуты!!!
3. То же самое, что и пункте 3
 

Да же при сигнале на дневках можно наткунться на необходимость закрыться в 15-30 по Москве и наткнуться на проскальзывание в 2-3 спреда!

Вот такая реакция на новость (не всегда, но регулярно):

Закрыть с рынка с проскальзыванием меньше 3 не получится. Тоже самое при открытии.

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

Я себе представляю шаблон эксперта примерно таким:

1. Определение возможности торговли (время, наличность и.т.п)

2. Блок инициализации внутренних пременных (можно и в init, в зависимости от ТС), расчет лота, учет ММ и т.п.

3. Поиск установленных ордеров.

4. Если ордера найдены - проверка необходимости закрытия или перемещения трейлинг-стопа. Сброс сигнала на открытие.

5. Если ордеров нет - расчет сигнала на открытие (блок ТС).

6. Есть сигнал на открытие - открытие торгов.

По большому счету всё.

 
Какое-то время тому назад я пытался такое сделать, причем попробовал учесть все случаи, до которых мог дотянуться. В результате получился монстр весом около 70 к (в исходнике), работать с которым было сущим наказанием и казнью египетской. Проще уж было каждый раз ваять эксперта заново. Хотя, может быть, я слишком буквально понял задачу. Тем не менее, на мой взгляд, правильнее идти по пути создания библиотечных модулей -- блоков вроде конструктора, из которых "собирался" бы окончательный вариант эксперта.
 
А я себе сделал шаблон в виде набора готовых функций, написание эксперта сводится к заданию условий и  указания функций. Все  функции с возможность ввода внешних переменных ,проверки и принты зашиты внутри. Ордера и их параметры определяются "на лету" по магическим номерам. Может немного ресурсозатратно, зато вызывать удобно.
 
2Fion: Вот к этому варианту я в конце концов и пришел. Сейчас ваяю.
Причина обращения: