Почему при открытии нового ордера возникает ошибка 1?

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

Записи в журнале MetaTrader:
2012.10.15 13:40:37 '...': login
2012.10.15 13:40:35 '...': login
2012.10.15 13:23:22 '...': previous successful authorization performed from 66.96.201.143
2012.10.15 13:23:22 '...': login
2012.10.15 13:23:20 '...': order was opened : ... sell 0.35 USDCAD at 0.97998 ...
2012.10.15 13:23:20 '...': request in process
2012.10.15 13:23:20 '...': login
2012.10.15 13:23:20 '...': request was accepted by server
2012.10.15 13:23:20 '...': instant order sell 0.35 USDCAD at 0.97998 ...
2012.10.15 13:23:17 Expert stdlib USDCAD,H1: loaded successfully
2012.10.15 13:23:16 '...': instant order sell 0.38 USDCAD at 0.97999 ...
2012.10.15 13:23:16 '...': previous successful authorization performed from 66.96.201.143
2012.10.15 13:23:15 '...': login
2012.10.15 13:23:12 '...': login

В журнале запись об открытии первого ордера (на 0.38 лота) не появилась, но открыт он был.

Советник записал в логе советников об ошибке 1 в 13:23:17 - для чего подгружался stdlib.

Подскажите, пожалуйста, почему могла возникнуть ошибка 1?

Огромное спасибо!
 
А вкладка эксперты?
 
DVS75:
При открытии ордера советник записал ошибку 1, при этом ордер открылся дважды.


В журнале запись об открытии первого ордера (на 0.38 лота) не появилась, но открыт он был.

Советник записал в логе советников об ошибке 1 в 13:23:17 - для чего подгружался stdlib.

Подскажите, пожалуйста, почему могла возникнуть ошибка 1?

Огромное спасибо!
Вы привели лот терминала, а ответ может скрываться в логе советника - terminal\experts\logs\ или вкладка "Эксперты".
 
TarasBY:
... логе советника - terminal\experts\logs\ или вкладка "Эксперты".

За этот час всего три записи:

2012.10.15 13:23:20 PipJet USDCAD,H1: open #327451984 sell 0.35 USDCAD at 0.97998 sl: 0.98643 tp: 0.97898 ok
2012.10.15 13:23:17 PipJet USDCAD,H1: Sell operation failed - error(1): no error attempts: 1
2012.10.15 13:23:17 stdlib USDCAD,H1: loaded successfully
 
Размер лота рассчитывается в зависимости от equity, поэтому у дубля лот другой.
 

Я правильно понимаю, что в случае возникновения ошибки с кодом 1 функция OrderSend() возвращает значение "-1"?

То есть, при таком коде:

int ticket=OrderSend(...

переменная ticket будет тогда равна "-1", а GetLastError() вернёт "1".

 
Ф:

Я правильно понимаю, что в случае возникновения ошибки с кодом 1 функция OrderSend() возвращает значение "-1"?

То есть, при таком коде:

переменная ticket будет тогда равна "-1", а GetLastError() вернёт "1".


GetLastError() вернет код ошибки. Если код ошибки у Вас "1" (ERR_NO_RESULT) значит OrderModify() пытается изменить уже установленные значения такими же значениями. Необходимо изменить одно или несколько значений и повторить попытку.

А вообще то OrderSend() не может вернуть ошибку с кодом "1", только OrderModify().

 
Кстати 2012.10.15 13:23:17 PipJet USDCAD,H1: Sell operation failed - error(1): no error attempts: 1 Выдает Ваш советник, и не факт что "1" он берет от GetLastError(). Надо смотреть код советника.
 

Файл защищён от декомпиляции (protected).

Я думаю, что PipJet пытался изменить уровни другого открытого им ордера (такой был).

Что неясно, так это почему при отсутствии обрыва связи (соответсвующей записи в журнале нет) не появляются обычные подтверждения сервера брокера

("request was accepted by server
request in process

order was opened ..."),

а сразу идёт запрос на открытие нового ордера:

2012.10.15 13:23:20 '...': instant order sell 0.35 USDCAD at 0.97998 ...
2012.10.15 13:23:17 Expert stdlib USDCAD,H1: loaded successfully
2012.10.15 13:23:16 '...': instant order sell 0.38 USDCAD at 0.97999 ...

stdlib подгрузился, чтобы выдать описание ошибки (слова "no error"), то есть OrderSend() вернул код "-1".

 

Есть код версии 1.00 (ошибку выдал 1.02), прикрепил.

Выдержки:

Декомпил удален - на первый раз предупреждение
 
DVS75:

Есть код версии 1.00 (ошибку выдал 1.02), прикрепил.

Выдержки:

Это декомпил - удаляйте, пока не поздно