Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Статьи помогут закрепить твои знания. Заходи и читай!
Romank
18
Romank 2015.03.17 12:01 

Здравствуйте.

Имеется проблема с открытием сделок советником. Не понимаю почему не открывает. Происходит в хаотическом порядке. Бывает все хорошо откроет, а бывает не открывает. При этом в лог сыпет такие ошибки:


2015.03.17 00:00:00.044 'XXXXX': answer 1.00 EURUSD 0.00000 / 0.00000
2015.03.16 23:59:59.840 'XXXXX': request 1.00 EURUSD
2015.03.16 23:59:59.158 'XXXXX': answer 1.00 EURUSD 0.00000 / 0.00000
2015.03.16 23:59:59.083 'XXXXX': request 1.00 EURUSD
2015.03.16 23:59:58.994 'XXXXX': answer 1.00 EURUSD 0.00000 / 0.00000
2015.03.16 23:59:58.912 'XXXXX': request 1.00 EURUSD
2015.03.16 23:59:58.805 'XXXXX': answer 1.00 EURUSD 0.00000 / 0.00000
2015.03.16 23:59:58.748 'XXXXX': request 1.00 EURUSD


И их очень много... Высыпаются в момент, когда надо открывать сделку. Это я тока мелкий кусок привел. В каком случае вылезают данные ошибки? По какой причине? Может ли мешать как-нибудь функция RefreshRates(); ?

Не знаю уже куда дальше копать, чтобы решить данную проблему, подскажите пожалуйста.

Работаю на реальном аккаунте.

Ihor Herasko
8422
Ihor Herasko 2015.03.17 16:32  

Такие ошибки происходят в одно и то же время суток? Если да, то возможная причина в том, что у некоторых брокеров существует ежедневное "профилактическое время" - сервер не работает.

Ну а для более полного понимания специфики ошибки обрабатывайте код возврата сервера после торговой операции (GetLastError()) и выводите в журнал код ошибки. Можно будет сузить круг возможных причин. 

Romank
18
Romank 2015.03.17 18:17  

Нет, не обязательно. Абсолютно в разное время могут быть данные ошибки.


А GetLastError() выводит ошибку 135. Цены изменились... при том, что RefreshRates(); перед OrderSend(); стоит...


Может ли так быть что RefreshRates(); не срабатывает?

Boris
3881
Boris 2015.03.17 18:43  
RomanK:

Нет, не обязательно. Абсолютно в разное время могут быть данные ошибки.


А GetLastError() выводит ошибку 135. Цены изменились... при том, что RefreshRates(); перед OrderSend(); стоит...


Может ли так быть что RefreshRates(); не срабатывает?

Но ведь спред плавающий! Поставьте слиппаж не менее 40 для 5-знака, может, в этом причина! В 0:00 всегда у них пересменка или что, потому не принимают ничего! А RefreshRates() перед открытием не имеет смысла ставить, т.к. выходит ненужная задержка времени. Ask и Bid всегда свежие! Для повторной попытки после неудачи да, нужно после Sleep(5000)!
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий