Ошибка выставления ордера

Страницы: 1
RSS
Ошибка выставления ордера
 
Добрый день, господа разработчики!
После обновления Квик до версии 11.3.1.2
Появилась ошибка (пранзакция посылается через trans2quik.dll)

24.07.2024 10:01:03.912 --> SetEnterOrder: Ордер CMM5 отправлен.
24.07.2024 10:01:03.912 --> Ошибка:  Указанная транзакция по указанному классу не найдена: "SPBFUT".
 
Михаил Филимонов, добрый день.

Требуется более развернутая информация для изучения проблемы. Какая транзакция посылается, с какими параметрами. Т.е. ожидаем от Вас саму транзакцию, по которой получаете ошибку.
 
Цитата
Andrey Golik написал:
Михаил Филимонов, добрый день.

Требуется более развернутая информация для изучения проблемы. Какая транзакция посылается, с какими параметрами. Т.е. ожидаем от Вас саму транзакцию, по которой получаете ошибку
Добрый день!
Транзакции посылает робот.
Пораметры такие

procedure TExpert.SendOrder;
var
 outStr, id, s: string;
 res: long;
 ErrCode: long;
 ErrSize: Dword;
 ErrStr: LPSTR;
begin
 if(CheckFutPrice(f_price) = false) then
 begin
   Mutex.Lock;
   try
     FTransBusy:= false;
   finally
     Mutex.Unlock;
   end;
     FmemoStr:= 'SendOrder: Не правильная цена в заявке ' + FloatTostr(f_price);
     Synchronize(UpdMemo);
   exit;
 end;
 FOrder:= 0;
 FTransID:= GetTransID();
 id:= UintToStr(TransID);
 ErrCode:= 0;
 ErrSize:= 0;
 ErrStr:= nil;
 Mutex.Lock;
 try
   FTransBusy:= true;
 finally
   Mutex.Unlock;
 end;

 case dir of
   BUY: s:= 'B';
   SELL: s:= 'S';
 end;
 outStr:= 'ACCOUNT=' + FutAccaunt + '; TYPE=L; TRANS_ID=' + id +
          '; CLASSCODE=' + ExpData.FutData.ClassCode + '; SECCODE=' +
          ExpData.FutData.SecCode + '; ACTION=NEW_ORDER; OPERATION=' + s +
          '; EXECUTION_CONDITION=KILL_BALANCE' + '; PRICE=' + FloatToStr(f_price) +
          '; QUANTITY=' + FloatToStr(Qnty) + ';';
 res:= T2QSendASyncTrans(LPSTR(AnsiString(outStr)), ErrCode, ErrStr, ErrSize);
 if(res <> TRANS2QUIK_SUCCESS) then
 begin
   Mutex.Lock;
   try
     FTransID:= 0;
     FTransBusy:= false;
   finally
     Mutex.Unlock;
   end;
   FmemoStr:= 'SendOrder: Ордер ' + ExpData.FutData.SecCode + ' не отправлен.';
   Synchronize(UpdMemo);
 end else
 begin
   if((ExitOrder.Order > 0) and (dir = BUY)) then RemoveExitOrder();
   FmemoStr:= 'SendOrder: Ордер ' + ExpData.FutData.SecCode + ' отправлен.';
   Synchronize(UpdMemo);
 end;
end;

Код не менялся последние 3 года, при этом все работает, но в какой-то момент
"вылезает ошибка"
24.07.2024 22:56:38.595 --> SetEnterOrder: Ордер CMH5 отправлен.
24.07.2024 22:56:38.788 --> Ордер CMH5 активен.
24.07.2024 22:58:03.051 --> RemEnterOrder: Ордер CMH5 отправлен.
24.07.2024 22:58:03.121 --> Ордер CMH5 активен.
24.07.2024 22:58:03.124 --> Ордер CMH5 снят.
24.07.2024 22:58:03.422 --> SetEnterOrder: Ордер CMH5 отправлен.
24.07.2024 22:58:03.636 --> Ордер CMH5 активен.
24.07.2024 22:58:04.637 --> RemEnterOrder: Ордер CMH5 отправлен.
24.07.2024 22:58:04.690 --> Ордер CMH5 активен.
24.07.2024 22:58:04.762 --> Ордер CMH5 снят.
24.07.2024 22:58:05.459 --> SetEnterOrder: Ордер CMH5 отправлен.
24.07.2024 22:58:05.623 --> Ордер CMH5 активен.
24.07.2024 22:59:40.786 --> RemEnterOrder: Ордер CMH5 отправлен.
24.07.2024 22:59:40.899 --> Ордер CMH5 активен.
24.07.2024 22:59:40.904 --> Ордер CMH5 снят.
24.07.2024 22:59:42.773 --> SetEnterOrder: Ордер CMH5 отправлен.
24.07.2024 22:59:42.915 --> Ордер CMH5 активен.
24.07.2024 23:01:01.164 --> RemEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:01:01.246 --> Ордер CMH5 активен.
24.07.2024 23:01:01.284 --> Ордер CMH5 снят.
24.07.2024 23:10:37.043 --> SetEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:10:37.121 --> Ордер CMH5 активен.
24.07.2024 23:10:38.512 --> RemEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:10:38.621 --> Ордер CMH5 активен.
24.07.2024 23:10:38.637 --> Ордер CMH5 снят.
24.07.2024 23:10:52.165 --> SetEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:10:52.337 --> Ордер CMH5 активен.
24.07.2024 23:11:22.658 --> RemEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:11:22.783 --> Ордер CMH5 активен.
24.07.2024 23:11:22.783 --> Ордер CMH5 снят.
24.07.2024 23:11:22.986 --> SetEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:11:23.204 --> Ордер CMH5 активен.
24.07.2024 23:12:02.133 --> RemEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:12:02.211 --> Ордер CMH5 активен.
24.07.2024 23:12:02.258 --> Ордер CMH5 снят.
24.07.2024 23:12:02.570 --> SetEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:12:02.804 --> Ордер CMH5 активен.
24.07.2024 23:13:27.394 --> RemEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:13:27.456 --> Ордер CMH5 активен.
24.07.2024 23:13:27.581 --> Ордер CMH5 снят.
24.07.2024 23:13:27.940 --> SetEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:13:28.190 --> Ордер CMH5 активен.
24.07.2024 23:13:30.893 --> RemEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:13:31.018 --> Ордер CMH5 активен.
24.07.2024 23:13:31.033 --> Ордер CMH5 снят.
24.07.2024 23:15:02.263 --> SetEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:15:02.510 --> Ордер CMH5 активен.
24.07.2024 23:35:25.642 --> RemEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:35:25.781 --> Ордер CMH5 активен.
24.07.2024 23:35:25.863 --> Ордер CMH5 снят.
24.07.2024 23:44:31.012 --> SetEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:44:31.324 --> Ордер CMH5 активен.
24.07.2024 23:44:31.512 --> RemEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:44:31.637 --> Ордер CMH5 активен.
24.07.2024 23:44:31.637 --> RemEnterOrder: Ордер CMH5 отправлен.
24.07.2024 23:44:31.637 --> Ордер CMH5 снят.
25.07.2024 10:00:18.501 --> SetEnterOrder: Ордер CMH5 отправлен.
25.07.2024 10:00:18.501 --> Ошибка:  Указанная транзакция по указанному классу не найдена: "SPBFUT".

Ошибка стала появлятся после обновления Квик
 
Да, забыл сказать.
Ошибка проявляется в начале торгов после 10-00
 
посмотрите на время:
25.07.2024 10:00:18.501 --> SetEnterOrder: Ордер CMH5 отправлен.
25.07.2024 10:00:18.501 --> Ошибка:  Указанная транзакция по указанному классу не найдена: "SPBFUT".
--------------------
там где ошибки нет, время различается.
--------------
Предположу, что  еще не прошла регистрация транзакции  и что-то ее не нашло.  
 
Цитата
nikolz написал:
там где ошибки нет, время различается.
Конечно различается, ордер "слетал" на Биржу и вернулся ответ.

А где ошибка, то все происходит на локальном компе, так что время не показатель.

Обидно то, что 3 с лишнем года все работало как часы, а вот теперь появилась проблема.
Не знаю как устроен внутри Квик, но с МТ-5 постоянно "цапался" с разработчиками, как новый билд,
так вылезает какая-либо ошибка.  
 
Да, и еще погрешность фунции засечки времени, кажется 16 мс., да и саму
ошибку       Указанная транзакция по указанному классу не найдена: "SPBFUT".
выдает ДЛЛ или терминал, это не мое.
 
Цитата
Михаил Филимонов написал:
   FmemoStr:= 'SendOrder: Ордер ' + ExpData.FutData.SecCode + ' отправлен.';
А в логе SetEnterOrder. Это другой код.
 
Цитата
Михаил Филимонов написал:
Да, и еще погрешность фунции засечки времени, кажется 16 мс., да и саму
ошибку       Указанная транзакция по указанному классу не найдена: "SPBFUT".
выдает ДЛЛ или терминал, это не мое.
Цитата
Михаил Филимонов написал:
Конечно различается, ордер "слетал" на Биржу и вернулся ответ.

А где ошибка, то все происходит на локальном компе, так что время не показатель.

Обидно то, что 3 с лишнем года все работало как часы, а вот теперь появилась проблема.
Не знаю как устроен внутри Квик, но с МТ-5 постоянно "цапался" с разработчиками, как новый билд,
так вылезает какая-либо ошибка.  
Так как у Вас время при возникновении ошибки не отличается, то это говорит о том, что заявка никуда не летала.
Это возможно, если ошибка в параметрах заявки. Т е ошибку обнаружил сам терминал.
надо вывести в лог файл содержимое самой заявки. Возможно оно искажается либо там nil.
 
Цитата
nikolz написал:
г файл содержимое самой заявки. Возможно оно искажается либо там nil.
Ок, выведу, но до обновления 3 года ошибок не было...
 
Здравствуйте, Михаил Филимонов.

Рекомендуем проверить статусы инструментов по классу SPBFUT в момент создания транзакции.
В таблицу текущих торгов добавьте параметры "Состояние сессии", "Статус торговли инструментом".
Если "Сессия" в состоянии "Закрыта" и/или "Статус торговли инструментом" будет "Не торгуется", то транзакция не выполняется по этой причине.
 
Цитата
Karina Dmitrieva написал:
Здравствуйте, Михаил Филимонов.

Рекомендуем проверить статусы инструментов по классу SPBFUT в момент создания транзакции.
В таблицу текущих торгов добавьте параметры "Состояние сессии", "Статус торговли инструментом".
Если "Сессия" в состоянии "Закрыта" и/или "Статус торговли инструментом" будет "Не торгуется", то транзакция не выполняется по этой причине.
Добрый день!

Ищите ошибку на своей стороне, робот написан  3 года назад со всеми проверками
и прекрасно работал ДО ОБНОВЛЕНИЯ.

procedure TExpert.OnTick;
var
 PosSt: POS_STATE;
 PosEQ: integer;
 RemOrder: boolean;
 inVol, outVol, aZalog: Double;
begin
 if(StopTrading = false) then //false - expert work
 begin
   if((Settings.isSet = true) and (DllConn = true) and (QConn = true) and (WrongData.Res = false)) then
   begin
    if(CheckTime(RemOrder) = true) then
     begin
       if((ExpData.FutData.Session = 'открыта') and (ExpData.SpotData.Session ='открыта')) then
       begin
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
 
Михаил Филимонов, в момент возникновения ошибки при отправки транзакции роботом попробуйте ввести такую же транзакцию самостоятельно через терминал (окно со списком транзакций можно открыть с помощью горячих клавиш "Ctrl+T") и сообщите результат.
Страницы: 1
Читают тему
Наверх