I needed help: Создание боевого робота :)

 

Доброго времени суток всей честной компании!

Недавно, наконец, столкнулся с несвойственной для меня ранее задачей написания "боевой" версии советника. Написание советника для тестера занимает, в среднем, от 20 до 40 минут, а тут уже несколько дней думаю и прикидываю варианты. Пытался найти что-нибудь интересное поиском по форуму (тишинаааа...), так же глянул мельком исходники небезызвестной LibOrderReliable (ныне покойной, как я понимаю :) ).

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

1.Нормальная работа - выставление отложенников, передвижение стопов для открытых ордеров.

2.Работа в "виртуальном" режиме - когда, например, невозможно передвинуть стоп или отложенник из-за того, что он слишком близко к цене (в т.ч. если ДЦ, мило улыбаясь, раздвинул минимальный уровень до стопа).

3.Обработка 100500 вариантов ошибок (RefeshRate() или, чаще, повторение действия при следующем вызове start()) типа ERR_SERVER_BUSY, ERR_PRICE_CHANGED, ERR_TRADE_CONTEXT_BUSY и т.д. Радует, что число ошибок всё-таки ограничено и требует только одно из двух действий для исправления (RefreshRate() или повтор), и огорчает, что это надо делать минимум в нескольких местах при разных ситуациях.

Собственно, просьба к более опытным людям, если таковые тут вообще есть, поделиться опытом - как вы решаете эти проблемы? Какие советы по архитектуре/структуре советника вы можете дать? Наконец, какие темы на форуме, может, стоит почитать?

Лисапед я, конечно, всё равно сконструирую, но как показывает мой опыт в роли инженегра, как минимум полезно познакомиться с работами предшественников на тему сколько колёс лучше, куда воткнуть руль и где поставить педали... Надеюсь на ваш отклик!

 
Azzx:

... Собственно, просьба к более опытным людям, если таковые тут вообще есть, поделиться опытом ...


Похоже, Вам сюда: https://www.mql5.com/ru/forum/131310/page18; заодно,- поможем братьям-кочегарам.
 
tara:
Похоже, Вам сюда: https://www.mql5.com/ru/forum/131310/page18; заодно,- поможем братьям-кочегарам.

Честно говоря, не понял зачем мне туда. :(

Обсуждают совсем другие вопросы...

 
Картинка в Вашей голове несколько эклектичная. В том смысле, что смешиваются понятия. Есть основные библиотеки, функции которых тщательно заточены на работу с ордерами и корректную обработку ошибок на реале. Это, например, старые библиотеки komposter'а и новые TheXpert'а. У них нет проблем с работой на реале разумными лотами у нормальных брокеров.
Это и есть основная особенность "боевого робота". А все остальные примочки без особых волнений могут применяться свои или заимствованные у тестерных советников. Большинство конечных исполнительных функций в них можно вызывать как раз из "боевых" библиотек.
 

пишите универсальную функцию по работе

с ордерами/отлож. и базой оброботки ошибок.

как писали выше есть много готовго кода. (библиотеки по работе с ордерами от KimIV) к примеру.

 
granit77:
Картинка в Вашей голове несколько эклектичная. В том смысле, что смешиваются понятия. Есть основные библиотеки, функции которых тщательно заточены на работу с ордерами и корректную обработку ошибок на реале. Это, например, старые библиотеки komposter'а и новые TheXpert'а. У них нет проблем с работой на реале разумными лотами у нормальных брокеров.
Это и есть основная особенность "боевого робота". А все остальные примочки без особых волнений могут применяться свои или заимствованные у тестерных советников. Большинство конечных исполнительных функций в них можно вызывать как раз из "боевых" библиотек.

mql05:

пишите универсальную функцию по работе

с ордерами/отлож. и базой оброботки ошибок.

как писали выше есть много готовго кода. (библиотеки по работе с ордерами от KimIV) к примеру.


Как я уже говорил, доводилось видеть в работе LibOrderReliable. Там используется тот же подход - т.е. оболочка поверх стандартных функций с попытками "добить" операцию любой ценой. Результат мне категорически не нравится. :( Как правило, если операция не отработала сразу, то повторять попытки в течении какого-то времени (обычно не сильно большого) - просто бессмысленно.

Собственно, я и спрашивал про альтернативы. Но, я так понимаю, вы реально, т.е. на реальных счетах пробовали "лобовой" подход и результаты вас удовлетворили?

 
Azzx:


Как я уже говорил, доводилось видеть в работе LibOrderReliable. Там используется тот же подход - т.е. оболочка поверх стандартных функций с попытками "добить" операцию любой ценой. Результат мне категорически не нравится. :( Как правило, если операция не отработала сразу, то повторять попытки в течении какого-то времени (обычно не сильно большого) - просто бессмысленно.



Это зависит от причины, по которой операция не выполнена. При некоторых ошибках бессмысленно, при других - помогает .... Нужна функция обработки ошибок.
 
VladislavVG:
Это зависит от причины, по которой операция не выполнена. При некоторых ошибках бессмысленно, при других - помогает .... Нужна функция обработки ошибок.

Насколько я понимаю, есть всего два кода ошибок (это по результатам рассмотрения LibOrderReliable), которые требуют лишь RefreshRates(). Это ERR_PRICE_CHANGED и ERR_REQUOTE. Всё остальное с большой долей вероятности "подвесит" терминал на некоторое время, причём наиболее вероятно, что ничего этим не добьётся. :(
 
Azzx:
...Собственно, я и спрашивал про альтернативы. Но, я так понимаю, вы реально, т.е. на реальных счетах пробовали "лобовой" подход и результаты вас удовлетворили?
Да, я в советниках и полуавтомате использовал раньше библиотеки Андрея, а теперь другого Андрея. Перешел, потому что новых версий библиотеки компостера не публиковалось, да и соблазнила возможность визуальной торговли на ходу руками параллельно с советником.
За два года работы на реале не было ни одной тупиковой ситуации. Четыре знака, лоты до 2,0 максимум, в среднем 0,1...1,0.
 
granit77:
Да, я в советниках и полуавтомате использовал раньше библиотеки Андрея, а теперь другого Андрея. Перешел, потому что новых версий библиотеки компостера не публиковалось, да и соблазнила возможность визуальной торговли на ходу руками параллельно с советником.
За два года работы на реале не было ни одной тупиковой ситуации. Четыре знака, лоты до 2,0 максимум, в среднем 0,1...1,0.

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

Про второго Андрея - это TheXpert? А что за библиотеки? Вроде бы в CodeBase он ничего такого не выложил (сейчас ещё внимательно посмотрю).

Ну и ещё вопрос - т.е. проблемы с реквотами таким образом решаются успешно? Или там, где вы торгуете, их просто нет?

 

https://www.mql5.com/ru/articles/1354

Реквоты есть, повлиять на них советник не может, но он может правильно их обрабатывать. Я в свое время вместо изучения торговых операций решил использовать качественные торговые библиотеки и не жалею об этом. Самопальные коды на них торгуют с профессиональным качеством. Голова болит только о том, о чем и должна болеть у трейдера - "куды бечь?", а не "как обработать реквоту".

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