Ошибки, баги, вопросы - страница 2107

 
Andrey Khatimlianskii:

Теоретически, тайм-аут может случиться во время потери связи с сервером брокера.

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

Как не попасть в такую ситуацию, не анализируя код возврата?

Отправили OrderSend и не дождались ответа от сервера, получив таймаут в логе и _LastError. При этом игнорим _LastError, а получаем только false.

После, если коннект имеется, собираем заново торговое окружение и принимаем решение.

Выделенное, конечно, желательно всегда проверить перед сбором инфы.

 
fxsaber:

Отправили OrderSend и не дождались ответа от сервера, получив таймаут в логе и _LastError. При этом игнорим _LastError, а получаем только false.

После, если коннект имеется, собираем заново торговое окружение и принимаем решение.

Выделенное, конечно, желательно всегда проверить перед сбором инфы.

Это получится, если работаем в OnTick. А если нет?

Как проверить коннект?

 
Andrey Khatimlianskii:

Это получится, если работаем в OnTick. А если нет?

Как проверить коннект?

TerminalInfoInteger(TERMINAL_CONNECTED);
 
fxsaber:
TerminalInfoInteger(TERMINAL_CONNECTED);

Исторически сложилось, что не доверяю ему. Надо будет потестировать в 5-ке..

 

проблема таймаута не в том, что нет коннекта, а в том, что получен таймаут запроса. 

с одной стороны вижу так: есть сигнал на открытие сделки, делаем запрос, получили таймаут - но сделка открыта. 

хотя советник получил ошибку. 

проверяем торговое окружение - видим открытую сделку. 

но как понять что эта сделка была открыта именно по этому сигналу? если сигналов было например 10? 

т.е. проверять не появилась ли новая сделка в истории(в терминале). и присваивать этой сделке статус сигнала. 


пока не могу уловить мысль 

@A100 

какой выход видите вы? 

 
fxsaber:

Получается, что повторный инклуд игнорируется. Но в данной сиуации это неправильно!

Нужна такая конструкция для следующего. Советник содержится в mqh-файле. Но мне нужно иметь возможно его запустить и на реале (первый инклуд) и в своем тестере (второй инклуд).

Все верно и он правильно игнорируется.

Сишные хаки не проходят.

 

int h = FileOpen("test.bin",FILE_WRITE|FILE_BIN); -хендл возвращает, файла в мт нет

int h = FileOpen("test.bin",FILE_WRITE|FILE_BIN|FILE_COMMON); - файл есть.

что не так написал

 
Anton Ohmat:

int h = FileOpen("test.bin",FILE_WRITE|FILE_BIN); -хендл возвращает, файла в мт нет

int h = FileOpen("test.bin",FILE_WRITE|FILE_BIN|FILE_COMMON); - файл есть.

что не так написал

Где правильно надо искать файл? Видимо там где запускалась проверка работоспособности кода.
 
та не - файл должен быть в mql5/files
 
Renat Fatkhullin:

Все верно и он правильно игнорируется.

Сишные хаки не проходят.

Не знал, что это хак. Много ума не нужно, чтобы придумать его применение.

Как запустить советник в виртуальном окружении своего тестера, при этом оставив его рабочим на реале?

Как и многим, нужно иметь возможность сравнивать текущее торговое окружение с тестерным. Как это сделать?

Это самая стандартная задача, а решения не получить нормального