- Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
- Советник не выбирает ордера в реальной торговле
- Как я собираю себе советника методом тыка
Здравствуйте. Возможно мой вопрос будет выглядеть глупым и невозможным, но так оно и есть. Пишу эксперта и столкнулся с проблемой, а именно эксперт выставляет ордера, но закрывает сделки когда хочет. При этом функция закрытия ордеров и выставления стоп ордеров отключены и при компиляции выводит сообщение, что такие-то такие функции не используются. В журнале тестера сделку закрывает эксперт, но данной функции в нем нет! Если честно долго изучал, что написал, но вот такое рандомное закрытие сделок я объяснить не смог. Вписывал алерты в функцию закрытия ордеров, но в журнале этих алертов нет. Могу сделать вывод, что это не эксперт в тестере закрывает сделки. Вопрос что может закрывать сделки? MT4 build 218.
Приведите код эксперта и Вам сразу объяснят в чем дело.
Любая программа работает так, как ее написали и нет неправильно работающих программ !
if (sendstopstoserver == false)// проверка на закрытие по стоп приказам { for (i=1;i<=ar;i++) { if (Allorders[2][i][3] == 1) { if (Allorders[2][i][0] == 1) { if (Allorders[2][i][1]==0) //покупка { //if (Allorders[2][i][13]!=3) //проверка был ли изменён // { //Alert ("Вызвали функцию модификации пункт 1"); //if (trailing_bool==true) // {z = Allorders[2][i][2]+Point*trailing; // if (z<=Bid) // { // modify(i); // Allorders[2][i][13]=3; // } //Alert ("Вызвали функцию модификации пункт 2"); //Alert ("Если превысил",z); //} // } if (Allorders[2][i][4]>=Bid) { //Alert(ar," = ar !!!"); Alert("Пункт 1 внутри проверки на закрытие. Прошла успешнр проверка на стоплосс",Allorders[2][i][4]," цена открытия", Allorders[2][i][2]," текущий bid = ",Bid); CloseOrder(2,i); } if (Allorders[2][i][5]<=Bid) { Alert("Пункт 1.1 внутри проверки на закрытие .Прошла успешнр проверка на стоплосс",Allorders[2][i][5]," цена открытия", Allorders[2][i][2]," текущий bid = ",Bid); //Alert(Allorders[2][i][1]," - если 0 то это покупка, если 1 - продажа"); CloseOrder(2,i); } } if (Allorders[2][i][1]==1) //продажа { if (Allorders[2][i][4]<=Ask) { Alert("Пункт 2 внутри проверки на закрытие. Прошла успешнр проверка на стоплосс",Allorders[2][i][4]," цена открытия", Allorders[2][i][2]," текущий bid = ",Ask); CloseOrder(2,i); } if (Allorders[2][i][5]>=Ask) { Alert("Пункт 2.1 внутри проверки на закрытие .Прошла успешнр проверка на стоплосс",Allorders[2][i][5]," цена открытия", Allorders[2][i][2]," текущий bid = ",Ask); CloseOrder(2,i); } } } } } }
ещё код функции закрытия
+лог из журнала в котором видно что закрывается он по сверх причине
Почему же по сверх-причине ? Ведь если выдаётся сообщение из основного кода "...Прошла успешно проверка ..., то за ним сразу же и неизбежно выполняется функция CloseOrder().
Другое дело, что из функции CloseOrder() нет сообщения о закрытии ордера. Думаю, что Вы зыпускаете ещё не модифицированный эксперт, в котором это сообщение отсутствует.
Почему же по сверх-причине ? Ведь если выдаётся сообщение из основного кода "...Прошла успешно проверка ..., то за ним сразу же и неизбежно выполняется функция CloseOrder().
Другое дело, что из функции CloseOrder() нет сообщения о закрытии ордера. Думаю, что Вы зыпускаете ещё не модифицированный эксперт, в котором это сообщение отсутствует.
Вы правы я нашел ошибку в коде. У меня вообще с этим форумом так всегда, как только напишу что-нибудь нелепое, так потом на след день сам разберусь где ошибка.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования