SearchItems не успевает обновить данные по заявкам при вызове в OnTrade

Страницы: 1
RSS
SearchItems не успевает обновить данные по заявкам при вызове в OnTrade
 
Пытаюсь найти оставшиеся заявки по текущей цене внутри OnTrade
Код
function findNumOrderPrice(ordtable, TRADE_CLASS_CODE, TRADE_SEC_CODE, fPrice)
    function myFindPriceNum(C,S,F,P)        
        if (tostring(C) == tostring(TRADE_CLASS_CODE)) and (tostring(S) == tostring(TRADE_SEC_CODE)) and (bit.band(F, 0x1) ~= 0) and (tostring(P) == tostring(fPrice)) then 
            return true 
        end
        return false
    end       
    local norders = SearchItems(ordtable, 0, getNumberOf(ordtable)-1, myFindPriceNum, "class_code,sec_code,flags,price")
    if (norders ~= nil) and (#norders > 0) then
        myLog('norders='..tostring(#norders))
        return #norders
    end
    return 0
end
Но, в таблице заявок к этому моменту не успевают обновится данные, даже флаги, что заявка исполнена.
Как их принудительно перепроверить внутри этой функции?
myLog('norders='..tostring(#norders)) возвращает количество в последней сделке, даже если там несколько заявок было и все они разом исполнились.
Точно такой же код поиска нормально работает в main cо старыми долговисящими заявками
 
поправочка
myLog('norders='..tostring(#norders)) возвращает данные до сделки
 
OnTrade как правило приходит раньше OnOrder.

Сама по себе сделка содержит номер транзакции, номер заявки и цену исполнения.

После получения всех сделок, информация о состоянии заявки, нам больше не нужна.
 
Цитата
После получения всех сделок, информация о состоянии заявки, нам больше не нужна.
А как тогда информацию о исполнении заявки брать? Я всегда из флагов заявки брал. Таблица исполненных заявок всегда содержит информацию по всем исполненным заявкам.
Как тогда узнать, что больше активных заявок по этой цене не осталось?
 
Короче, разобрался, перекинул эти функции в OnOrder
Там хоть возвращает таблицу заявок, а не сделок. Можно отфильтровывать исполненные до вызова моей findNumOrderPrice.
Но как и OnTrade тоже по несколько раз вызывается на одну сделку.
 
Хах, но появилась другая проблема. Если заявка недавно выставлена, то она не находится в системе через SearchItems.
Какой же этот Квик мееедленный((.
 
Цитата
Cyber написал:
Хах, но появилась другая проблема. Если заявка недавно выставлена, то она не находится в системе через SearchItems.
Какой же этот Квик мееедленный((.
Скорость здесь вообще не важна. Колбек - это сигнал, что что-то произошло и передается запись из таблицы об этом изменении. Т.е. изменилась одна конкретная запись. Вы же пытаетесь по этому событию найти все записи, удовлетворяющие некому условию. И это не считая того, что колбеки - это не гарантированные события. Поэтому надо просто изменять подход. Хотите продолжать использовать колбеки - можно, но только как факт события, устанавливающий флаг признака, что что-то изменилось. А уже в основном потоке искать по все таблице. Можно и без колбеков вовсе, просто самому опрашивая таблицу по некому алгоритму, что будет намного надежней, но многими считается как некрасивый подход.
 
Колбек вызывыется терминалом не после изменения таблицы, а перед ее изменением.
т е сначала вызывается колбек, а потом эти данные обновляют соответствующую таблицу.
-------------------------
Поэтому попытка прочитать изменения таблицы в колбеке всегда безрезультатна.
 
Како же тормозной этот SearchItems.
Или это у меня комп уже старый.
Чтоб проверить 100 цен на наличие в них заявок уходит около минуты.
Есть альтернативные методы?
 
Цитата
Cyber написал:
Како же тормозной этот SearchItems.
Или это у меня комп уже старый.
Чтоб проверить 100 цен на наличие в них заявок уходит около минуты.
Есть альтернативные методы?
Можно подробнее, что такое
"Чтоб проверить 100 цен на наличие в них заявок "

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