поправить советник

 
советник не работает на счете, хотя в тестере отрабатывает, огромная просьба посмотреть код
Файлы:
78xdxcyq.mq4  8 kb
77ysv393.ex4  13 kb
 
nikiforenko78:
советник не работает на счете, хотя в тестере отрабатывает, огромная просьба посмотреть код
  1. странное условие для реальной жизни "if(Volume[0]>1) return;"
  2. далее "if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;" просто выбивает перебор ордеров по малейшему шороху
 
Maxim Kuznetsov:
  1. странное условие для реальной жизни "if(Volume[0]>1) return;"
  2. далее "if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;" просто выбивает перебор ордеров по малейшему шороху

Первая строка похожа на организацию работы 1 раз на бар. Высока вероятность, что на первом тике свечи Volume[0]<2. Возможно, в тестере это всегда выполняется, а на реале при интенсивной торговле иначе. Есть смысл перед этой строкой вставить Alert("Volume[0] = ",Volume[0]); и понаблюдать.

Открываю в MetaEditor. Добавляю строку #property strict    Нажимаю кнопку Компилировать. 1 error, 4 warnings. Ругается на переменную BBPeriod. Третий параметр функции iBands должен быть int. Проверяю, где еще эта переменная встречается - ага, только в этой функции. Исправляю double на int.   Нажимаю кнопку Компилировать. 1 error, 0 warnings. Значит, автор его даже компилировать затрудняется...

Заменяю строку         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;    на   if(!OrderSelect(i,SELECT_BY_POS)) continue;

в функции CheckForClose объявил bool cl;   Убрал bool пониже. Ошибки и предупреждения исчезли.

Цикл     for(int i=0;i<OrdersTotal();i++)   заменил на      for(int i=OrdersTotal()-1;i>=0;i--)   уже пояснял в сообщении №20 ошибочность этой обработки ордеров

Закомментировал строку if(Volume[0]>1) return;  - пусть работает каждый тик, потом посмотрим...  На сегодня хватит, пусть автор посмотрит...
 
прикрепите правленный пожалуйста
 
nikiforenko78:
прикрепите правленный пожалуйста

Бросьте эти еврейские штучки. Вам подробно все пояснили. Думайте сами.
 
nikiforenko78:
прикрепите правленный пожалуйста
Это вам во Фриланс. Там прикрепят. А здесь - только помогают, и вам вполне нормально указали на проблемы в вашем советнике.
 

Может, это кому-нибудь пригодится. Много лет назад, когда я еще пользовался тестером стратегий, применял такой тест:

вешал на демке советник и проверял в тестере.

Если на демке и в тестере сделки открываются синхронно, тогда код написан верно.

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