Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Магик я не рассматривал по умолчанию, а вопрос в том что сигнал на закрытие происходит не из эксперта и он не знает в этом случае что пошел сигнал на закрытие. Опять же "искать в журнале " что там появился новый удаленный ордер.
Здесь просьба есть к Вам: не соображу как добавить этот "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().. но думаю она там не нужна если не мониторить базу закрытых ордеров после отправки сигнала. нужные паузы лучше делать в теле функции обработки ошибок
Нет не поняли вопрос, подставить код ошибки это понятно, а сформировать какой-нибудь свой номер допустим для "нет ответа с сервера о закрытии" номер такой-то напрмер(777) и дальше спим (100) проверяем нет опять 777 проверяем есть - выход .....
в принципе можно научить эксперта читать журнал или логфайл при помощи функции FileRead() . но как научить его распозновать запись которая говорила бы ему что пошла отправка приказа на закрытие ордера вручную ...и как он будет отличать свои команды от сторонних если записи в логфайле очень просты и по ним нельзя определить каким способом пытаются закрыть ордер вручную или при помощи эксперта или скрипта . сперва записывается команда на сервер с параметрами ; номер тикера потом тип торговой операции , потом символ и так далее и видать нет способов поставить какую нибудь метку по которой бы можно было бы отличать каким способом закрывается ордер ...или я все усложняю как всегда или все таки можно сделать все проще.
Серверу до лампочки как сформирован сигнал есть сигнал он его обрабатывает. если запросов сильно много с одного места он ругается "частые запросы" и может банить терминал или IP. это другая тема, где-то на форуме хорошо раскрыта.
..... да а продажа похоже в пролете с "какой нибудь" меткой даже "комента" нет (посмотрел)
в учебнике приводится много примеров похожих ошибок выдаваемых GetLastError() , не смотрели ? думаю разработчики все учли .. например ошибка 146 - подсистема торговли занята..будем ждать значит.потом есть еще такая ошибка 6 - нет связи с торговым сервером - тоже ждем и много других ошибок после которых нет смысла покидать пределы цикла без повторных попыток . откройте редактор программ. в навигаторе выберете вкладку словарь и в списке " Стандартные константы " найдете коды ошибок
В том то и дело что это похожие ошибки а не та которая нужна в данной ситуации.
учебник и справочник можно сказать на 95% от "корки до корки"
в учебнике приводится много примеров похожих ошибок выдаваемых GetLastError() , не смотрели ? думаю разработчики все учли .. например ошибка 146 - подсистема торговли занята..будем ждать значит.потом есть еще такая ошибка 6 - нет связи с торговым сервером - тоже ждем и много других ошибок после которых нет смысла покидать пределы цикла без повторных попыток . откройте редактор программ. в навигаторе выберете вкладку словарь и в списке " Стандартные константы " найдете коды ошибок
Серверу до лампочки как сформирован сигнал есть сигнал он его обрабатывает. если запросов сильно много с одного места он ругается "частые запросы" и может банить терминал или IP. это другая тема, где-то на форуме хорошо раскрыта.
..... да а продажа похоже в пролете с "какой нибудь" меткой даже "комента" нет (посмотрел)