Как написать самый простой код, по проверке работы функции OnTransReply()?

Страницы: 1
RSS
Как написать самый простой код, по проверке работы функции OnTransReply()?, Код.
 
Написал такой код для рыночной заявки на покупку акции
Код
local sins="MSST";
local a=0;
function main()
while 1 do
   local Transaction={
      ['TRANS_ID']   = "12345",
      ['ACTION']     = 'NEW_ORDER',
      ['CLASSCODE']  = 'TQBR',
      ['SECCODE']    = sins,
      ['OPERATION']  = 'S',
      ['TYPE']       = 'M', 
      ['QUANTITY']   = '1', 
      ['ACCOUNT']    = 'L01-00000F00',
      ['PRICE']      = '0',
      ['COMMENT']    = 'Первая сделка'
            }
        -- Отправляет транзакцию
        if a==0 then
      sendTransaction(Transaction);
      end
      sleep(1000)
      

            function OnTransReply(order)
                local trans_id = order.trans_id ;
                  local status =order.status;
                  message("Статус  " ..tostring(status));
                  sleep(1000)
            end
            message("все готово " ..a);
            a=a+1;
   end                        
end
Но почему то он никак не хочет работать, сообщение нe выдает о статусе транзакции и в отладчике декода тоже себя не проявляет, что сработала эта функция, может я не правильно ее написал, я просто хочу на самом простом приvере проверить ее работу, что бы потом вживлять в миниробота, но пока безрезультатно. А сама транзакция проходит, в таблице сделок появляется новая сделка с моим ID. В чем ошибка в коде?
человек (не робот)
 
Странно, но не одна функция не работает по обратному вызову после транзакции. Что не так в коде?
Код
local sins="MSST";
local a=0;
function main()
      while 1 do
         local Transaction={
            ['TRANS_ID']   = "12345",
            ['ACTION']     = 'NEW_ORDER',
            ['CLASSCODE']  = 'TQBR',
            ['SECCODE']    = sins,
            ['OPERATION']  = 'S',
            ['TYPE']       = 'M', 
            ['QUANTITY']   = '1', 
            ['ACCOUNT']    = 'L01-00000F00',
            ['PRICE']      = '0',
            ['COMMENT']    = 'Первая сделка'
                  }
              -- Отправляет транзакцию
              if a==0 then
            sendTransaction(Transaction);
            end
            sleep(1000)
            

                  function OnTransReply(order)
                      local trans_id = order.trans_id ;
                        local status =order.status;
                        message("Статус  " ..tostring(status));
                        sleep(1000)
                        a=a+"a";
                  end
                  ------------------------------------------------
                  function OnTrade(order)
                        local trade_num=order.trade_num;
                        local order_num=order.order_num;
                        local brokerref=order.brokerref;
                        a=a+"b";
                  end

                  function OnOrder(order)
                     local userid=order.userid;
                     local firmid=order.firmid;
                     local account=order.account;   
                     a=a+"c";                     
                  end
      
            -------------------------------------------------
            message("все готово " ..a);
            a=a+1;
         end               
end
человек (не робот)
 
Сделка нормально проходит, странно, может быть обратный вызов приедет позднее, через час или два?
человек (не робот)
 
:shock:
А коллбэки за main() вынести?
 
Цитата
icebird написал:
А коллбэки за main() вынести?
Аааааааааааааааааа.... спасибо, не дочитал видимо. А надо ли читать эти колбеки? Может проще и надежней проверить таблицу сделки по факту? Есть сделка, значит все норм, нет сделки, тогда уже колбеки использовать. Я конечно завтра проверю во время рабочей сессии как они работают, но у меня такое ощущение, что их приходится все же ждать в цикле. А это потеря времени. Но надо проверить, спасибо за помощь.
человек (не робот)
 
Цитата
Андрей написал:
Может проще и надежней проверить таблицу сделки по факту? Есть сделка, значит все норм, нет сделки, тогда уже колбеки использовать.
Когда проверять "по факту"? Коллбэк для того и нужен, чтобы ответ дождаться.
 
Цитата
icebird написал:
Коллбэк для того и нужен, чтобы ответ дождаться.
Вот слово Дождаться кажется очень подозрительным, когда работа идет на скорость, то дождаться тут как то не очень понятна в принципе. По идее если функция работает по событию на сервере и передает данные в терминал пользователя, то она должна работать на подобии аппаратного прерывания компа, появилась, пришла, в программе прерываются основные процессы и и выполняется эта функция и ждать ничего не нужно, все должно происходить в рабочем порядке. А если такое не возможно и надо все таки Ждать ответа от сервера по транзакции (это немного похоже на программное прерывание, но не совсем) , то тогда конечно вы правы и вопросов у меня по этой теме больше нет, спасибо за помощь.
человек (не робот)
 
Цитата
Андрей написал:
Цитата
icebird   написал:
Коллбэк для того и нужен, чтобы ответ  дождаться .
Вот слово  Дождаться  кажется очень подозрительным, когда работа идет на скорость, то  дождаться  тут как то не очень понятна в принципе. По идее если функция работает по событию на сервере и передает данные в терминал пользователя, то она должна работать на подобии аппаратного прерывания компа, появилась, пришла, в программе прерываются основные процессы и и выполняется эта функция и ждать ничего не нужно, все должно происходить в рабочем порядке. А если такое не возможно и надо все таки  Ждать  ответа от сервера по транзакции (это немного похоже на программное прерывание, но не совсем) , то тогда конечно вы правы и вопросов у меня по этой теме больше нет, спасибо за помощь.
Зайдите на страницу:
https://arqatech.com/ru/support/files/

Там почти в самом низу скачайте:
«Документация по языку LUA в QUIK и примеры zip, 5.6 МБ»
https://arqatech.com/upload/iblock/194/quik_lua.zip

В архиве посмотрите файл «Использование Lua в Рабочем месте QUIK.pdf», там всё подробно расписано со схемами и примерами кода.
Особенно главу «4. Отправка транзакций из Lua скрипта», там пример работы с OnTransReply.
 
Спасибо, читал, может выпустил чего-то
человек (не робот)
 
Да видимо не понял, спасибо, стало понятнее  :wink:
человек (не робот)
 
Здорово работает, отлично все приходит. (ликбез наверно скоро пройдет и станет легче...)
человек (не робот)
Страницы: 1
Читают тему
Наверх