OnTransReply - что я делаю не так?

Страницы: 1
RSS
OnTransReply - что я делаю не так?
 
Здравствуйте,

никак не могу разобраться с этой функцией.
Есть такая молотилка, которая транзакции шлет, но OnTransReply не срабатывает...
Код
local LastStatus    = nil
local trans_id=1

local stopped = false
function OnStop()
   stopped = true
   return 2000
end

function main()

 while stopped == false do

 trans_id=trans_id+1
local OrderSell = {
                     ["ACTION"]="NEW_ORDER",
                     ["ACCOUNT"]= "SPBFUT0000",
                  ["OPERATION"] = "B",
                     ["CLASSCODE"]="SPBFUT",
                            ["SECCODE"] = "SRU0",
                            ["PRICE"] = "0",
                     ["QUANTITY"] = tostring(1),
                     ["TRANS_ID"] = tostring(trans_id),
                     ["TYPE"] = "M",
                     }
         local result = sendTransaction(OrderSell)

   sleep(1000)
   end
  end


function OnTransReply(trans_reply)
   if trans_reply.trans_id == trans_id then
      if trans_reply.status == LastStatus then return else LastStatus = trans_reply.status end
           if       trans_reply.status == 0    then message('OnTransReply(): Транзакция отправлена серверу')
            elseif   trans_reply.status == 1    then message('OnTransReply(): Транзакция получена на сервер QUIK от клиента')
            elseif   trans_reply.status == 2    then message('OnTransReply(): Ошибка')
            elseif   trans_reply.status == 3    then message('OnTransReply(): ТРАНЗАКЦИЯ ВЫПОЛНЕНА')
         end
   end
end
 
В момент когда приходит колбек, номер транзакции уже другой. Вы не знаете когда придет ответ от транзакции, может минут 5 и более приходить.
 
Nikolay, и как можно исправить?
 
Если есть поток транзакций, то надо сохранить "ключи транзакций" и по приходу ответа уже что-то делать.
Можете организовать некую таблицу с ключами равными номерам транзакций, а в колбеке проверять, что такой ключ есть и выполнять какие-то действия.

Правда Вам стоит сразу задуматься и о некой уникальности ключа транзакции. Сейчас Вы просто смотрите на номер транзакции. Но если Вы запустите два скрипта одновременно, то гарантий уникальности уже не будет. Стоит проверять не только номер, но и инструмент. Плюс при отправке транзакции можно добавить некий комментарий, а в колбеке фильтровать по нему же, чтобы получить свой колбек, а не соседнего скрипта.
Страницы: 1
Читают тему
Наверх