Торговые системы: Как разработать надежный и безопасный торговый робот на языке MQL4

 

New article Как разработать надежный и безопасный торговый робот на языке MQL4 has been published:

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

Author: Shashev Sergei

 

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

 
Для этого можно в процедуре Deal() отправлять соответствующие ордера со стоп-лоссами. Согласен, при стоп-лоссах будет спокойнее спать, но лучше их ставить подальше, чтобы случайные колебания рынка их не выбили, что, к сожалению, так часто происходит.
 
Почему при компиляции появляется такая ошибка #include <TradeContext. mqh>?
 
Эксперт использует библиотеку, которая выложена в прикрепленых файлах .Нужно скопировать библиотеку TradeContext.mqh в папку experts\include. Тогда откомпилируется.
 
Мне тоже статья понравилась. Очень просто и доступно всё расписано.
Понятно, что для реального эксперта нужна намного более сложная система обработки ошибок, но представленный пример лучше, чем ничего. Сейчас, к сожалению, во многих экспертах нет и такого блока обработки...

Бросились в глаза 3 опечатки, лучше всё-таки исправить. В главе "Торговые ошибки", в коде: два раза "if(ticket > 0)" и один раз "RefleshRates();".

А в общем, спасибо автору за статью ;)
 

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

Теперь все работает (правда, отрывает сразу по 10 позиций). На тестере RefreshRates() не работает и надо ставить выход из безконечного цикла основной программы.
Вообще, статья нужная. Этот шаблон эксперта - лучший, который я видел с обработкой ошибок. Конечно, требует доработок по обработке ошибок, "защите от дурака", естественно, нормального блока аналитики. .. А в целом, очень неплохо. Думаю использовать как базовый для написания эксперта на цифровых индикаторах.

 
Да этот шаблон собственно и не для тестера. В тестере эксперты с бесконечным циклом работают неважно.
 

Я запускал на тестере в функции start поменял while(Trade) на if (Trade==true) иначе не хотело работать, да и кажется ж функция start запускается при поступлении нового тика, так что в необходимости цикла вроде как нет необходимости, потом в этой же функции после if(action == 3) идет еще один if в котором идут фигурные скобки на несколько строк, тоже вроде бы не так нужно, так как опять не хотело работать, пока не поменял как по аналогии было сделано ниже и выше в коде, т.е. вот так получилось:

if(action == 3)

{

if(TradeIsBusy() < 0)//после этого if убраны фигурные скобки

return(-1);

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