Товарищи программеры, подскажите в чём может быть проблема. Делается попытка закрыть ордер ниже приведённым скриптом, но если цена движется достаточно быстро, а на fx4u время открытия/закрытия сделок примерно 2-4сек., то вместо ошибки "реквот" скрипт просто зависает ровно на 3 (!!!) минуты, после чего выкидывает ошибку.
Даже если во время зависа ордер закрыть вручную, то всё равно 3 минуты зависания скрипта, и удалить его из окна тоже не удаётся.
RefreshRates(); double cur_bid=MarketInfo(Symbol(),MODE_BID); Это нужно делать перед close_result=OrderClose(Orders[t],OrderLots(),cur_bid,3,CLR_NONE);
так, а можно полностью код скрипта ?
А зачем полностью, это большой зацикленный скрипт, я привёл функцию закрытия. Если подозрение на использованную ф-цию Messages(), то без неё та же проблема.
Уточню - это происходит только когда на рынке быстрое движение, и то не всегда.
Дело в том, что когда котировка быстро уходит в минус для открытого ордера с момента посылки команды OrderClose(), то и происходит зависание, если быстро в плюс, то ордер закрывается по цене на момент посылки команды (например, у ордера +10п., срабатывает OrderClose(), за время обработки команды сервером (2-4с.) котировка поднялась до +13п., но закрывается ордер +10п., если же котировка опустилась до +7п. на ордере, то тут три варианта - либо Реквот, либо закрывается +7п., либо зависание ровно на 3мин. после чего приходит Реквот. Похоже что где то в конфиге терминала есть настройка какого-то таймаута (3мин), вот найти бы её.
Товарищи программеры, подскажите в чём может быть проблема. Делается попытка закрыть ордер ниже приведённым скриптом, но если цена движется достаточно быстро, а на fx4u время открытия/закрытия сделок примерно 2-4сек., то вместо ошибки "реквот" скрипт просто зависает ровно на 3 (!!!) минуты, после чего выкидывает ошибку.
Даже если во время зависа ордер закрыть вручную, то всё равно 3 минуты зависания скрипта, и удалить его из окна тоже не удаётся.
А Вы что хотите и где проблема?
Вы с помощью скрипта отправляете брокеру приказ. Брокер соответственно этот приказ обрабатывает (скажем 3 минуты в Вашем случае). Скрипт покорно ждёт ответа от брокера.
Меняйте брокера...
А Вы что хотите и где проблема?
Вы с помощью скрипта отправляете брокеру приказ. Брокер соответственно этот приказ обрабатывает (скажем 3 минуты в Вашем случае). Скрипт покорно ждёт ответа от брокера.
Меняйте брокера...
Дык вроде известный брокер (forex4you), странно что у него такие проблемы.
А вот на счёт таймаута в 3мин., похоже это терминал прекращает торговый сеанс с сервером не получив ответа, никто не знает где эта настройка хранится? Или может у кого есть дешифратор/декомпилятор настроечных файлов МТ4 ))
Дык вроде известный брокер (forex4you), странно что у него такие проблемы.
А вот на счёт таймаута в 3мин., похоже это терминал прекращает торговый сеанс с сервером не получив ответа, никто не знает где эта настройка хранится? Или может у кого есть дешифратор/декомпилятор настроечных файлов МТ4 ))
Не говорите ерунды... Кухня - она и в Африке кухня...
Вы видели, с какой скоростью исполняются ордера на биржах? Вы что думаете, что там стоят более мощные сервера, чем в forex4you? или канал интернета шире?
Ответ очевиден - кухня не позволит Вам пипсовать....
Не говорите ерунды... Кухня - она и в Африке кухня...
Вы видели, с какой скоростью исполняются ордера на биржах? Вы что думаете, что там стоят более мощные сервера, чем в forex4you? или канал интернета шире?
Ответ очевиден - кухня не позволит Вам пипсовать....
С Вами согласен, но обычно на демо-счёте всё-же пипсовка удаётся, а на реале уже нет, но я не о пипсовке речь веду. Задержка в 3мин. и получение Оффквота - это не защита от попсовщиков, это какието глюки. Имхо.
С Вами согласен, но обычно на демо-счёте всё-же пипсовка удаётся, а на реале уже нет, но я не о пипсовке речь веду. Задержка в 3мин. и получение Оффквота - это не защита от попсовщиков, это какието глюки. Имхо.
Телепаты уволены! Ключевая фраза: "А зачем полностью, это большой зацикленный скрипт, я привёл функцию закрытия."
Всё равно не понимаю надобности в целом скрипте, в нём больше 1200 строк кода, вот эта функция изменённая в отдельный скрипт, можно запускать вручную, проблема остаётся, но здесь не в скрипте похоже проблема, а в настройках терминала. Опять же имхо.
P.S. В большом скрипте зациклено всего пять строк - отслеживание нажатия клавиш, дальше всё управление передаётся различным ф-циям.
int GLErr=0, ticket, index=0; int Orders[10]; bool close_result; RefreshRates(); double cur_bid=MarketInfo(Symbol(),MODE_BID); double cur_ask=MarketInfo(Symbol(),MODE_ASK); double cur_point=MarketInfo(Symbol(),MODE_POINT); for(int j=0; j<OrdersTotal(); j++) { OrderSelect(j, SELECT_BY_POS); if(OrderMagicNumber() == magic) { Orders[index]=OrderTicket(); index++; } } for(int t=0; t<index; t++) { OrderSelect(Orders[t],SELECT_BY_TICKET); Alert("Попытка закрыть ордер №"+OrderTicket()+" с профитом: "+DoubleToStr(OrderProfit(),2)); if(OrderType() == OP_BUY) close_result=OrderClose(Orders[t],OrderLots(),cur_bid,3,CLR_NONE); if(OrderType() == OP_SELL) close_result=OrderClose(Orders[t],OrderLots(),cur_ask,3,CLR_NONE); if(close_result == false) { GLErr=GetLastError(); Alert("Закрытие ордера №"+OrderTicket()+" по "+Symbol()+", ошибка - "+GLErr); if(snd==true)PlaySound("s_error.wav"); } else { OrderSelect(OrderTicket(),SELECT_BY_TICKET); Alert("Ордер №"+OrderTicket()+" закрыт успешно!!! Профит: "+DoubleToStr(OrderProfit(),2)); if(snd==true)PlaySound("s_close.wav"); } } return(0);
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Даже если во время зависа ордер закрыть вручную, то всё равно 3 минуты зависания скрипта, и удалить его из окна тоже не удаётся.