Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // переменные
- var collapsedlastTapeDealID :UInt64 = 0 // ИД последней обработанной tapeDeal
- var lastTapeDealDeltaInvert :Float = 0 // дельта * -1 последней обработанной tapeDeal
- var lastTapedealOrderCount :Int = 0 // количество ордеров последней обработанной tapeDeal
- var collapsedTapeDealsArr :Array<TapeDealsItem> = [] // массив для вывода уже с агрегированных по прайсу биржи tapeDeal
- // NEW TAPE DEAL update
- func update() {
- // получаем все новые ид которые пришли включая последний обработанный
- let tempdataArr = historyTrades.getTapeDealForCoinTolastID(coin: selectCoin, lastID: collapsedlastTapeDealID, real: isRealVolume)
- // у меня массив отсортированн на 0 индексе новый на последнем старый элемент, по этому иду задом наперед по нему
- for item in tempdataArr.reversed() {
- // если у нас еще нет элементов или мы только переключили монету биржу и очистили массив вывода
- if collapsedTapeDealsArr.count == 0 {
- // сохраняем временные данные по последней сделке
- collapsedlastTapeDealID = item.id // ид
- lastTapeDealDeltaInvert = item.amount * -1 // инвертированную дельту, чтоб потом ее вычитать если будет апдейт с таким же ИД
- lastTapedealOrderCount = item.count // количество ордеров
- // добавляем в массив вывода
- collapsedTapeDealsArr.append(item)
- } else {
- // если элементы есть
- // проверяем не является ли ИД который пришел текущим ИД
- if collapsedlastTapeDealID == item.id {
- // если это обновление удаляем старую разнцу
- collapsedTapeDealsArr[0].amount += lastTapeDealDeltaInvert
- collapsedTapeDealsArr[0].count -= lastTapedealOrderCount
- // добавляем новую
- collapsedTapeDealsArr[0].amount += item.amount
- collapsedTapeDealsArr[0].count += item.count
- // сохраняем временные данные по последней сделке
- collapsedlastTapeDealID = item.id
- lastTapeDealDeltaInvert = item.amount * -1
- lastTapedealOrderCount = item.count
- } else {
- // если пришедший ИД не является текущим
- // сохраняем временные данные по последней сделке
- collapsedlastTapeDealID = item.id
- lastTapeDealDeltaInvert = item.amount * -1
- lastTapedealOrderCount = item.count
- // проверяем можно ли его по прайсу добавить к текущему если цена по выбранной бирже совпадает
- if collapsedTapeDealsArr[0].exchangePrice(selectExchange: selectExchange) == item.exchangePrice(selectExchange: selectExchange) {
- // добавляем к текущему
- collapsedTapeDealsArr[0].amount += item.amount
- collapsedTapeDealsArr[0].count += item.count
- } else {
- // если прайс изменился создаем новую в начале массива, у тебя возможно там порядок будет дргой
- collapsedTapeDealsArr.insert(item, at: 0)
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement