рдХреЗрдбреАрдмреА + рдХреНрдпрд╛ рд╣реИ, рдХреНрдпреВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛, рдЙрдирдХреА рддрд╛рдХрдд рдФрд░ рдХрдордЬреЛрд░рд┐рдпрд╛рдВ рдХреНрдпрд╛ рд╣реИрдВ, рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ
рд▓реЗрдЦ рдореЗрдВ рдФрд░ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкрд░рд┐рдЪрдп рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдХреНрдпреВ рдкрд░ рдПрдХ рд╕реЗрд╡рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░реАрдо рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдкреНрд░рддрд┐ рдорд┐рдирдЯ "рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп" рдореЛрдб рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдПрдХрддреНрд░рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдЧрд╛ (рдЕрд░реНрдерд╛рдд, рдпрд╣ рдбреЗрдЯрд╛ рдХреЗ рдЕрдЧрд▓реЗ рдЯреБрдХрдбрд╝реЗ рддрдХ рд╕рдм рдХреБрдЫ рдЧрд┐рдирдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░реЗрдЧрд╛)ред рдХреНрдпреВ рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╕рджрд┐рд╢ рднрд╛рд╖рд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдПрдХрд▓ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЙрдирдХреЗ рд╕рд░рдгрд┐рдпреЛрдВ, рд╕рд░рдгрд┐рдпреЛрдВ рдФрд░ рдЕрдиреНрдп рдЬрдЯрд┐рд▓ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред Q рдФрд░ рдЙрд╕рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд K, J, APL рдЬреИрд╕реА рднрд╛рд╖рд╛рдПрдБ рдЕрдкрдиреА рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕рд┐рджреНрдз рд╣реИрдВред рдЕрдХреНрд╕рд░ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЬреЛ рдПрдХ рдкрд░рд┐рдЪрд┐рдд рднрд╛рд╖рд╛ рдореЗрдВ рдХреЛрдб рдХреЗ рдХрдИ рд╕реНрдХреНрд░реАрди рдХреЛ рдлреИрд▓рд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдЬрд╛рд╡рд╛ рдЙрди рдкрд░ рдХрдИ рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдкрд░рд┐рдЪрдп
рдХреЗрдбреАрдмреА + рдПрдХ рд╕реНрддрдВрдн рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдХреЗ рдмрд╣реБрдд рдмрдбрд╝реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ (рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕рдордп рдХреЗ рдЕрдиреБрд╕рд╛рд░)ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡рд┐рддреНрддреАрдп рд╕рдВрдЧрдардиреЛрдВ рдореЗрдВ - рдмреИрдВрдХреЛрдВ, рдирд┐рд╡реЗрд╢ рдХреЛрд╖, рдмреАрдорд╛ рдХрдВрдкрдирд┐рдпреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрдпреВ рднрд╛рд╖рд╛ рдХреЗрдбреАрдмреА + рдХреА рдПрдХ рдЖрдВрддрд░рд┐рдХ рднрд╛рд╖рд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдХреНрдпреВ рдХреА рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдФрд░ рджрдХреНрд╖рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╕реНрдкрд╖реНрдЯрддрд╛ рдмрд▓рд┐рджрд╛рди рд╣реИред рдпрд╣ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЙрдЪрд┐рдд рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рд╡реЗрдХреНрдЯрд░ рднрд╛рд╖рд╛ рдХреЛ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛, рдФрд░ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреА рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдФрд░ рд╕рдореГрджреНрдзрд┐ рдЖрдкрдХреЛ рдПрдХ рд╕реНрдХреНрд░реАрди рдкрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╣рд┐рд╕реНрд╕рд╛ рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдЬреЛ рдЕрдВрддрддрдГ рдЗрд╕рдХреА рд╕рдордЭ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдПрдХ рдкреВрд░реНрдг рдХреНрдпреВ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд╛рдЧреВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЖрдк рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрд╡рдпрдВ Q рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк kx рдХрдВрдкрдиреА рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ -
www.kx.com рдкрд░ рдореБрдлреНрдд 32-рдмрд┐рдЯ рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрд╕реА рд╕реНрдерд╛рди рдкрд░, рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк Q рдкрд░ рд╕рдВрджрд░реНрдн рдЬрд╛рдирдХрд╛рд░реА рдкрд╛рдПрдВрдЧреЗ, рдкреБрд╕реНрддрдХ
Q For Mortals рдФрд░ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд╡рд┐рднрд┐рдиреНрди рд▓реЗрдЦред
рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди
рдПрдХ рд╕реНрд░реЛрдд рд╣реИ рдЬреЛ рд╣рд░ 25 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдкрд░ рдПрдХ рдбреЗрдЯрд╛ рддрд╛рд▓рд┐рдХрд╛ рднреЗрдЬрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдХреЗрдбреАрдмреА + рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╡рд┐рддреНрдд рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рдЯреНрд░реЗрдбреЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЙрд▓рдо рд╣реИрдВ: рд╕рдордп (рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рд╕рдордп), рд╕реАрдо (рдПрдХреНрд╕рдЪреЗрдВрдЬ рдкрд░ рдХрдВрдкрдиреА рдХрд╛ рдирд╛рдо -
рдЖрдИрдмреАрдПрдо ,
рдПрдПрдкреАрдПрд▓ , ...), рдореВрд▓реНрдп (рдореВрд▓реНрдп) рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╢реЗрдпрд░ рдЦрд░реАрджреЗ рдЧрдП рдереЗ), рдЖрдХрд╛рд░ (рд▓реЗрдирджреЗрди рдХрд╛ рдЖрдХрд╛рд░)ред 25 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХрд╛ рдЕрдВрддрд░рд╛рд▓ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╕реЗрд╡рд╛ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓рд╛ рдбреЗрдЯрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдлрд░ рд╣реИред рд╡рд░реНрддрдорд╛рди рд▓реЛрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЧрддрд┐рд╢реАрд▓ рдмрдлрд╝рд░рд┐рдВрдЧ рд╕рд╣рд┐рдд рд╕реЗрд╡рд╛ рдкрдХреНрд╖ рдкрд░ рдмрдлрд░рд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрдВрддрд░рд╛рд▓ рдкрд░ рд░рд╣рддреЗ рд╣реИрдВред
рд╕реЗрд╡рд╛ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓рдо рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдг рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдиреБрднреВрддрд┐ рдХреЙрд▓рдо рд╕реЗ рдПрдХрддреНрд░рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ - рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп, рдФрд╕рдд рдореВрд▓реНрдп, рдпреЛрдЧ рдЖрдХрд╛рд░ рдЖрджрд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реАред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдЖрдХрд╕реНрдорд┐рдХ рд░реВрдк рд╕реЗ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдПрдХ рдирдпрд╛ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рджреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ - рдкреБрд░рд╛рдирд╛ рдФрд░ рдЖрдиреЗ рд╡рд╛рд▓рд╛ рдореВрд▓реНрдпред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЕрдзрд┐рдХрддрдо, рдФрд╕рдд, рдпреЛрдЧ рдореЗрдВ рдпрд╣ рд╕рдВрдкрддреНрддрд┐ рд╣реИ, рд▓реЗрдХрд┐рди рдФрд╕рддрди рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИред
рд╣рдо рдпрд╣ рднреА рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдиреЗ рд╡рд╛рд▓реА рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░реАрдо рд╕рдордп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реИред рдпрд╣ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рд╕рдордп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрдЧрд╛ред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдХрд┐рд╕реА рднреА рдЕрдкрдбреЗрдЯ рдореЗрдВ рджреЗрд░реА рд╣реЛрдиреЗ рдкрд░ рд╡рд░реНрддрдорд╛рди рдФрд░ рдкрд┐рдЫрд▓реЗ рдорд┐рдирдЯреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕ рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред
рдЕрд▓рдЧ рдХрд╛рд░реНрдп
рдиреАрдЪреЗ рд╕реВрдЪреАрдмрджреНрдз рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдп рд╣реИрдВред рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рд╕реЗрд╡рд╛ рдкрд░ рднрд╛рд░ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рд▓рд┐рдпрд╛:
- рдЙрдЪреНрдЪ - рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп - рдкреНрд░рддрд┐ рдорд┐рдирдЯ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдпред
- рдХрдо - рдиреНрдпреВрдирддрдо рдореВрд▓реНрдп - рдкреНрд░рддрд┐ рдорд┐рдирдЯ рдиреНрдпреВрдирддрдо рдореВрд▓реНрдпред
- FirstPrice - рдкрд╣рд▓реА рдХреАрдордд - рдкреНрд░рддрд┐ рдорд┐рдирдЯ рдкрд╣рд▓реА рдХреАрдорддред
- lastPrice - рдЕрдВрддрд┐рдо рдореВрд▓реНрдп - рдкреНрд░рддрд┐ рдорд┐рдирдЯ рдЕрдВрддрд┐рдо рдореВрд▓реНрдпред
- рдкрд╣рд▓рд╛ рдЖрдХрд╛рд░ - рдкрд╣рд▓рд╛ рдЖрдХрд╛рд░ - рдПрдХ рдорд┐рдирдЯ рдореЗрдВ рдкрд╣рд▓рд╛ рд╕реМрджрд╛ рдЖрдХрд╛рд░ред
- lastSize - рдЕрдВрддрд┐рдо рдЖрдХрд╛рд░ - рдПрдХ рдорд┐рдирдЯ рдореЗрдВ рдЕрдВрддрд┐рдо рд╕реМрджрд╛ рдЖрдХрд╛рд░ред
- numTrades - рдЧрдгрдирд╛ i - рдкреНрд░рддрд┐ рдорд┐рдирдЯ рд▓реЗрдирджреЗрди рдХреА рд╕рдВрдЦреНрдпрд╛ред
- рдорд╛рддреНрд░рд╛ - рдпреЛрдЧ рдЖрдХрд╛рд░ - рдкреНрд░рддрд┐ рдорд┐рдирдЯ рд▓реЗрдирджреЗрди рдЖрдХрд╛рд░ рдХрд╛ рдпреЛрдЧред
- pvolume - рдпреЛрдЧ рдореВрд▓реНрдп - рдкреНрд░рддрд┐ рдорд┐рдирдЯ рдХреАрдорддреЛрдВ рдХрд╛ рдпреЛрдЧ, avgPrice рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХред
- рдХрд╛рд░реЛрдмрд╛рд░ - рдпреЛрдЧ рдореВрд▓реНрдп * рдЖрдХрд╛рд░ - рдкреНрд░рддрд┐ рдорд┐рдирдЯ рд▓реЗрдирджреЗрди рдХреА рдХреБрд▓ рдорд╛рддреНрд░рд╛ред
- avgPrice - pvolume% numTrades - рдФрд╕рдд рдореВрд▓реНрдп рдкреНрд░рддрд┐ рдорд┐рдирдЯред
- avgSize - рд╡реЙрд▓реНрдпреВрдо% рд╕рдВрдЦреНрдпрд╛ - рдФрд╕рдд рд╕реМрджрд╛ рдкреНрд░рддрд┐ рдорд┐рдирдЯ рдЖрдХрд╛рд░ред
- vwap - рдЯрд░реНрдирдУрд╡рд░% рдорд╛рддреНрд░рд╛ - рдкреНрд░рддрд┐ рдорд┐рдирдЯ рдФрд╕рдд рдореВрд▓реНрдп рд▓реЗрдирджреЗрди рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рднрд╛рд░рд┐рддред
- рдкреВрд░реЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╕рд╣-рдЖрдпрддрди - рдпреЛрдЧ рдХреА рдорд╛рддреНрд░рд╛ - рд╕рдВрдЪрд┐рдд рд▓реЗрдирджреЗрди рдХрд╛ рдЖрдХрд╛рд░ред
рдПрдХ рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рдмрд┐рдВрджреБ рдкрд░ рддреБрд░рдВрдд рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВ - рдкрд╣рд▓реА рдмрд╛рд░ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрдЧрд▓реЗ рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рдЗрди рд╕реНрддрдВрднреЛрдВ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВред FirstPrice рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреБрдЫ рд╕реНрддрдВрднреЛрдВ рдХреЛ рд╣рд░ рдмрд╛рд░ рдЕрд╢рдХреНрдд рдХреЗ рд╕рд╛рде рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрдирдХреЗ рдорд╛рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рдорд╛рддреНрд░рд╛ рд╣рдореЗрд╢рд╛ 0 рдкрд░ рд╕реЗрдЯ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЕрднреА рднреА рдХреЙрд▓рдо рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рд╕рдВрдпреБрдХреНрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд┐рдЫрд▓реЗ рдорд┐рдирдЯ рд╕реЗ рдХрдорд╡реЛрд▓реНрдпреВрдо рдХреЛ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдкрд╣рд▓реЗ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП 0. рд╣рдо рдбреЗрдЯрд╛ рдЯрд╛рдЗрдк рдбрд┐рдХреНрд╢рдирд░реА (рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдПрдирд╛рд▓реЙрдЧ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрди рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░реЗрдВрдЧреЗ:
рдореИрдВрдиреЗ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рд╕рд╣рд╛рдиреБрднреВрддрд┐ рдФрд░ рд╕рдордп рдЬреЛрдбрд╝рд╛ рд╣реИ, рдЕрдм initWith рдЕрдВрддрд┐рдо рдПрдХрддреНрд░рд┐рдд рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдПрдХ рд╕рдорд╛рдкреНрдд рд░реЗрдЦрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдпрд╣ рд╕рд╣реА рд╕рд┐рдЪреБрдПрд╢рди рдФрд░ рд╕рдордп рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдЖрдк рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдирдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
aggCols рдЬрдм рд╣рдо рдПрдХ рдХреБрд▓ рд╕рдорд╛рд░реЛрд╣ рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЬрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рдХреНрдпреВ (рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ) рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдЙрд╕ рдХреНрд░рдо рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдХреЗ рдХрд╛рд░рдг рд╕реВрдЪреА рдХреЛ рдЙрд▓реНрдЯрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рд▓рдХреНрд╖реНрдп рдЙрдЪреНрдЪ рд╕реЗ рд╕рд╣-рд╡рд┐рдЪрд▓рди рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдЕрднрд┐рдХрд▓рди рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рдХреЙрд▓рдо рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВред
рдкрд┐рдЫрд▓реЗ рдПрдХ рд╕реЗ рдирдП рдорд┐рдирдЯ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреЙрд▓рдо, рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдХреЙрд▓рдо:
rollColumns:`sym`cumVolume;
рдЕрдм рд╣рдо рдХреЙрд▓рдо рдХреЛ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рддреАрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- рдмреИрдЯрд░реА (рд╡реЙрд▓реНрдпреВрдо, рдЯрд░реНрдирдУрд╡рд░, ..) - рд╣рдореЗрдВ рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рдореЗрдВ рдЗрдирдкреБрдЯ рд╡реИрд▓реНрдпреВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред
- рдПрдХ рд╡рд┐рд╢реЗрд╖ рдмрд┐рдВрджреБ (рдЙрдЪреНрдЪ, рдирд┐рдореНрди, ..) рдХреЗ рд╕рд╛рде - рдПрдХ рдорд┐рдирдЯ рдореЗрдВ рдкрд╣рд▓рд╛ рдореВрд▓реНрдп рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд╛рдХреА рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдмрд╛рдХреАред рд╣рдореЗрд╢рд╛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЪрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:
accumulatorCols:`numTrades`volume`pvolume`turnover; specialCols:`high`low`firstPrice`firstSize;
рдЧрдгрдирд╛ рдХреНрд░рдо
рд╣рдо рджреЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рдПрдХрддреНрд░рд┐рдд рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВрдЧреЗред рджрдХреНрд╖рддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд╣рд▓реЗ рдЖрдиреЗ рд╡рд╛рд▓реА рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╕рд┐рдХреЛрдбрд╝реЗрдВрдЧреЗ рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдг рдФрд░ рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрдВрдХреНрддрд┐ рдмрдЪреЗред рдпрд╣ рддрдереНрдп рдХрд┐ рд╣рдорд╛рд░реЗ рд╕рднреА рдХрд╛рд░реНрдп рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╣реИрдВ рдФрд░ рд╕рд╛рд╣рдЪрд░реНрдп рд╣рдореЗрдВ рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрджрдо рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ред рдЖрдк рдЪрдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдирд┐рдЪреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
select high:max price, low:min price тАж by sym,time.minute from table
рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рдорд╛рдЗрдирд╕ рд╣реИ - рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рдХреЙрд▓рдо рдХрд╛ рд╕реЗрдЯ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдХреНрдпреВ рдореЗрдВ, рдЪрдпрди рдХреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдЧрдП рддрд░реНрдХреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
?[table;whereClause;byClause;selectClause]
рдореИрдВ рддрд░реНрдХреЛрдВ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЗрд╡рд▓ рдФрд░ рдЪреБрдирд┐рдВрджрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдВ рдЧреИрд░-рддреБрдЪреНрдЫ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рдкрддреНрд░ рдХреЙрд▓рдо рдХреЗ рд╢рдмреНрджрдХреЛрд╢ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП! рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
selExpression:`high`low`firstPrice`lastPrice`firstSize`lastSize`numTrades`volume`pvolume`turnover!parse each ("max price";"min price";"first price";"last price";"first size";"last size";"count i";"sum size";"sum price";"sum price*size");
рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкрд╛рд░реНрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬреЛ рдХрд┐ рдХреНрдпреВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдПрдХ рдореВрд▓реНрдп рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ eval рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЬрд┐рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдЪрдпрди рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕ рдХреЛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдпрд╛рдиреА, рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди) рдХрд╛ рдЪрдпрди рдлрд╝рдВрдХреНрд╢рди, рдПрдХ рддрд░реНрдХ (рддрд╛рд▓рд┐рдХрд╛) рдЧрд╛рдпрдм рд╣реИред рдпрджрд┐ рд╣рдо рдПрдХ рдореЗрдЬ рдкрд░ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдПрдХ рд╕рд┐рдХреБрдбрд╝рд╛ рд╣реБрдЖ рдЯреЗрдмрд▓ рдорд┐рд▓рддрд╛ рд╣реИред
рджреВрд╕рд░рд╛ рдЪрд░рдг рдХреБрд▓ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдЕрджреНрдпрддрди рдХрд░ рд░рд╣рд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ pseudocode рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
for each sym in inputTable idx: row index in agg table for sym+currentTime; aggTable[idx;`high]: aggTable[idx;`high] | inputTable[sym;`high]; aggTable[idx;`volume]: aggTable[idx;`volume] + inputTable[sym;`volume]; тАж
рдХреНрдпреВ рдореЗрдВ, рдЫреЛрд░реЛрдВ рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ / рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпреВ рдЪреВрдВрдХрд┐ рдПрдХ рд╕рджрд┐рд╢ рднрд╛рд╖рд╛ рд╣реИ рдФрд░ рд╕рднреА рдСрдкрд░реЗрд╢рди рд╣рдо рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдмрд╛рд░ рдореЗрдВ рд╕рднреА рдкреНрд░рддреАрдХреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдкрд╣рд▓реЗ рд╕рдиреНрдирд┐рдХрдЯрди рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдо рдПрдХ рдЪрдХреНрд░ рдХреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдмрд╛рд░ рдореЗрдВ рд╕рднреА рдкреНрд░рддреАрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рди рдХрд░ рд░рд╣реЗ рд╣реИрдВ:
idx:calcIdx inputTable; row:aggTable idx; aggTable[idx;`high]: row[`high] | inputTable`high; aggTable[idx;`volume]: row[`volume] + inputTable`volume; тАж
рд▓реЗрдХрд┐рди рд╣рдо рдЖрдЧреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреВ рдореЗрдВ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдФрд░ рдмреЗрд╣рдж рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдСрдкрд░реЗрдЯрд░ рд╣реИ - рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░ред рдпрд╣ рдЖрдкрдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд, рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рддрд░реНрдХреЛрдВ рдХреА рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЬрдЯрд┐рд▓ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
idx:calcIdx inputTable; rows:aggTable idx;
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдкрд░ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреЙрд▓рдо рдХреА рдирд╣реАрдВ, рдФрд░ рдЖрдкрдХреЛ рдлреНрд▓рд┐рдк рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ (рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдХреЙрд▓рдо рдХреА рд╕реВрдЪреА) рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдПрдХ рдмрдбрд╝реА рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдореИрдк рдлрд╝рдВрдХреНрд╢рди (рдЬреЛ рдПрдХ рдПрдкреЙрд╕реНрдЯреНрд░реЙрдкреА рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓рдо рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ:
.[aggTable;;:;]'[(idx;)each aggCols; (row[`high] | inputTable`high;row[`volume] + inputTable`volume;тАж)];
рд╣рдо рдлрд┐рд░ рд╕реЗ рдкреНрд░рдХреНрд╖реЗрдкрдг рд╕рдорд╛рд░реЛрд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреНрдпреВ рдореЗрдВ, рдПрдХ рд╕реВрдЪреА рдмрдирд╛рдирд╛ рднреА рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдФрд░ рд╣рдо рд╕реВрдЪрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ (рдореИрдк) рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рддрд╛рдХрд┐ рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рд╕реНрддрдВрднреЛрдВ рдХрд╛ рд╕реЗрдЯ рддрдп рди рд╣реЛ, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдКрдкрд░ рдмрдирд╛рдПрдВред рдкрд╣рд▓реЗ, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓рдо рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдХреБрд▓ рдФрд░ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрдВрдХреНрддрд┐ рдФрд░ рдЗрдирдк рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
aggExpression:`high`low`firstPrice`lastPrice`firstSize`lastSize`avgPrice`avgSize`vwap`cumVolume! ("row[`high]|inp`high";"row[`low]&inp`low";"row`firstPrice";"inp`lastPrice";"row`firstSize";"inp`lastSize";"pvolume%numTrades";"volume%numTrades";"turnover%volume";"row[`cumVolume]+inp`volume");
рдХреБрдЫ рдХреЙрд▓рдо рд╡рд┐рд╢реЗрд╖ рд╣реИрдВ, рдЙрдирдХрд╛ рдкрд╣рд▓рд╛ рдорд╛рди рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдЧрдгрдирд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕реНрддрдВрдн рдкрдВрдХреНрддрд┐ рдореЗрдВ рдкрд╣рд▓рд╛ рд╣реИ [`рд╕рдВрдЦреНрдпрд╛] - рдпрджрд┐ рдЗрд╕рдореЗрдВ 0 рд╣реИ, рддреЛ рдорд╛рди рдкрд╣рд▓реЗ рд╣реИред Q рдХрд╛ рдПрдХ рдЪрдпрди рдХрд╛рд░реНрдп рд╣реИ - [рдмреВрд▓рд┐рдпрди рд╕реВрдЪреА; рд╕реВрдЪреА 1; рд╕реВрдЪреА 2] - рдЬреЛ рдкрд╣рд▓реЗ рддрд░реНрдХ рдореЗрдВ рд╢рд░реНрдд рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реВрдЪреА 1 рдпрд╛ 2 рдореЗрдВ рд╕реЗ рдПрдХ рдорд╛рди рдХрд╛ рдЪрдпрди рдХрд░рддреА рд╣реИ:
рдпрд╣рд╛рдВ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдлрд╝рдВрдХреНрд╢рди (рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕ рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐) рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХрд╣рд╛ред рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп (рдкрд╣рд▓рд╛ рддрд░реНрдХ) рдФрд░ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХ, рдЬрд┐рд╕реЗ рдореИрдВ 4 рд╡реЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕реЗ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрд▓рдЧ-рдЕрд▓рдЧ, рд╣рдо рдмреИрдЯрд░реА рд╕реНрдкреАрдХрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рд╕рдорд╛рди рд╣реИ:
рдпрд╣ рдХреНрдпреВ рдХреЗ рдорд╛рдирдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╣реИ, рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реВрдВред рдЕрдВрдд рдореЗрдВ, рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдмрдирд╛рдПрдБ:
рдЗрд╕ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде, рдореИрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рдКрдкрд░ рдЙрджреНрдзреГрдд рдХреА рд╣реИред рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
{[aggTable;idx;inp] rows:aggTable idx; isFirst:0=row`numTrades; .[aggTable;;:;]'[(idx;)each aggCols ;(cumVolume:row[`cumVolume]+inp`cumVolume;тАж ; high:?[isFirst;inp`high;row[`high]|inp`high])]}
рд╕реНрддрдВрднреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд╛ рдХреНрд░рдо рдЙрд▓рдЯрд╛ рд╣реИ, рдХреНрдпреВ рдХреЗ рдЧрдгрдирд╛ рдХрд╛ рдХреНрд░рдо рджрд╛рдИрдВ рд╕реЗ рдмрд╛рдИрдВ рдУрд░ рд╣реИред
рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рджреЛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, рдпрд╣ рдереЛрдбрд╝рд╛ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ рдФрд░ рд╕реЗрд╡рд╛ рддреИрдпрд╛рд░ рд╣реИред
рдЕрдВрддрд┐рдо рдЪрд░рдг
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕ рдФрд░ рдЕрдкрдбреЗрдЯрдПрдЧ рдлрд╝рдВрдХреНрд╢рди рд╣реИрдВ рдЬреЛ рд╕рднреА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдорд┐рдирдЯреЛрдВ рдореЗрдВ рд╕рд╣реА рд╕рдВрдХреНрд░рдордг рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдФрд░ рдПрдХрддреНрд░реАрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЕрднреА рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдкрд╣рд▓реЗ рд╣рдо init рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
init:{ tradeAgg:: 0#enlist[initWith];
рд╣рдо рд░реЛрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд░реНрддрдорд╛рди рдорд┐рдирдЯ рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛:
roll:{[tm] if[currTime>tm; :init[]];
рд╣рдореЗрдВ рдирдП рд╡рд░реНрдг рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
addSyms:{[syms] currSyms,::syms;
рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЕрдкрдбреЗрдЯ рдлрд╝рдВрдХреНрд╢рди (рдХреНрдпреВ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдирд╛рдо), рдЬрд┐рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
upd:{[tblName;data]
рд╡рд╣ рд╕рдм рд╣реИред рдпрд╣рд╛рдБ рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдХрд╛ рдкреВрд░рд╛ рдХреЛрдб рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдмрд╕ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБ:
initWith:`sym`time`high`low`firstPrice`lastPrice`firstSize`lastSize`numTrades`volume`pvolume`turnover`avgPrice`avgSize`vwap`cumVolume!(`;00:00;0n;0n;0n;0n;0N;0N;0;0;0.0;0.0;0n;0n;0n;0); aggCols:reverse key[initWith] except `sym`time; rollColumns:`sym`cumVolume; accumulatorCols:`numTrades`volume`pvolume`turnover; specialCols:`high`low`firstPrice`firstSize; selExpression:`high`low`firstPrice`lastPrice`firstSize`lastSize`numTrades`volume`pvolume`turnover!parse each ("max price";"min price";"first price";"last price";"first size";"last size";"count i";"sum size";"sum price";"sum price*size"); preprocess:?[;();`sym`time!`sym`time.minute;selExpression]; aggExpression:`high`low`firstPrice`lastPrice`firstSize`lastSize`avgPrice`avgSize`vwap`cumVolume!("row[`high]|inp`high";"row[`low]&inp`low";"row`firstPrice";"inp`lastPrice";"row`firstSize";"inp`lastSize";"pvolume%numTrades";"volume%numTrades";"turnover%volume";"row[`cumVolume]+inp`volume"); @[`aggExpression;specialCols;{"?[isFirst;inp`",y,";",x,"]"};string specialCols]; aggExpression[accumulatorCols]:{"row[`",x,"]+inp`",x } each string accumulatorCols; updateAgg:value "{[aggTable;idx;inp] row:aggTable idx; isFirst:0=row`numTrades; .[aggTable;;:;]'[(idx;)each aggCols;(",(";"sv string[aggCols],'":",/:aggExpression aggCols),")]}"; / ' init:{ tradeAgg::0#enlist[initWith]; currTime::00:00; currSyms::`u#`symbol$(); offset::0; rollCache:: `sym xkey update `u#sym from rollColumns#tradeAgg; }; roll:{[tm] if[currTime>tm; :init[]]; rollCache,::offset _ rollColumns#tradeAgg; offset::count tradeAgg; currSyms::`u#`$(); }; addSyms:{[syms] currSyms,::syms; `tradeAgg upsert @[count[syms]#enlist initWith;`sym`time,cols rc;:;(syms;currTime),(initWith cols rc)^value flip rc:rollCache ([] sym: syms)]; }; upd:{[tblName;data] updMinute[data] each exec distinct time from data:() xkey preprocess data}; updMinute:{[data;tm] if[tm<>currTime; roll tm; currTime::tm]; data:select from data where time=tm; if[count msyms:syms where not (syms:data`sym)in currSyms; addSyms msyms]; updateAgg[`tradeAgg;offset+currSyms?syms;data]; };
рдкрд░реАрдХреНрд╖рдг
рд╕реЗрд╡рд╛ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЪрд▓рд╛рдПрдВ (рдХреЛрдб рдХреЛ service.q рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбрд╛рд▓реЗрдВ) рдФрд░ init рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ:
q service.q тАУp 5566 q)init[]
рджреВрд╕рд░реЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ, рджреВрд╕рд░реА Q рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ:
h:hopen `:host:5566 h:hopen 5566
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡рд░реНрдгреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рдПрдВ - 10,000 рдЯреБрдХрдбрд╝реЗ рдФрд░ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝реЗрдВред рджреВрд╕рд░реЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ:
syms:`IBM`AAPL`GOOG,-9997?`8 rnd:{[n;t] ([] sym:n?syms; time:t+asc n#til 25; price:n?10f; size:n?10)}
рдореИрдВрдиреЗ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЙрдирдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рддреНрд░реЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рддреАрди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ред рд░реИрдВрдб рдлрд╝рдВрдХреНрд╢рди n рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕рдордп t рд╕реЗ t + 25 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рддрдХ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред
рдЕрдм рдЖрдк рд╕реЗрд╡рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдкрд╣рд▓реЗ рджрд╕ рдШрдВрдЯреЗ рдЬреЛрдбрд╝реЗрдВ):
{h (`upd;`trade;rnd[10000;x])} each `time$00:00 + til 60*10
рдЖрдк рдЙрд╕ рд╕реЗрд╡рд╛ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рддрд╛рд▓рд┐рдХрд╛ рдЕрдкрдбреЗрдЯ рдХрд░ рджреА рдЧрдИ рд╣реИ:
\c 25 200 select from tradeAgg where sym=`AAPL -20#select from tradeAgg where sym=`AAPL
рдкрд░рд┐рдгрд╛рдо:
sym|time|high|low|firstPrice|lastPrice|firstSize|lastSize|numTrades|volume|pvolume|turnover|avgPrice|avgSize|vwap|cumVolume --|--|--|--|--|-------------------------------- AAPL|09:27|9.258904|9.258904|9.258904|9.258904|8|8|1|8|9.258904|74.07123|9.258904|8|9.258904|2888 AAPL|09:28|9.068162|9.068162|9.068162|9.068162|7|7|1|7|9.068162|63.47713|9.068162|7|9.068162|2895 AAPL|09:31|4.680449|0.2011121|1.620827|0.2011121|1|5|4|14|9.569556|36.84342|2.392389|3.5|2.631673|2909 AAPL|09:33|2.812535|2.812535|2.812535|2.812535|6|6|1|6|2.812535|16.87521|2.812535|6|2.812535|2915 AAPL|09:34|5.099025|5.099025|5.099025|5.099025|4|4|1|4|5.099025|20.3961|5.099025|4|5.099025|2919
рд╣рдо рдЕрдм рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╕реЗрд╡рд╛ рдкреНрд░рддрд┐ рдорд┐рдирдЯ рдХрд┐рддрдирд╛ рдбреЗрдЯрд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИред рдореБрдЭреЗ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рдирд╛ рд╣реИ рдХрд┐ рд╣рдо 25 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреЗ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░рд╛рд▓ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рддрджрдиреБрд╕рд╛рд░, рдПрдХ рд╕реЗрд╡рд╛ рдХреЛ (рдФрд╕рддрди) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐ рдЕрдкрдбреЗрдЯ рдХрдо рд╕реЗ рдХрдо 20 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рдлрд┐рдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рджреВрд╕рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджрд░реНрдЬ рдХрд░реЗрдВ:
tm:10:00:00.000 stressTest:{[n] 1 string[tm]," "; times,::h ({st:.zT; upd[`trade;x]; .zT-st};rnd[n;tm]); tm+:25} start:{[n] times::(); do[4800;stressTest[n]]; -1 " "; `min`avg`med`max!(min times;avg times;med times;max times)}
4800 рджреЛ рдорд┐рдирдЯ рдХрд╛ рд╣реИред рдЖрдк рд╣рд░ 25 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ 1000 рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
start 1000
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд░рд┐рдгрд╛рдо рдкреНрд░рддрд┐ рдЕрдкрдбреЗрдЯ рдорд┐рд▓рд┐рд╕реЗрдХрдВрдб рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВ рддреБрд░рдВрдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдХрд░ 10.000 рдХрд░реВрдВрдЧрд╛:
start 10000
рдкрд░рд┐рдгрд╛рдо:
min| 00:00:00.004 avg| 9.191458 med| 9f max| 00:00:00.030
рдлрд┐рд░, рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ 24 рдорд┐рд▓рд┐рдпрди рд▓рд╛рдЗрдиреЗрдВ рдкреНрд░рддрд┐ рдорд┐рдирдЯ, 400 рд╣рдЬрд╛рд░ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд╣реИред 25 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рдХреЗ рд▓рд┐рдП, рдЕрдкрдбреЗрдЯ рдХреЗрд╡рд▓ 5 рдмрд╛рд░ рдзреАрдорд╛ рд╣реЛ рдЧрдпрд╛, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдорд┐рдирдЯ рдмрджрд▓рддреЗ рд╕рдордпред 100,000 рддрдХ рдмрдврд╝рд╛рдПрдБ:
start 100000
рдкрд░рд┐рдгрд╛рдо:
min| 00:00:00.013 avg| 25.11083 med| 24f max| 00:00:00.108 q)sum times 00:02:00.532
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реЗрд╡рд╛ рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рдирдХрд▓ рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдпрд╣ рдмрдЪрд╛рдП рд░рдЦрдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддреА рд╣реИред рдбреЗрдЯрд╛ рдХреА рдпрд╣ рд░рд╛рд╢рд┐ (рдкреНрд░рддрд┐ рдорд┐рдирдЯ 240 рдорд┐рд▓рд┐рдпрди) рдмрд╣реБрдд рдмрдбрд╝реА рд╣реИ, рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рд╕реЗрд╡рд╛ рдХреЗ рдХрдИ рдХреНрд▓реЛрди (рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рджрд░реНрдЬрдиреЛрдВ рдХреНрд▓реЛрди) рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдгреЛрдВ рдХреЗ рдХреЗрд╡рд▓ рднрд╛рдЧ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ рднреА, рдкрд░рд┐рдгрд╛рдо рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЧрдИ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╣реИ, рдЬреЛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛ рднрдВрдбрд╛рд░рдг рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИред
рдкреНрд░рд╢реНрди рдЙрда рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВ рд╕рдордп рдкреНрд░рддреНрдпреЗрдХ рдЕрджреНрдпрддрди рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЧреИрд░-рд░реИрдЦрд┐рдХ рд░реВрдк рд╕реЗ рдмрдврд╝рддрд╛ рд╣реИред рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдирд┐рдЪреЛрдбрд╝рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕реА рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдЕрдкрдбреЗрдЯрдЕрдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХреБрдЫ рдЕрдкрдбреЗрдЯ рдЖрдХрд╛рд░ (рд▓рдЧрднрдЧ 10.000) рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, рдЕрдкрдбреЗрдЯрдПрдЧ рдЕрдкрдиреА рдЫрдд рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рд╕рдордп рдЕрдкрдбреЗрдЯ рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдХреНрдпреВ рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╕реЗрд╡рд╛ рдРрд╕реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдкрдЪрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рдпрд╣ рдЬреЛрд░ рджреЗрддрд╛ рд╣реИ рдХрд┐ рд╕рд╣реА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдХрд┐рддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдПрдХ рдЕрдиреНрдп рдмрд┐рдВрджреБ рдореЗрдореЛрд░реА рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рд╕рд╣реА рднрдВрдбрд╛рд░рдг рд╣реИред рдпрджрд┐ рдбреЗрдЯрд╛ рдХреЛ рдХреЙрд▓рдо рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рд╕рдордп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдСрд░реНрдбрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬрд╝ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ рдЬреИрд╕реЗ рдХрд┐ рдЯреАрдПрд▓рдмреА рдХреИрд╢ рдорд┐рд╕ - рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдкрддреЗ рдХреЗ рдХреИрд╢ рдореЗрдВ рдореЗрдореЛрд░реА рдкреЗрдЬ рдХреЗ рдкрддреЗ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ред рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд▓рдЧрднрдЧ 30 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдмрд┐рдЦрд░реЗ рд╣реБрдП рдбреЗрдЯрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реЗрд╡рд╛ рдХреЛ рдХрдИ рдмрд╛рд░ рдзреАрдорд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рдХреЗрдбреАрдмреА + рдФрд░ рдХреНрдпреВ рдбреЗрдЯрд╛рдмреЗрд╕ рди рдХреЗрд╡рд▓ рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдФрд░ рдЪрдпрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрди рддрдХ рдЖрд╕рд╛рди рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдЙрди рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд╣реИрдВ рдЬреЛ рдПрдХ рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рднреА рд╕реИрдХрдбрд╝реЛрдВ рд▓рд╛рдЦреЛрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ / рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдбреЗрдЯрд╛ рдХреЛ рдкрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВред ред рдХреНрдпреВ рднрд╛рд╖рд╛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдмрд╣реБрдд рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рд╕реЗ рдФрд░ рдХреБрд╢рд▓рддрд╛рдкреВрд░реНрд╡рдХ рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдЕрдкрдиреЗ рд╡реЗрдХреНрдЯрд░ рдкреНрд░рдХреГрддрд┐, SQL рдмреЛрд▓реА рдХреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рджреБрднрд╛рд╖рд┐рдпрд╛ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рдлрд▓ рд╕реЗрдЯ рдХреЗ рдХрд╛рд░рдг рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдХреНрдпреВ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдЕрдиреНрдп рдЕрдиреВрдареА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрддреНрдпрдВрдд рд╕рд░рд▓ рдЖрдИрдкреАрд╕реА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЬреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХреНрдпреВ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕реАрдорд╛ рдХреЛ рдорд┐рдЯрд╛ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЗрдирдореЗрдВ рд╕реЗ рд╕реИрдХрдбрд╝реЛрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдПрдХ рдПрдХрд▓ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рджреБрдирд┐рдпрд╛ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рджрд░реНрдЬрдиреЛрдВ рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рд╕реНрдерд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред