Ошибка "Вы не можете снять эту заявку"

Страницы: 1
RSS
Ошибка "Вы не можете снять эту заявку"
 
Здравствуйте, не пойму в чем дело обстоит.

Заполняю поля:
CLASSCODE
SECCODE
ACTION = "KILL_ORDER"
ORDER_KEY = order_num
TRANS_ID

В итоге получаю описанную выше ошибку. подскажите какие поля я не верно заполняю ? Стараюсь снять заявку на акциях.
 
Не знаю имеет ли это значение, но ордер который я намереваюсь удалить. был выставлен вручную.
 
И еще поправка более верно ошибка звучит так: "Вы не можете снять ДАННУЮ заявку"

PS
Сделайте как нибудь на досуге возможность редактирования тем и сообщений на форуме.
 
Добрый день.

С подобной проблемой уже на форуме обращались. Например здесь можно найти решение: https://forum.quik.ru/messages/forum10/message29727/topic3470/#message29727

Также проверьте, что статус у заявки активен, а не исполнен.
 
Цитата
Egor Zaytsev написал:
С подобной проблемой уже на форуме обращались. Например здесь можно найти решение: https://forum.quik.ru/messages/forum10/message29727/topic3470/#message29727
Благодарю за ответ, однако мне это не поможет. Заявка точно активна и ORDER_KEY точно передается как string .
 
Возможно есть еще какие нибудь варианты ?
 
Цитата
Андрей написал:
Возможно есть еще какие нибудь варианты ?
В ручном режиме снять заявку удается?
Выложите полный скрипт.
 
Цитата
Egor Zaytsev написал:
В ручном режиме снять заявку удается?
Выложите полный скрипт.
Да в ручную удается. Снятие ордера делаю из dll через написанную (и протестированную) мною обертку. для sendTransaction.
Описание обертки тут: https://quikluacsharp.ru/stati-uchastnikov/otsylka-tranzaktsij-iz-s-bez-ispolzovaniya-lua-koda/

Функция удаляющая ордера:
Код
double count_time_diff(std::chrono::time_point<std::chrono::system_clock> t)
{
   auto end = std::chrono::system_clock::now();
   std::chrono::duration<double> elapsed_seconds = end - t;

   return elapsed_seconds.count();
}

bool deleteOrder(Symb_data params, int order_num, bool is_stopOrder, lua_State *L)
{
   lua_settop(L, 0);

   bool ans = false;

   Ttransaction T(L, params);

   int trans_id = T.trans_id();
   T.classcode();
   T.seccode();

   if (is_stopOrder)
   {
      T.action(order_Action::KILL_STOP_ORDER);
      T.stop_order_key(order_num);
   }
   else
   {
      T.action(order_Action::KILL_ORDER);
      T.order_key(order_num);
   }

   std::string res = sendTransaction(T);

   if (res.compare("") == 0)
   {
      ans = true;
      auto doLoop = [&]()
      {
         bool ans = false;
         std::vector<OrderData> orders;
         if (get_Orders_Info(orders, params))
         {
            for (size_t i = 0; i < orders.size(); i++)
            {
               if (orders[i].trans_ID == trans_id)
               {
                  ans = true;
                  break;
               }
            }
         }
         return ans;
      };
      auto start = std::chrono::system_clock::now();
      while (count_time_diff(start) <= 30 && doLoop())
      {
         Sleep(1);
      }
      if (doLoop())
         ans = false;
   }
   else
   {
      res = "Ошибка удаления ордера:\n " + res;
      msg_ToQuik(L, res, 3);
   }

   return ans;
}

Да, хоть я и пишу на С++, но все работает. Данная функция справляется со своими задачами на фьючерсах, а вот лимитку на акциях удалить не получается...
 
Код
struct Symb_data
{
   std::string class_code;
   std::string sec_code;
   std::string account;
   TF timeFrame; // Текущий таймфрейм
};
 
Кстати говоря, написал вам тут как делаю, после сам интереса рази пересобрал все быстро в Луа - и понял что поспешил позоже. (луа скрипт сработал в отличии от моего), придется свое творение дебагить получше
 
Да, моя ошибка. не верный номер ордера передаю.
 
Egor Zaytsev, Прозьба просмотреть и дать ответ на мой вопрос вот из этой темы:
https://forum.quik.ru/messages/forum10/message30215/topic3542/?result=reply#message30215

Похоже все таки какая то ошибка происходит во время стыковки с квиком, так как для фьючерсов описанный мною способ работает верно, а вот для акций - возвращает не верное значение запрашиваемого параметра.
 
Добрый день.

Андрей, как видим, Вам уже дали ответ по ссылке:
https://forum.quik.ru/messages/forum10/message30215/topic3542/?result=reply#message30215
Проверьте рекомендации.
Страницы: 1
Читают тему
Наверх