Скачать MetaTrader 5

Как принудительно проверить журнал ? - страница 4

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Boeing747
241
Boeing747  
expertboss:

Магик я не рассматривал по умолчанию, а вопрос в том что сигнал на закрытие происходит не из эксперта и он не знает в этом случае что пошел сигнал на закрытие. Опять же "искать в журнале " что там появился новый удаленный ордер.
в принципе можно научить эксперта читать журнал или логфайл при помощи функции FileRead() . но как научить его распозновать запись которая говорила бы ему что пошла отправка приказа на закрытие ордера вручную ...и как он будет отличать свои команды от сторонних если записи в логфайле очень просты и по ним нельзя определить каким способом пытаются закрыть ордер вручную или при помощи эксперта или скрипта . сперва записывается команда на сервер с параметрами ; номер тикера потом тип торговой операции , потом символ и так далее и видать нет способов поставить какую нибудь метку по которой бы можно было бы отличать каким способом закрывается ордер ...или я все усложняю как всегда или  все таки можно сделать все проще.  
Boeing747
241
Boeing747  
expertboss:

Здесь просьба есть к Вам: не соображу как добавить этот "Sleep(100);"  в обработке ошибок свои номера ошибок, а мне как добавить свой номер ошибки. Может как по другому. Эта функция опять из учебника.

 int Fun_Error(int Error)                       // Ф-ия обработ ошибок

  {

   // Error                                    // Номер ошибки   

   if(Error==0)return(0);                      // Нет ошибки

      

                

//--------------------------------------------------------------- 3 --

      switch(Error)

     {                                          // Преодолимые ошибки            

      case  4: Alert("Торговый сервер занят. Пробуем ещё раз..");

         Sleep(1000);                           // Простое решение

         return(1);                             // Выход из функции

      case 135:Alert("Цена изменилась. Пробуем ещё раз..");

         RefreshRates();                        // Обновим данные

         return(1);                             // Выход из функции

      case 136:Alert("Нет цен. Ждём новый тик..");

         while(RefreshRates()==false)           // До нового тика

            Sleep(1);                           // Задержка в цикле

         return(1);                             // Выход из функции

      case 137:Alert("Брокер занят. Пробуем ещё раз..");

         Sleep(1000);                           // Простое решение

         return(1);                             // Выход из функции

      case 146:Alert("Подсистема торговли занята. Пробуем ещё..");

         Sleep(500);                            // Простое решение

         return(1);                             // Выход из функции

         // Критические ошибки

      case  2: Alert("Общая ошибка.");

         return(0);                             // Выход из функции

      case 133:Alert("Торговля запрещена.");

         return(0);                             // Выход из функции

      case 134:Alert("Недостаточно денег для совершения операции.");

         return(0);                             // Выход из функции

      default: Alert("Возникла ошибка ",Error); //Другие варианты   

          return(0);                            // Выход из функции

     }

  }

то число что записанно после слова case  показывает номер ошибки .  например учет ошибки 130 - неправильные стопы ,можно реализовать так;

case 130: Alert( " Неправильные стопы " );

return(0);   // выход из функции

 

по поводу паузы Sleep(100); если ее ставить в цикле while ( true ) то ее лучше выставить сразу после отправки приказа на сервер после OrderClose().. но думаю она там не нужна если не мониторить базу закрытых ордеров после отправки сигнала. нужные паузы лучше делать в теле функции обработки ошибок

Александр
123
Александр  
Нет не поняли вопрос, подставить код ошибки это понятно, а сформировать какой-нибудь свой номер допустим для "нет ответа с сервера о закрытии" номер такой-то напрмер(777) и дальше спим (100) проверяем нет опять 777 проверяем есть - выход .....
Boeing747
241
Boeing747  
expertboss:
Нет не поняли вопрос, подставить код ошибки это понятно, а сформировать какой-нибудь свой номер допустим для "нет ответа с сервера о закрытии" номер такой-то напрмер(777) и дальше спим (100) проверяем нет опять 777 проверяем есть - выход .....
в учебнике приводится много примеров похожих ошибок выдаваемых GetLastError() , не смотрели ? думаю разработчики все учли .. например ошибка 146 - подсистема торговли  занята..будем ждать значит.потом есть еще такая ошибка 6 - нет связи с торговым сервером - тоже ждем и много других ошибок после которых нет смысла покидать пределы цикла без повторных попыток . откройте редактор программ. в навигаторе выберете вкладку словарь и в списке " Стандартные константы " найдете коды ошибок
Александр
123
Александр  
Boeing747:
в принципе можно научить эксперта читать журнал или логфайл при помощи функции FileRead() . но как научить его распозновать запись которая говорила бы ему что пошла отправка приказа на закрытие ордера вручную ...и как он будет отличать свои команды от сторонних если записи в логфайле очень просты и по ним нельзя определить каким способом пытаются закрыть ордер вручную или при помощи эксперта или скрипта . сперва записывается команда на сервер с параметрами ; номер тикера потом тип торговой операции , потом символ и так далее и видать нет способов поставить какую нибудь метку по которой бы можно было бы отличать каким способом закрывается ордер ...или я все усложняю как всегда или  все таки можно сделать все проще.  

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

.....  да а продажа похоже в пролете с "какой нибудь" меткой даже "комента" нет (посмотрел) 

Александр
123
Александр  
Boeing747:
в учебнике приводится много примеров похожих ошибок выдаваемых GetLastError() , не смотрели ? думаю разработчики все учли .. например ошибка 146 - подсистема торговли  занята..будем ждать значит.потом есть еще такая ошибка 6 - нет связи с торговым сервером - тоже ждем и много других ошибок после которых нет смысла покидать пределы цикла без повторных попыток . откройте редактор программ. в навигаторе выберете вкладку словарь и в списке " Стандартные константы " найдете коды ошибок

В том то и дело что это похожие ошибки а не та которая нужна в данной ситуации.

учебник и справочник можно сказать на 95% от "корки до корки" 

Boeing747
241
Boeing747  
Boeing747:
в учебнике приводится много примеров похожих ошибок выдаваемых GetLastError() , не смотрели ? думаю разработчики все учли .. например ошибка 146 - подсистема торговли  занята..будем ждать значит.потом есть еще такая ошибка 6 - нет связи с торговым сервером - тоже ждем и много других ошибок после которых нет смысла покидать пределы цикла без повторных попыток . откройте редактор программ. в навигаторе выберете вкладку словарь и в списке " Стандартные константы " найдете коды ошибок
наверно ошибка 128 - истек срок ожидания сделки = нет ответа сервера о закрытии сделки ..думаю этого достаточно  
Александр
123
Александр  
сорри - подойдет.
Boeing747
241
Boeing747  
expertboss:

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

.....  да а продажа похоже в пролете с "какой нибудь" меткой даже "комента" нет (посмотрел) 

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