Добрый день!)
Имеется хорошенький скрипт «Фильтр таблицы всех сделок»:
smart-lab.ru/blog/19777.php#comments
нашел на Комоне. Вот код:
PORTFOLIO_EX FILTR;
DESCRIPTION Фильтр таблицы сделок;
CLIENTS_LIST ALL_CLIENTS;
FIRMS_LIST FIRMID;
PROGRAM
'******************************************************************************
' Автор: Beginner
' версия 1.01 09.2009
' Программа фильтрует таблицу всех сделок по акциям Сбербанка
' с заданым объемом .
'
' E-mail: svar4ikov@yandex.ru
'******************************************************************************
NEW_GLOBAL(«Last_Num»,1)
NEW_GLOBAL(«j»,0)
'Очищение таблицы и создание
Tab_Sort=CREATE_MAP()
SecCode=«SBER03» ' бумага
ClassCode=«EQBR» ' класс
QUAN=1000 ' объем
N=GET_NUMBER_OF(«ALL_TRADES») 'получаем кол-во записей
FOR i from Last_Num to N ' Начало цикла
Tab_Trade=GET_ITEM(«ALL_TRADES», i)
IF (GET_VALUE(Tab_Trade, «SecCode»)== SecCode AND GET_VALUE(Tab_Trade, «ClassCode»)== ClassCode)
Q=0+GET_VALUE(Tab_Trade, «QUANTITY»)
IF Q>=QUAN ' Проверка времени
FTime=""&GET_VALUE(Tab_Trade, «TIME»)
TTime=SUBSTR(FTime,0,2)& ":" & SUBSTR(FTime,2,2) & ":" & SUBSTR(FTime,4,2)
Op=""&GET_VALUE(Tab_Trade, «OPERATION»)
TPrice=0+GET_VALUE(Tab_Trade, «PRICE»)
Tab_Sort=SET_VALUE(Tab_Sort,«CodeFut»,Seccode)
Tab_Sort=SET_VALUE(Tab_Sort,«ST_Time»,TTime)
Tab_Sort=SET_VALUE(Tab_Sort, «TPrice», TPrice)
Tab_Sort=SET_VALUE(Tab_Sort, «QUAN», Q)
Tab_Sort=SET_VALUE(Tab_Sort, «Op», Op)
ADD_ITEM(1, Tab_Sort)
j=j+1
IF Op==«Sell»
SET_ROW_COLOR_EX(1,«RGB(255,140,140)», «RGB(255,140,140)», «DEFAULT_COLOR», «DEFAULT_COLOR») '
ELSE
SET_ROW_COLOR_EX(1,«RGB(140,255,140)», «RGB(140,255,140)», «DEFAULT_COLOR», «DEFAULT_COLOR») '
End IF
End IF
End IF
End FOR ' Конец цикла
Last_Num=N+1 ' пресвоим последний номер сделки
END_PROGRAM
PARAMETER CodeFut;
PARAMETER_TITLE CodeFut;
PARAMETER_DESCRIPTION Название фьюч;
PARAMETER_TYPE STRING(32);
END
PARAMETER ST_Time;
PARAMETER_TITLE ST_Time;
PARAMETER_DESCRIPTION Время сделки;
PARAMETER_TYPE STRING(32);
END
PARAMETER TPrice;
PARAMETER_TITLE TPrice;
PARAMETER_DESCRIPTION Цена;
PARAMETER_TYPE NUMERIC(10,2);
END
PARAMETER QUAN;
PARAMETER_TITLE QUAN;
PARAMETER_DESCRIPTION Кол-во;
PARAMETER_TYPE NUMERIC(10,0);
END
PARAMETER Op;
PARAMETER_TITLE Op;
PARAMETER_DESCRIPTION Операция;
PARAMETER_TYPE STRING(32);
END
END_PORTFOLIO_EX
что хотелось бы изменить: дело в том, что таблица котировок считает все позиции собранные в стакане за раз, как отдельные сделки. т.е. покупатель покупает 100 000. а в ленте может быть 20 000+ 5 000+ 75 000. часть из них отфильтруется. останется только 75 000
вот это хреново(((( лента отображает сделки по зарегистрированным заявкам. потому что в одну долю секунды одновременно проходит куча баев например по одной цене. т.е. если в стакане на продажу 50, 15, 45 лотов по одной цене. а кто то купил по рынку 80 — будет в ленте не 80, а 50, 15, 15.
надо скрипт как то подредактировать, чтоб суммировал всю эту бяку вместе, прежде чем фильтровать.
_______
как можно суммировать:
а) считать все баи вместе за каждую конкретную секунду
б) еще лучше — считать все баи подряд до появления первого селла.
аналогично и с продажами.
затем фильтровать уже полученные резулбтаты по объему. цена для суммы прописывается по последней сделке в серии.
-> таким образом можно будет в ленте отфильтровать крупного покупателя/продавца по рынку.
Был бы очень признателен..)
B S BBB SS B — эти сделки произошли за одну секунду. три В посередине нужно просто сложить и выдать в таблицу за одну сделку. потом сложить два S. это вторая сделка. ну и так далее.
________________________
Что-то вы мутите господа.)) Если в стакане висит заява на покупку на 10000 предположим и при этом Вася продал по рынку 2000, Петя 3000 а Юра 5000, то лента покажет 2000 продажа, 3000 продажа, 5000 продажа, т.е лента ОТОБРАЖАЕТ СДЕЛКИ ПО РЫНКУ!!!