Блог им. Kuznez

Помогите подправить скрипт в QPILE

    • 14 октября 2011, 15:01
    • |
    • Kuznez
  • Еще
Добрый день!)
Имеется хорошенький скрипт «Фильтр таблицы всех сделок»: 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: [email protected]
'******************************************************************************


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.
надо скрипт как то подредактировать, чтоб суммировал всю эту бяку вместе, прежде чем фильтровать.
_______
как можно суммировать:
а) считать все баи вместе за каждую конкретную секунду
б) еще лучше — считать все баи подряд до появления первого селла.
аналогично и с продажами.
затем фильтровать уже полученные резулбтаты по объему. цена для суммы прописывается по последней сделке в серии.
-> таким образом можно будет в ленте отфильтровать крупного покупателя/продавца по рынку.
Был бы очень признателен..)



★3
12 комментариев
В смысле? Ты хочешь, что бы эта программа собирала разрозненные заявки от одного какого-либо контрагента? Или что?
avatar
Henkok, я про то, что крупная покупка по рынку в ленте дробится на множество мелких частей — это исполненные заявки на продажу. принцип ленты такой. считают сделки по стакану. каждую отдельно. не замечали? сяс скрин сделаю.
avatar
это что-то из области искуственного интеллекта. представь какой шум вносит в ленту robot_PRADA и ему подобные «за каждую конкретную секунду»
avatar
vfreeman, не понимаю, что сложного просто складывать все покупки подряд, а потом из полученного фильтровать самые крупные сделки.
avatar
дело в том, эту инфу можно получить только сопоставляя заявки в стакане и принты на ленте. другой скрипт писать нужно.задача не тривиальная.
El-Potifor, посмотрите скрин, я думаю, мне не удалось объяснить на словах, что я имею ввиду.
B S BBB SS B — эти сделки произошли за одну секунду. три В посередине нужно просто сложить и выдать в таблицу за одну сделку. потом сложить два S. это вторая сделка. ну и так далее.
avatar
Kuznez, да я понял, что ты имеешь в виду. Только то что на скрине всего лишь твое предположение. там ордера как угодно могли идти от разных участников.а реализовать это конечно довольно просто, складывая принты каждую секунду.
El-Potifor, принты на бай и селл подряд, подчеркну! меня это устроит. ну так помоги реализовать та?))))
avatar
Kuznez, ту так я та не программист))
если вообще есть информация об ордерах кидаемых по рынку, в чем я сомневаюсь
т.е. если в стакане на продажу 50, 15, 45 лотов по одной цене. а кто то купил по рынку 80 — будет в ленте не 80, а 50, 15, 15.
________________________

Что-то вы мутите господа.)) Если в стакане висит заява на покупку на 10000 предположим и при этом Вася продал по рынку 2000, Петя 3000 а Юра 5000, то лента покажет 2000 продажа, 3000 продажа, 5000 продажа, т.е лента ОТОБРАЖАЕТ СДЕЛКИ ПО РЫНКУ!!!
avatar
getstar, а если наоборот. висят заявы на покупку 2000, 3000, 5000. а кто то продал по рынку 10 000 — будет все равно в ленте 2000, 3000, 5000, а не 10 000.
avatar

теги блога Kuznez

....все тэги



UPDONW
Новый дизайн