Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Mikhail Kozhemyako
1246
Mikhail Kozhemyako 2012.10.17 14:01  
DVS75:

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

Выдержки:


Трудно разбираться в декомпилированном коде...

Но смущает вот эта часть:

      case 0/* NO_ERROR */:
         if (!ai_44) ai_44 = TRUE;
         else li_84 = TRUE;
         break;

Получается, что если OrderSend() отработал без ошибок, но при этом если переменная ai_44 была FALSE, все равно будет еще одна попытка открыть еще один ордер. Что такое ai_44 я так и не понял.

DVS75
60
DVS75 2012.10.17 18:52  
Sepulca:


Трудно разбираться в декомпилированном коде...

Но смущает вот эта часть:

Получается, что если OrderSend() отработал без ошибок, но при этом если переменная ai_44 была FALSE, все равно будет еще одна попытка открыть еще один ордер. Что такое ai_44 я так и не понял.

Нет, ticket_64 изначально устанавливается равной "-1"
int ticket_64 = -1;
а в случае открытия ордера или обнуления ticket_64 (чтобы это могло сделать?) петля while рвётся:
ticket_64 = OrderSend(...
if (ticket_64 >= 0)
{
 gd_344 += a_lots_4;
 break;
}
То есть, ещё возможно, при исполнении была пропущена функция OrderSend() (через неё перескочило сразу к следующей - печати результата). В каких случаях такое может быть?


О коде: версия 1.00 была тестовой (бета) и не защищалась.

Mikhail Kozhemyako
1246
Mikhail Kozhemyako 2012.10.18 06:46  
DVS75:
Нет, ticket_64 изначально устанавливается равной "-1" а в случае открытия ордера или обнуления ticket_64 (чтобы это могло сделать?) петля while рвётся:


О коде: версия 1.00 была тестовой (бета) и не защищалась.


Как еще нас терпят модераторы? Разбираем декомпил. Пока живы чисто технический вопрос. Может ли OrderSend(....) запущенный два раза подряд с одними и теме же параметрами, через GetLastError() выдать ошибку 1 (ERR_NO_RESULT), или эта ошибка может возникнуть только после OrderModify(...) ?
Victor Nikolaev
Модератор
14644
Victor Nikolaev 2012.10.18 17:59  
Надеюсь обсуждение уже закончилось
DVS75
60
DVS75 2012.10.18 21:12  
Вопрос не в коде, непонятно, почему при постоянном соединении сервер не подтвердил открытие ордера на 0.38 лота обычными:

request was accepted by server
request in process
order was opened ...

Лог:
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 ...

При разрыве соединения терминал обычно пишет "ping failed" или "login".

Или это терминал ошибся?

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий