Вы не можете заменить заявку XXX. Повторите попытку позже.

Страницы: 1
RSS
Вы не можете заменить заявку XXX. Повторите попытку позже.
 
Часто при MOVE_ORDERS заявки от сервера прилетает такое сообщение. Это происходит, если изменять заявку по номеру, полученному из OnTransReply, не дожидаясь OnOrder.
С чего вдруг я не могу заменить заявку?!! Ведь заявка существует в ТС, я получил номер заявки.
 
Незнайка, Я никогда не делаю MOVE_ORDERS, вообще не пользуюсь ни OnTransReply, ни OnOrder, но несколько раз в неделю прилетает такое сообщение (только не "заменить", а "снять"). При этом заявки прекрасно снимаются вручную. Я тоже не понимаю, "с чего вдруг я не могу снять заявку", но меня это совершенно не беспокоит. А, ну да - я уже писал об этом в сентябре:
Иногда приходят сообщения "Вы не можете снять данную заявку" - убей, не понимаю, почему: сделок по ней не было. А скрипту это дело по барабану: послал KILL_ORDER - и даже не контролирует, исполнилась ли эта команда или нет, считает, что раз он дал приказ, значит будет снята. Заявки у меня все лимитированные, так что пофиг, что там за "движение в котировках". Ну, сработает позже как "левая" заявка - делов-то? Или не сработает - снимется по окончанию сессии. Или я сам сниму, вручную, если окажусь поблизости от компа. Зачем с этим бороться?
 
Незнайка, добрый день,

предлагаем Вам обновить версию терминала до актуальной версии (9.2.2) и проверить, сохранится ли проблема. За обновлением необходимо обратиться к брокеру.
 
Цитата
Daniil Pozdnyakov написал:
обновить версию терминала до актуальной версии (9.2.2)
У меня 9.2.2.11
 
Добрый день,

Дело в том, что, пока не вызовется функция onOrder , транзакция MOVE_ORDERS не сработает.
 
Цитата
Daniil Pozdnyakov написал:
пока не вызовется функция onOrder , транзакция MOVE_ORDERS не сработает
Что за дичь? На каком основании?
 
Добрый день,

пока терминал не получит заявку, транзакция исполнена не будет. Вы получаете ошибку о невозможности заменить заявку, потому что не дожидаетесь onOrder.

OnTransReply, помимо номера заявки, возвращает ещё и поле status, которое может показывать, что, например, транзакция была отвергнута ТС. Подробнее об этом написано в Qlua.chm.

Чтобы решить возникшую проблему, предлагаем добавить логику проверки в скрипт, чтобы поле status было равно "3", что сигнализирует о выполнении транзакции.
 
Цитата
Daniil Pozdnyakov написал:
OnTransReply, помимо номера заявки, возвращает ещё и поле status, которое может показывать, что, например, транзакция была отвергнута ТС.
Цитата
Daniil Pozdnyakov написал:
добавить логику проверки в скрипт, чтобы поле status было равно "3"

Во-первых, проверка поля status давно есть.
Во-вторых, если транзакция была отвергнута ТС, то order_num = 0.

Цитата
Daniil Pozdnyakov написал:
Чтобы решить возникшую проблему
Так это не у меня проблема, а у вас с сервером какая-то шляпа.
Заявка выставлена в торговую систему биржи. Сервер прислал номер заявки в OnTransReply, но утверждает "Вы не можете заменить заявку". С чего вдруг?
 
Добрый день,

Могли бы Вы прислать скрипт, на котором проблема воспроизводится? Также просьба уточнить, данная ошибка появляется постоянно при попытке заменить заявку или какие-то заявки меняются (то есть транзакция срабатывает), а какие-то нет ?
 
Daniil Pozdnyakov, сам скрипт прислать не могу. Но вы можете воспользоваться, например, этим:
Код
local run = true
function OnStop()
  run = false
end

local trans_id, order_num
function OnTransReply(trans_reply)
  if trans_reply.trans_id == trans_id then
    if trans_reply.status == 3 and trans_reply.order_num > 0 then
      order_num = trans_reply.order_num
    end
  end
end

function main()
  trans_id = getUniqTransID()
  local err = sendTransaction{
    TRANS_ID = tostring(trans_id),
    ACTION = "NEW_ORDER",
    ACCOUNT = account,
    CLASSCODE = class_code,
    SECCODE = sec_code,
    OPERATION = "B",
    TYPE = "L",
    PRICE = price,
    QUANTITY = "1"
  }
  if err ~= "" then
    message(err, 3)
    return
  end
  local n = 0
  while run and n < 100 do
    if order_num then
      trans_id = getUniqTransID()
      if sendTransaction{
        TRANS_ID = tostring(trans_id),
        ACTION = "MOVE_ORDERS",
        CLASSCODE = class_code,
        SECCODE = sec_code,
        MODE = "0",
        FIRST_ORDER_NUMBER = tostring(order_num),
        FIRST_ORDER_NEW_PRICE = price,
        FIRST_ORDER_NEW_QUANTITY = "1"
      } == "" then
        order_num = nil
        n = n + 1
      else trans_id = nil end
    end
    sleep(1)
  end
end
Обратите внимание, что статус транзакции и номер заявки, выставленной в торговую систему, проверяются.

Цитата
Daniil Pozdnyakov написал:
данная ошибка появляется постоянно при попытке заменить заявку или какие-то заявки меняются (то есть транзакция срабатывает), а какие-то нет ?
Наверное, второе.
Страницы: 1
Читают тему (гостей: 1)
Наверх