ΠšΠ°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΡΡ‚ΠΈΠΊΠ΅ К ΠΈ ΠšΠ”Π‘+ јСзика Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ услугС Ρƒ Ρ€Π΅Π°Π»Π½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Ρƒ

О Ρ‚ΠΎΠΌΠ΅ ΡˆΡ‚Π° јС ΠšΠ”Π‘+ Π±Π°Π·Π°, К програмски јСзик, којС су ΡšΠΈΡ…ΠΎΠ²Π΅ прСдности ΠΈ ΠΌΠ°Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΠΈ Ρƒ ΠΌΠΎΠΌ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎΠΌ Π§Π»Π°Π½Π°ΠΊ ΠΈ ΡƒΠΊΡ€Π°Ρ‚ΠΊΠΎ Ρƒ ΡƒΠ²ΠΎΠ΄Ρƒ. Π£ Ρ‡Π»Π°Π½ΠΊΡƒ Ρ›Π΅ΠΌΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Ρ‚ΠΈ услугу Π½Π° К која Ρ›Π΅ ΠΎΠ±Ρ€Π°Π΄ΠΈΡ‚ΠΈ Π΄ΠΎΠ»Π°Π·Π½ΠΈ Ρ‚ΠΎΠΊ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈ ΠΈΠ·Ρ€Π°Ρ‡ΡƒΠ½Π°Ρ‚ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΡ˜Π΅ сваког ΠΌΠΈΠ½ΡƒΡ‚Π° Ρƒ Ρ€Π΅ΠΆΠΈΠΌΡƒ β€žΡ€Π΅Π°Π»Π½ΠΎΠ³ Π²Ρ€Π΅ΠΌΠ΅Π½Π°β€œ (Ρ‚Ρ˜. ΠΈΠΌΠ°Ρ›Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π° Π΄Π° свС ΠΈΠ·Ρ€Π°Ρ‡ΡƒΠ½Π° ΠΏΡ€Π΅ слСдСћСг Π΄Π΅Π»Π° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°). Π“Π»Π°Π²Π½Π° карактСристика К јС Π΄Π° јС Ρ‚ΠΎ вСкторски јСзик који Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π° Π΄Π° Ρ€Π°Π΄ΠΈΡ‚Π΅ Π½Π΅ са ΠΏΠΎΡ˜Π΅Π΄ΠΈΠ½Π°Ρ‡Π½ΠΈΠΌ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈΠΌΠ°, Π²Π΅Ρ› са ΡšΠΈΡ…ΠΎΠ²ΠΈΠΌ Π½ΠΈΠ·ΠΎΠ²ΠΈΠΌΠ°, Π½ΠΈΠ·ΠΎΠ²ΠΈΠΌΠ° Π½ΠΈΠ·ΠΎΠ²Π° ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ слоТСним ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈΠΌΠ°. ΠˆΠ΅Π·ΠΈΡ†ΠΈ ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ су К ΠΈ њСгови сродници К, Ј, ΠΠŸΠ› ΠΏΠΎΠ·Π½Π°Ρ‚ΠΈ су ΠΏΠΎ својој ΠΊΡ€Π°Ρ‚ΠΊΠΎΡ›ΠΈ. ЧСсто сС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌ који Π·Π°ΡƒΠ·ΠΈΠΌΠ° Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Π΅ΠΊΡ€Π°Π½Π° ΠΊΠΎΠ΄Π° Π½Π° ΠΏΠΎΠ·Π½Π°Ρ‚ΠΎΠΌ Ρ˜Π΅Π·ΠΈΠΊΡƒ ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ јС Јава ΠΌΠΎΠΆΠ΅ написати Π½Π° њима Ρƒ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Ρ€Π΅Π΄ΠΎΠ²Π°. Π’ΠΎ јС ΠΎΠ½ΠΎ ΡˆΡ‚ΠΎ ΠΆΠ΅Π»ΠΈΠΌ Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ Ρƒ ΠΎΠ²ΠΎΠΌ Ρ‡Π»Π°Π½ΠΊΡƒ.

ΠšΠ°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΡΡ‚ΠΈΠΊΠ΅ К ΠΈ ΠšΠ”Π‘+ јСзика Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ услугС Ρƒ Ρ€Π΅Π°Π»Π½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Ρƒ

Π£Π²ΠΎΠ΄

ΠšΠ”Π‘+ јС ΠΊΠΎΠ»ΠΎΠ½Π°Ρ€Π½Π° Π±Π°Π·Π° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° фокусирана Π½Π° Π²Π΅ΠΎΠΌΠ° Π²Π΅Π»ΠΈΠΊΠ΅ ΠΊΠΎΠ»ΠΈΡ‡ΠΈΠ½Π΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°, ΠΏΠΎΡ€Π΅Π΄Π°Π½ΠΈΡ… Π½Π° спСцифичан Π½Π°Ρ‡ΠΈΠ½ (ΠΏΡ€Π΅ свСга ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Ρƒ). ΠšΠΎΡ€ΠΈΡΡ‚ΠΈ сС првСнствСно Ρƒ Ρ„ΠΈΠ½Π°Π½ΡΠΈΡ˜ΡΠΊΠΈΠΌ ΠΈΠ½ΡΡ‚ΠΈΡ‚ΡƒΡ†ΠΈΡ˜Π°ΠΌΠ° - Π±Π°Π½ΠΊΠ°ΠΌΠ°, инвСстиционим Ρ„ΠΎΠ½Π΄ΠΎΠ²ΠΈΠΌΠ°, ΠΎΡΠΈΠ³ΡƒΡ€Π°Π²Π°Ρ˜ΡƒΡ›ΠΈΠΌ Π΄Ρ€ΡƒΡˆΡ‚Π²ΠΈΠΌΠ°. К јСзик јС ΠΈΠ½Ρ‚Π΅Ρ€Π½ΠΈ јСзик ΠšΠ”Π‘+ који Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π° Π΄Π° Сфикасно Ρ€Π°Π΄ΠΈΡ‚Π΅ са ΠΎΠ²ΠΈΠΌ ΠΏΠΎΠ΄Π°Ρ†ΠΈΠΌΠ°. К идСологија јС ΠΊΡ€Π°Ρ‚ΠΊΠΎΡ›Π° ΠΈ Сфикасност, Π΄ΠΎΠΊ сС Ρ˜Π°ΡΠ½ΠΎΡ›Π° ΠΆΡ€Ρ‚Π²ΡƒΡ˜Π΅. Π’ΠΎ сС ΠΎΠΏΡ€Π°Π²Π΄Π°Π²Π° Ρ‡ΠΈΡšΠ΅Π½ΠΈΡ†ΠΎΠΌ Π΄Π° Ρ›Π΅ вСкторски јСзик Ρƒ сваком ΡΠ»ΡƒΡ‡Π°Ρ˜Ρƒ Π±ΠΈΡ‚ΠΈ Ρ‚Π΅ΡˆΠΊΠΎ Ρ€Π°Π·ΡƒΠΌΡ™ΠΈΠ², Π° саТСтост ΠΈ богатство снимка ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π° Π²Π°ΠΌ Π΄Π° Π½Π° јСдном Π΅ΠΊΡ€Π°Π½Ρƒ Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π΅Ρ›ΠΈ Π΄Π΅ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°, ΡˆΡ‚ΠΎ Π³Π° Π½Π° ΠΊΡ€Π°Ρ˜Ρƒ Ρ‡ΠΈΠ½ΠΈ лакшим Π·Π° Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡšΠ΅.

Π£ ΠΎΠ²ΠΎΠΌ Ρ‡Π»Π°Π½ΠΊΡƒ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°ΠΌΠΎ ΠΏΡƒΠ½ΠΎΠΏΡ€Π°Π²Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌ Ρƒ К ΠΈ ΠΌΠΎΠΆΠ΄Π° бистС ΠΆΠ΅Π»Π΅Π»ΠΈ Π΄Π° Π³Π° испробатС. Π”Π° бистС Ρ‚ΠΎ ΡƒΡ€Π°Π΄ΠΈΠ»ΠΈ, Π±ΠΈΡ›Π΅ Π²Π°ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±Π°Π½ ΠΏΡ€Π°Π²ΠΈ К. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅ΡƒΠ·Π΅Ρ‚ΠΈ бСсплатну 32-Π±ΠΈΡ‚Π½Ρƒ Π²Π΅Ρ€Π·ΠΈΡ˜Ρƒ Π½Π° Π²Π΅Π± Π»ΠΎΠΊΠ°Ρ†ΠΈΡ˜ΠΈ компанијС ΠΊΠΊ – Π²Π²Π².ΠΊΠΊ.Ρ†ΠΎΠΌ. Π’Π°ΠΌΠΎ, Π°ΠΊΠΎ стС заинтСрСсовани, Π½Π°Ρ›ΠΈ Ρ›Π΅Ρ‚Π΅ Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π΅ ΠΎ књизи К К Π—Π° смртникС ΠΈ Ρ€Π°Π·Π½Π΅ Ρ‡Π»Π°Π½ΠΊΠ΅ Π½Π° ΠΎΠ²Ρƒ Ρ‚Π΅ΠΌΡƒ.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌ статСмСнт

ΠŸΠΎΡΡ‚ΠΎΡ˜ΠΈ ΠΈΠ·Π²ΠΎΡ€ који ΡˆΠ°Ρ™Π΅ Ρ‚Π°Π±Π΅Π»Ρƒ са ΠΏΠΎΠ΄Π°Ρ†ΠΈΠΌΠ° сваких 25 милисСкунди. ΠŸΠΎΡˆΡ‚ΠΎ сС ΠšΠ”Π‘+ користи првСнствСно Ρƒ Ρ„ΠΈΠ½Π°Π½ΡΠΈΡ˜Π°ΠΌΠ°, прСтпоставићСмо Π΄Π° сС Ρ€Π°Π΄ΠΈ ΠΎ Ρ‚Π°Π±Π΅Π»ΠΈ Ρ‚Ρ€Π°Π½ΡΠ°ΠΊΡ†ΠΈΡ˜Π° (Ρ‚Ρ€Π³ΠΎΠ²Π°), која ΠΈΠΌΠ° слСдСћС ΠΊΠΎΠ»ΠΎΠ½Π΅: Π²Ρ€Π΅ΠΌΠ΅ (Π²Ρ€Π΅ΠΌΠ΅ Ρƒ милисСкундама), сим (ΠΎΠ·Π½Π°ΠΊΠ° компанијС Π½Π° Π±Π΅Ρ€Π·ΠΈ - Π˜Π‘Πœ-, ΠΠΠŸΠ›,…), Ρ†Π΅Π½Π° (Ρ†Π΅Π½Π° ΠΏΠΎ којој су Π°ΠΊΡ†ΠΈΡ˜Π΅ ΠΊΡƒΠΏΡ™Π΅Π½Π΅), Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° (Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° Ρ‚Ρ€Π°Π½ΡΠ°ΠΊΡ†ΠΈΡ˜Π΅). Π˜Π½Ρ‚Π΅Ρ€Π²Π°Π» ΠΎΠ΄ 25 милисСкунди јС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΡ™Π°Π½, нијС ΠΏΡ€Π΅ΠΌΠ°Π»ΠΈ ΠΈ Π½Π΅ ΠΏΡ€Π΅Π΄ΡƒΠ³Π°Ρ‡Π°ΠΊ. ЊСгово присуство Π·Π½Π°Ρ‡ΠΈ Π΄Π° ΠΏΠΎΠ΄Π°Ρ†ΠΈ Π΄ΠΎΠ»Π°Π·Π΅ Ρƒ сСрвис Π²Π΅Ρ› Π±Π°Ρ„Π΅Ρ€ΠΎΠ²Π°Π½ΠΈ. Π‘ΠΈΠ»ΠΎ Π±ΠΈ Π»Π°ΠΊΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Ρ‚ΠΈ Π±Π°Ρ„Π΅Ρ€ΠΎΠ²Π°ΡšΠ΅ Π½Π° страни услугС, ΡƒΠΊΡ™ΡƒΡ‡ΡƒΡ˜ΡƒΡ›ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡ΠΊΠΎ Π±Π°Ρ„Π΅Ρ€ΠΎΠ²Π°ΡšΠ΅ Ρƒ зависности ΠΎΠ΄ Ρ‚Ρ€Π΅Π½ΡƒΡ‚Π½ΠΎΠ³ ΠΎΠΏΡ‚Π΅Ρ€Π΅Ρ›Π΅ΡšΠ°, Π°Π»ΠΈ Ρ€Π°Π΄ΠΈ Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎΡΡ‚ΠΈ, фокусираћСмо сС Π½Π° фиксни ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π».

Услуга ΠΌΠΎΡ€Π° Π΄Π° Π±Ρ€ΠΎΡ˜ΠΈ сваки ΠΌΠΈΠ½ΡƒΡ‚ Π·Π° сваки Π΄ΠΎΠ»Π°Π·Π½ΠΈ симбол ΠΈΠ· ΠΊΠΎΠ»ΠΎΠ½Π΅ сим скуп Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° Π°Π³Ρ€Π΅Π³ΠΈΡ€Π°ΡšΠ° - максимална Ρ†Π΅Π½Π°, просСчна Ρ†Π΅Π½Π°, Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° сумС, ΠΈΡ‚Π΄. корисна ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π°. Π Π°Π΄ΠΈ Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎΡΡ‚ΠΈ, прСтпоставићСмо Π΄Π° сС свС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ ΠΌΠΎΠ³Ρƒ ΠΈΠ·Ρ€Π°Ρ‡ΡƒΠ½Π°Ρ‚ΠΈ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΎ, Ρ‚Ρ˜. Π΄Π° бистС Π΄ΠΎΠ±ΠΈΠ»ΠΈ Π½ΠΎΠ²Ρƒ врСдност, Π΄ΠΎΠ²ΠΎΡ™Π½ΠΎ јС Π·Π½Π°Ρ‚ΠΈ Π΄Π²Π° Π±Ρ€ΠΎΡ˜Π° - стари ΠΈ Π΄ΠΎΠ»Π°Π·Π½Π΅ врСдности. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ ΠΌΠ°ΠΊ, просСк, Π·Π±ΠΈΡ€ ΠΈΠΌΠ°Ρ˜Ρƒ ΠΎΠ²ΠΎ ΡΠ²ΠΎΡ˜ΡΡ‚Π²ΠΎ, Π°Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° мСдијана Π½Π΅.

Π’Π°ΠΊΠΎΡ’Π΅ Ρ›Π΅ΠΌΠΎ прСтпоставити Π΄Π° јС Π΄ΠΎΠ»Π°Π·Π½ΠΈ Ρ‚ΠΎΠΊ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° врСмСнски распорСђСн. Ово Ρ›Π΅ Π½Π°ΠΌ Π΄Π°Ρ‚ΠΈ ΠΏΡ€ΠΈΠ»ΠΈΠΊΡƒ Π΄Π° Ρ€Π°Π΄ΠΈΠΌΠΎ само Ρƒ послСдњСм Ρ‚Ρ€Π΅Π½ΡƒΡ‚ΠΊΡƒ. Π£ пракси јС Π΄ΠΎΠ²ΠΎΡ™Π½ΠΎ Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Ρ€Π°Π΄ΠΈΡ‚Π΅ са Ρ‚Ρ€Π΅Π½ΡƒΡ‚Π½ΠΈΠΌ ΠΈ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΈΠΌ ΠΌΠΈΠ½ΡƒΡ‚Π°ΠΌΠ° Ρƒ ΡΠ»ΡƒΡ‡Π°Ρ˜Ρƒ Π΄Π° Π½Π΅ΠΊΠ° Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ° каснС. Π Π°Π΄ΠΈ Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎΡΡ‚ΠΈ, Π½Π΅Ρ›Π΅ΠΌΠΎ Ρ€Π°Π·ΠΌΠ°Ρ‚Ρ€Π°Ρ‚ΠΈ овај ΡΠ»ΡƒΡ‡Π°Ρ˜.

Π€ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΡ˜Π΅

ΠŸΠΎΡ‚Ρ€Π΅Π±Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΡ˜Π΅ су Π½Π°Π²Π΅Π΄Π΅Π½Π΅ Ρƒ наставку. Π£Π·Π΅ΠΎ сам ΡˆΡ‚ΠΎ јС вишС ΠΌΠΎΠ³ΡƒΡ›Π΅ Π΄Π° ΠΏΠΎΠ²Π΅Ρ›Π°ΠΌ ΠΎΠΏΡ‚Π΅Ρ€Π΅Ρ›Π΅ΡšΠ΅ услугС:

  • висока – максимална Ρ†Π΅Π½Π° – максимална Ρ†Π΅Π½Π° ΠΏΠΎ ΠΌΠΈΠ½ΡƒΡ‚Ρƒ.
  • ниска – ΠΌΠΈΠ½ Ρ†Π΅Π½Π° – ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° Ρ†Π΅Π½Π° ΠΏΠΎ ΠΌΠΈΠ½ΡƒΡ‚Ρƒ.
  • Ρ„ΠΈΡ€ΡΡ‚ΠŸΡ€ΠΈΡ†Π΅ – ΠΏΡ€Π²Π° Ρ†Π΅Π½Π° – ΠΏΡ€Π²Π° Ρ†Π΅Π½Π° ΠΏΠΎ ΠΌΠΈΠ½ΡƒΡ‚Ρƒ.
  • Π»Π°ΡΡ‚ΠŸΡ€ΠΈΡ†Π΅ – послСдња Ρ†Π΅Π½Π° – послСдња Ρ†Π΅Π½Π° ΠΏΠΎ ΠΌΠΈΠ½ΡƒΡ‚Ρƒ.
  • фирстБизС – ΠΏΡ€Π²Π° Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° – ΠΏΡ€Π²Π° Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° Ρ‚Ρ€Π³ΠΎΠ²ΠΈΠ½Π΅ Ρƒ ΠΌΠΈΠ½ΡƒΡ‚ΠΈ.
  • ластБизС – послСдња Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° β€” послСдња Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° Ρ‚Ρ€Π³ΠΎΠ²ΠΈΠ½Π΅ Π·Π° ΠΌΠΈΠ½ΡƒΡ‚.
  • нумВрадСс – Ρ†ΠΎΡƒΠ½Ρ‚ ΠΈ – Π±Ρ€ΠΎΡ˜ Ρ‚Ρ€Π³ΠΎΠ²ΠΈΠ½Π° Ρƒ ΠΌΠΈΠ½ΡƒΡ‚ΠΈ.
  • Π²ΠΎΠ»ΡƒΠΌΠ΅ – сума сизС – Π·Π±ΠΈΡ€ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° Ρ‚Ρ€Π³ΠΎΠ²ΠΈΠ½Π΅ Ρƒ ΠΌΠΈΠ½ΡƒΡ‚ΠΈ.
  • ΠΏΠ²ΠΎΠ»ΡƒΠΌΠ΅ – Π·Π±ΠΈΡ€ Ρ†Π΅Π½Π° – Π·Π±ΠΈΡ€ Ρ†Π΅Π½Π° ΠΏΠΎ ΠΌΠΈΠ½ΡƒΡ‚Ρƒ, ΠΏΠΎΡ‚Ρ€Π΅Π±Π°Π½ Π·Π° Π°Π²Π³ΠŸΡ€ΠΈΡ†Π΅.
  • – Π·Π±ΠΈΡ€Π½Π° Ρ†Π΅Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Ρ‚Π°*Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° – ΡƒΠΊΡƒΠΏΠ°Π½ ΠΎΠ±ΠΈΠΌ Ρ‚Ρ€Π°Π½ΡΠ°ΠΊΡ†ΠΈΡ˜Π° ΠΏΠΎ ΠΌΠΈΠ½ΡƒΡ‚Ρƒ.
  • Π°Π²Π³ΠŸΡ€ΠΈΡ†Π΅ – ΠΏΠ²ΠΎΠ»ΡƒΠΌΠ΅%нумВрадСс – просСчна Ρ†Π΅Π½Π° ΠΏΠΎ ΠΌΠΈΠ½ΡƒΡ‚Ρƒ.
  • Π°Π²Π³Π‘ΠΈΠ·Π΅ – Π²ΠΎΠ»ΡƒΠΌΠ΅%нумВрадСс – просСчна Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° Ρ‚Ρ€Π³ΠΎΠ²ΠΈΠ½Π΅ Ρƒ ΠΌΠΈΠ½ΡƒΡ‚ΠΈ.
  • Π²Π²Π°ΠΏ – ΠΎΠ±Ρ€Ρ‚%Π²ΠΎΠ»ΡƒΠΌΠ΅ – просСчна Ρ†Π΅Π½Π° ΠΏΠΎ ΠΌΠΈΠ½ΡƒΡ‚Ρƒ пондСрисана Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ΠΎΠΌ Ρ‚Ρ€Π°Π½ΡΠ°ΠΊΡ†ΠΈΡ˜Π΅.
  • Ρ†ΡƒΠΌΠ’ΠΎΠ»ΡƒΠΌΠ΅ – Π·Π±ΠΈΡ€Π½ΠΈ ΠΎΠ±ΠΈΠΌ – Π°ΠΊΡƒΠΌΡƒΠ»ΠΈΡ€Π°Π½Π° Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° Ρ‚Ρ€Π°Π½ΡΠ°ΠΊΡ†ΠΈΡ˜Π° Ρ‚ΠΎΠΊΠΎΠΌ Ρ‡ΠΈΡ‚Π°Π²ΠΎΠ³ Π²Ρ€Π΅ΠΌΠ΅Π½Π°.

Π₯ајдС ΠΎΠ΄ΠΌΠ°Ρ… Π΄Π° Ρ€Π°Π·Π³ΠΎΠ²Π°Ρ€Π°ΠΌΠΎ ΠΎ јСдној Π½Π΅ΠΎΡ‡ΠΈΠ³Π»Π΅Π΄Π½ΠΎΡ˜ Ρ‚Π°Ρ‡ΠΊΠΈ - ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Π»ΠΈΠ·ΡƒΡ˜Π΅ΠΌΠΎ ΠΎΠ²Π΅ ΠΊΠΎΠ»ΠΎΠ½Π΅ ΠΏΡ€Π²ΠΈ ΠΏΡƒΡ‚ ΠΈ Π·Π° сваки слСдСћи ΠΌΠΈΠ½ΡƒΡ‚. НСкС ΠΊΠΎΠ»ΠΎΠ½Π΅ Ρ‚ΠΈΠΏΠ° Ρ„ΠΈΡ€ΡΡ‚ΠŸΡ€ΠΈΡ†Π΅ ΠΌΠΎΡ€Π°Ρ˜Ρƒ Π±ΠΈΡ‚ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π΅ Π½Π° Π½ΡƒΠ»Π» сваки ΠΏΡƒΡ‚; ΡšΠΈΡ…ΠΎΠ²Π° врСдност јС нСдСфинисана. Π”Ρ€ΡƒΠ³ΠΈ Ρ‚ΠΈΠΏΠΎΠ²ΠΈ Π²ΠΎΠ»ΡƒΠΌΠ΅Π½Π° ΡƒΠ²Π΅ΠΊ ΠΌΠΎΡ€Π°Ρ˜Ρƒ Π±ΠΈΡ‚ΠΈ подСшСни Π½Π° 0. ΠŸΠΎΡΡ‚ΠΎΡ˜Π΅ ΠΈ ΠΊΠΎΠ»ΠΎΠ½Π΅ којС Π·Π°Ρ…Ρ‚Π΅Π²Π°Ρ˜Ρƒ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΎΠ²Π°Π½ΠΈ приступ – Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ†ΡƒΠΌΠ’ΠΎΠ»ΡƒΠΌΠ΅ сС ΠΌΠΎΡ€Π° ΠΊΠΎΠΏΠΈΡ€Π°Ρ‚ΠΈ ΠΈΠ· ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎΠ³ ΠΌΠΈΠ½ΡƒΡ‚Π°, Π° Π·Π° ΠΏΡ€Π²ΠΈ постављСн Π½Π° 0. ΠŸΠΎΠ΄Π΅ΡΠΈΡ‚Π΅ свС ΠΎΠ²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ користСћи ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ ΠΈΠ· Ρ€Π΅Ρ‡Π½ΠΈΠΊΠ° Ρ‚ΠΈΠΏ (Π°Π½Π°Π»ΠΎΠ³Π½ΠΎ запису):

// list ! list – ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, 0n – float null, 0N – long null, `sym – Ρ‚ΠΈΠΏ символ, `sym1`sym2 – список символов
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; // список всСх вычисляСмых ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ, reverse объяснСн Π½ΠΈΠΆΠ΅

Π”ΠΎΠ΄Π°ΠΎ сам сим ΠΈ Π²Ρ€Π΅ΠΌΠ΅ Ρƒ Ρ€Π΅Ρ‡Π½ΠΈΠΊ Ρ€Π°Π΄ΠΈ погодности, сада јС ΠΈΠ½ΠΈΡ‚Π’ΠΈΡ‚Ρ… Π³ΠΎΡ‚ΠΎΠ²Π° линија ΠΈΠ· ΠΊΠΎΠ½Π°Ρ‡Π½Π΅ Π°Π³Ρ€Π΅Π³ΠΈΡ€Π°Π½Π΅ Ρ‚Π°Π±Π΅Π»Π΅, Π³Π΄Π΅ ΠΎΡΡ‚Π°Ρ˜Π΅ Π΄Π° сС подСси Ρ‚Π°Ρ‡Π°Π½ сим ΠΈ Π²Ρ€Π΅ΠΌΠ΅. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π³Π° користити Π·Π° додавањС Π½ΠΎΠ²ΠΈΡ… Ρ€Π΅Π΄ΠΎΠ²Π° Ρƒ Ρ‚Π°Π±Π΅Π»Ρƒ.

Π‘ΠΈΡ›Π΅ Π½Π°ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ аггЦолс ΠΊΠ°Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΠΌΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Ρƒ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΡ˜Π΅. Листа ΠΌΠΎΡ€Π° Π±ΠΈΡ‚ΠΈ ΠΎΠ±Ρ€Π½ΡƒΡ‚Π° Π·Π±ΠΎΠ³ рСдослСда којим сС ΠΏΡ€ΠΎΡ†Π΅ΡšΡƒΡ˜Ρƒ ΠΈΠ·Ρ€Π°Π·ΠΈ Ρƒ К (с дСсна Π½Π° Π»Π΅Π²ΠΎ). Π¦ΠΈΡ™ јС Π΄Π° сС ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ Π΄Π° ΠΏΡ€ΠΎΡ€Π°Ρ‡ΡƒΠ½ ΠΈΠ΄Π΅ ΠΎΠ΄ високог Π΄ΠΎ Ρ†ΡƒΠΌΠ’ΠΎΠ»ΡƒΠΌΠ΅, ΠΏΠΎΡˆΡ‚ΠΎ Π½Π΅ΠΊΠ΅ ΠΊΠΎΠ»ΠΎΠ½Π΅ зависС ΠΎΠ΄ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΈΡ….

КолонС којС Ρ‚Ρ€Π΅Π±Π° ΠΊΠΎΠΏΠΈΡ€Π°Ρ‚ΠΈ Ρƒ Π½ΠΎΠ²ΠΈ ΠΌΠΈΠ½ΡƒΡ‚ ΠΎΠ΄ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎΠ³, ΠΊΠΎΠ»ΠΎΠ½Π° сим сС додајС Ρ€Π°Π΄ΠΈ погодности:

rollColumns:`sym`cumVolume;

Π₯ајдС сада Π΄Π° ΠΏΠΎΠ΄Π΅Π»ΠΈΠΌΠΎ ΠΊΠΎΠ»ΠΎΠ½Π΅ Ρƒ Π³Ρ€ΡƒΠΏΠ΅ ΠΏΡ€Π΅ΠΌΠ° Ρ‚ΠΎΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС Π°ΠΆΡƒΡ€ΠΈΡ€Π°Ρ˜Ρƒ. ΠœΠΎΠ³Ρƒ сС Ρ€Π°Π·Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΠΈ Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ°:

  1. Акумулатори (Π·Π°ΠΏΡ€Π΅ΠΌΠΈΠ½Π°, ΠΏΡ€ΠΎΠΌΠ΅Ρ‚,..) – ΠΌΠΎΡ€Π°ΠΌΠΎ Π΄ΠΎΠ΄Π°Ρ‚ΠΈ ΡƒΠ»Π°Π·Π½Ρƒ врСдност ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎΡ˜.
  2. Π‘Π° посСбном Ρ‚Π°Ρ‡ΠΊΠΎΠΌ (висока, ниска, ..) – ΠΏΡ€Π²Π° врСдност Ρƒ ΠΌΠΈΠ½ΡƒΡ‚ΠΈ сС ΡƒΠ·ΠΈΠΌΠ° ΠΈΠ· Π΄ΠΎΠ»Π°Π·Π½ΠΈΡ… ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°, остатак сС ΠΈΠ·Ρ€Π°Ρ‡ΡƒΠ½Π°Π²Π° ΠΏΠΎΠΌΠΎΡ›Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅.
  3. ΠžΠ΄ΠΌΠΎΡ€ΠΈ сС. Π£Π²Π΅ΠΊ сС ΠΈΠ·Ρ€Π°Ρ‡ΡƒΠ½Π°Π²Π° ΠΏΠΎΠΌΠΎΡ›Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅.

Π₯ајдС Π΄Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡˆΠ΅ΠΌΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²Π΅ Π·Π° ΠΎΠ²Π΅ класС:

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"); // each это функция map Π² Q для ΠΎΠ΄Π½ΠΎΠ³ΠΎ списка
preprocess:?[;();`sym`time!`sym`time.minute;selExpression];

Π Π°Π΄ΠΈ Ρ˜Π°ΡΠ½ΠΎΡ›Π΅, користио сам Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Ρƒ парсС, која ΠΏΡ€Π΅Ρ‚Π²Π°Ρ€Π° стринг са К ΠΈΠ·Ρ€Π°Π·ΠΎΠΌ Ρƒ врСдност која сС ΠΌΠΎΠΆΠ΅ ΠΏΡ€Π΅Π½Π΅Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜ΠΈ Π΅Π²Π°Π» ΠΈ која јС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π° Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜ΠΈ сСлСцт. Π’Π°ΠΊΠΎΡ’Π΅ ΠΈΠΌΠ°Ρ˜Ρ‚Π΅ Π½Π° ΡƒΠΌΡƒ Π΄Π° јС прСдпроцСс дСфинисан ΠΊΠ°ΠΎ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ†ΠΈΡ˜Π° (Ρ‚Ρ˜. Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° са Π΄Π΅Π»ΠΈΠΌΠΈΡ‡Π½ΠΎ дСфинисаним Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈΠΌΠ°) Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ Π·Π° ΠΈΠ·Π±ΠΎΡ€, јСдан Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ (Ρ‚Π°Π±Π΅Π»Π°) Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ˜Π΅. Ако ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ прСтпроцСс Π½Π° Ρ‚Π°Π±Π΅Π»Ρƒ, Π΄ΠΎΠ±ΠΈΡ›Π΅ΠΌΠΎ компрСсовану Ρ‚Π°Π±Π΅Π»Ρƒ.

Π”Ρ€ΡƒΠ³Π° Ρ„Π°Π·Π° јС Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ΅ Π·Π±ΠΈΡ€Π½Π΅ Ρ‚Π°Π±Π΅Π»Π΅. Π₯ајдС Π΄Π° ΠΏΡ€Π²ΠΎ напишСмо Π°Π»Π³ΠΎΡ€ΠΈΡ‚Π°ΠΌ Ρƒ псСудокоду:

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;
// .[target;(idx0;idx1;..);function;argument] ~ target[idx 0;idx 1;…]: function[target[idx 0;idx 1;…];argument], Π² нашСм случаС функция – это присваиваниС
.[aggTable;(idx;aggCols);:;flip (row[`high] | inputTable`high;row[`volume] + inputTable`volume;…)];

НаТалост, Π΄Π° бистС Π΄ΠΎΠ΄Π΅Π»ΠΈΠ»ΠΈ Ρ‚Π°Π±Π΅Π»ΠΈ, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π° Π²Π°ΠΌ јС листа Ρ€Π΅Π΄ΠΎΠ²Π°, Π° Π½Π΅ ΠΊΠΎΠ»ΠΎΠ½Π°, ΠΈ ΠΌΠΎΡ€Π°Ρ‚Π΅ Π΄Π° Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΡƒΡ˜Π΅Ρ‚Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ (листу ΠΊΠΎΠ»ΠΎΠ½Π° Ρƒ листу Ρ€Π΅Π΄ΠΎΠ²Π°) користСћи Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Ρƒ Ρ„Π»ΠΈΠΏ. Ово јС скупо Π·Π° Π²Π΅Π»ΠΈΠΊΡƒ Ρ‚Π°Π±Π΅Π»Ρƒ, ΠΏΠ° умСсто Ρ‚ΠΎΠ³Π° ΠΏΡ€ΠΈΠΌΠ΅ΡšΡƒΡ˜Π΅ΠΌΠΎ Π³Π΅Π½Π΅Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΈ Π·Π°Π΄Π°Ρ‚Π°ΠΊ Π½Π° сваку ΠΊΠΎΠ»ΠΎΠ½Ρƒ посСбно, користСћи Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Ρƒ ΠΌΠ°ΠΏΠ΅ (која ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΊΠ°ΠΎ апостроф):

.[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, ΠΎΠ½Π΄Π° јС врСдност ΠΏΡ€Π²Π°. К ΠΈΠΌΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Ρƒ ΠΈΠ·Π±ΠΎΡ€Π° - ?[Π‘ΠΎΠΎΠ»Π΅Π°Π½ лист;лист1;лист2] - која Π±ΠΈΡ€Π° врСдност са листС 1 ΠΈΠ»ΠΈ 2 Ρƒ зависности ΠΎΠ΄ услова Ρƒ ΠΏΡ€Π²ΠΎΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρƒ:

// high -> ?[isFirst;inp`high;row[`high]|inp`high]
// @ - Ρ‚ΠΎΠΆΠ΅ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎΠ΅ присваиваниС для случая ΠΊΠΎΠ³Π΄Π° индСкс Π½Π΅Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠΉ
@[`aggExpression;specialCols;{[x;y]"?[isFirst;inp`",y,";",x,"]"};string specialCols];

ОвдС сам Π½Π°Π·Π²Π°ΠΎ Π³Π΅Π½Π΅Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΈ Π·Π°Π΄Π°Ρ‚Π°ΠΊ са својом Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜ΠΎΠΌ (ΠΈΠ·Ρ€Π°Π· Ρƒ витичастим Π·Π°Π³Ρ€Π°Π΄Π°ΠΌΠ°). ΠŸΡ€ΠΈΠΌΠ° Ρ‚Ρ€Π΅Π½ΡƒΡ‚Π½Ρƒ врСдност (ΠΏΡ€Π²ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚) ΠΈ Π΄ΠΎΠ΄Π°Ρ‚Π½ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, који ΠΏΡ€ΠΎΡΠ»Π΅Ρ’ΡƒΡ˜Π΅ΠΌ Ρƒ 4. ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Π°Ρ€.

Π₯ајдС Π΄Π° Π΄ΠΎΠ΄Π°ΠΌΠΎ Π±Π°Ρ‚Π΅Ρ€ΠΈΡ˜ΡΠΊΠ΅ Π·Π²ΡƒΡ‡Π½ΠΈΠΊΠ΅ одвојСно, ΠΏΠΎΡˆΡ‚ΠΎ јС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° иста Π·Π° ΡšΠΈΡ…:

// volume -> row[`volume]+inp`volume
aggExpression[accumulatorCols]:{"row[`",x,"]+inp`",x } each string accumulatorCols;

Ово јС Π½ΠΎΡ€ΠΌΠ°Π»Π°Π½ Π·Π°Π΄Π°Ρ‚Π°ΠΊ ΠΏΠΎ К стандардима, Π°Π»ΠΈ ја Π΄ΠΎΠ΄Π΅Ρ™ΡƒΡ˜Π΅ΠΌ листу врСдности одјСдном. На ΠΊΡ€Π°Ρ˜Ρƒ, Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌΠΎ Π³Π»Π°Π²Π½Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Ρƒ:

// ":",/:aggExprs ~ map[{":",x};aggExpr] => ":row[`high]|inp`high" присвоим вычислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ зависят ΠΎΡ‚ ΡƒΠΆΠ΅ вычислСнных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
// string[cols],'exprs ~ map[,;string[cols];exprs] => "high:row[`high]|inp`high" Π·Π°Π²Π΅Ρ€ΡˆΠΈΠΌ созданиС присваивания. ,’ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ map[concat]
// ";" sv exprs – String from Vector (sv), соСдиняСт список строк вставляя β€œ;” посрСдинС
updateAgg:value "{[aggTable;idx;inp] row:aggTable idx; isFirst_0=row`numTrades; .[aggTable;;:;]'[(idx;)each aggCols;(",(";"sv string[aggCols],'":",/:aggExpression aggCols),")]}";

Π‘Π° ΠΎΠ²ΠΈΠΌ ΠΈΠ·Ρ€Π°Π·ΠΎΠΌ, Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡ΠΊΠΈ ΠΊΡ€Π΅ΠΈΡ€Π°ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Ρƒ ΠΈΠ· стринга који садрТи ΠΈΠ·Ρ€Π°Π· који сам Π΄Π°ΠΎ Π³ΠΎΡ€Π΅. Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Ρ›Π΅ ΠΈΠ·Π³Π»Π΅Π΄Π°Ρ‚ΠΈ ΠΎΠ²Π°ΠΊΠΎ:

{[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:{
  tradeAgg:: 0#enlist[initWith]; // создаСм ΠΏΡƒΡΡ‚ΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, enlist ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π° 0# ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²Π·ΡΡ‚ΡŒ 0 элСмСнтов ΠΈΠ· Π½Π΅Π΅
  currTime::00:00; // Π½Π°Ρ‡Π½Π΅ΠΌ с 0, :: ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ присваиваниС Π² Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ
  currSyms::`u#`symbol$(); // `u# - ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список Π² Π΄Π΅Ρ€Π΅Π²ΠΎ, для ускорСния поиска элСмСнтов
  offset::0; // индСкс Π² tradeAgg, Π³Π΄Π΅ начинаСтся тСкущая ΠΌΠΈΠ½ΡƒΡ‚Π° 
  rollCache:: `sym xkey update `u#sym from rollColumns#tradeAgg; // кэш для послСдних Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ roll ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ, Ρ‚Π°Π±Π»ΠΈΡ†Π° с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ sym
 }

Π’Π°ΠΊΠΎΡ’Π΅ Ρ›Π΅ΠΌΠΎ дСфинисати Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Ρƒ Ρ€ΠΎΠ»Π», која Ρ›Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚ΠΈ Ρ‚Ρ€Π΅Π½ΡƒΡ‚Π½ΠΈ ΠΌΠΈΠ½ΡƒΡ‚:

roll:{[tm]
  if[currTime>tm; :init[]]; // Ссли ΠΏΠ΅Ρ€Π΅Π²Π°Π»ΠΈΠ»ΠΈ Π·Π° ΠΏΠΎΠ»Π½ΠΎΡ‡ΡŒ, Ρ‚ΠΎ просто Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ init
  rollCache,::offset _ rollColumns#tradeAgg; // ΠΎΠ±Π½ΠΎΠ²ΠΈΠΌ кэш – Π²Π·ΡΡ‚ΡŒ roll ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ ΠΈΠ· aggTable, ΠΎΠ±Ρ€Π΅Π·Π°Ρ‚ΡŒ, Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² rollCache
  offset::count tradeAgg;
  currSyms::`u#`$();
 }

Π‘ΠΈΡ›Π΅ Π½Π°ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° Π·Π° додавањС Π½ΠΎΠ²ΠΈΡ… Π·Π½Π°ΠΊΠΎΠ²Π°:

addSyms:{[syms]
  currSyms,::syms; // Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² список извСстных
  // Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ sym, time ΠΈ rollColumns воспользовавшись ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹ΠΌ присваиваниСм.
  // Ѐункция ^ подставляСт значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для roll ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ, Ссли символа Π½Π΅Ρ‚ Π² кэшС. value flip table Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.
  `tradeAgg upsert @[count[syms]#enlist initWith;`sym`time,cols rc;:;(syms;currTime), (initWith cols rc)^value flip rc:rollCache ([] sym: syms)];
 }

И Π½Π° ΠΊΡ€Π°Ρ˜Ρƒ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° ΡƒΠΏΠ΄ (Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΈ Π½Π°Π·ΠΈΠ² Π·Π° ΠΎΠ²Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Ρƒ Π·Π° К услугС), ΠΊΠΎΡ˜Ρƒ ΠΊΠ»ΠΈΡ˜Π΅Π½Ρ‚ ΠΏΠΎΠ·ΠΈΠ²Π° Π΄Π° Π±ΠΈ Π΄ΠΎΠ΄Π°ΠΎ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅:

upd:{[tblName;data] // tblName Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, Π½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ сСрвис ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ нСсколько Ρ‚Π°Π±Π»ΠΈΡ† 
  tm:exec distinct time from data:() xkey preprocess data; // preprocess & calc time
  updMinute[data] each tm; // Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΄Π°Π½Π½Ρ‹Π΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠΈΠ½ΡƒΡ‚Ρ‹
};
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]; // ΠΎΠ±Π½ΠΎΠ²ΠΈΠΌ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. Ѐункция ? ΠΈΡ‰Π΅Ρ‚ индСкс элСмСнтов списка справа Π² спискС слСва.
 };

Π’ΠΎ јС свС. Π•Π²ΠΎ ΠΊΠΎΠΌΠΏΠ»Π΅Ρ‚Π½ΠΎΠ³ ΠΊΠΎΠ΄Π° нашС услугС, ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ јС ΠΎΠ±Π΅Ρ›Π°Π½ΠΎ, само Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Ρ€Π΅Π΄ΠΎΠ²Π°:

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];
 };

Π’Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅

Π₯ајдС Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌΠΎ пСрформансС услугС. Π”Π° бисмо Ρ‚ΠΎ ΡƒΡ€Π°Π΄ΠΈΠ»ΠΈ, ΠΏΠΎΠΊΡ€Π΅Π½ΠΈΠΌΠΎ Π³Π° Ρƒ посСбном процСсу (ставитС ΠΊΠΎΠ΄ Ρƒ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ сСрвицС.ΠΊ) ΠΈ ΠΏΠΎΠ·ΠΎΠ²ΠΈΠΌΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Ρƒ ΠΈΠ½ΠΈΡ‚:

q service.q –p 5566

q)init[]

Π£ Π΄Ρ€ΡƒΠ³ΠΎΡ˜ ΠΊΠΎΠ½Π·ΠΎΠ»ΠΈ ΠΏΠΎΠΊΡ€Π΅Π½ΠΈΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈ К процСс ΠΈ ΠΏΠΎΠ²Π΅ΠΆΠΈΡ‚Π΅ сС са ΠΏΡ€Π²ΠΈΠΌ:

h:hopen `:host:5566
h:hopen 5566 // Ссли ΠΎΠ±Π° Π½Π° ΠΎΠ΄Π½ΠΎΠΌ хостС

ΠŸΡ€Π²ΠΎ, Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌΠΎ листу симбола - 10000 ΠΊΠΎΠΌΠ°Π΄Π° ΠΈ Π΄ΠΎΠ΄Π°ΠΌΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Ρƒ Π·Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ насумичнС Ρ‚Π°Π±Π΅Π»Π΅. Π£ Π΄Ρ€ΡƒΠ³ΠΎΡ˜ ΠΊΠΎΠ½Π·ΠΎΠ»ΠΈ:

syms:`IBM`AAPL`GOOG,-9997?`8
rnd:{[n;t] ([] sym:n?syms; time:t+asc n#til 25; price:n?10f; size:n?10)}

Π”ΠΎΠ΄Π°ΠΎ сам Ρ‚Ρ€ΠΈ ΠΏΡ€Π°Π²Π° симбола Π½Π° листу ΠΊΠ°ΠΊΠΎ Π±ΠΈΡ… ΠΈΡ… лакшС Ρ‚Ρ€Π°ΠΆΠΈΠΎ Ρƒ Ρ‚Π°Π±Π΅Π»ΠΈ. Π€ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° Ρ€Π½Π΄ ΠΊΡ€Π΅ΠΈΡ€Π° ΡΠ»ΡƒΡ‡Π°Ρ˜Π½Ρƒ Ρ‚Π°Π±Π΅Π»Ρƒ са Π½ Ρ€Π΅Π΄ΠΎΠ²Π°, Π³Π΄Π΅ Π²Ρ€Π΅ΠΌΠ΅ Π²Π°Ρ€ΠΈΡ€Π° ΠΎΠ΄ Ρ‚ Π΄ΠΎ Ρ‚+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:.z.T; upd[`trade;x]; .z.T-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 јС Π΄Π²Π° ΠΌΠΈΠ½ΡƒΡ‚Π°. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΊΡƒΡˆΠ°Ρ‚ΠΈ ΠΏΡ€Π²ΠΎ Π΄Π° ΠΏΠΎΠΊΡ€Π΅Π½Π΅Ρ‚Π΅ 1000 Ρ€Π΅Π΄ΠΎΠ²Π° сваких 25 милисСкунди:

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 ΠΏΡƒΡ‚Π° Π΄ΡƒΠΆΠ΅ Π°ΠΊΠΎ јС Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Π° Π°ΠΊΠΎ су ΠΏΠΎΠ΄Π°Ρ†ΠΈ Ρ€Π°Π·Π±Π°Ρ†Π°Π½ΠΈ, ΠΌΠΎΠΆΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΏΡƒΡ‚Π° успорити услугу.

Π—Π°ΠΊΡ™ΡƒΡ‡Π°ΠΊ

Π£ ΠΎΠ²ΠΎΠΌ Ρ‡Π»Π°Π½ΠΊΡƒ сам ΠΏΠΎΠΊΠ°Π·Π°ΠΎ Π΄Π° су ΠšΠ”Π‘+ ΠΈ К Π±Π°Π·Π° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΏΠΎΠ³ΠΎΠ΄Π½Π΅ Π½Π΅ само Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ΡšΠ΅ Π²Π΅Π»ΠΈΠΊΠΈΡ… ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈ Π»Π°ΠΊ приступ њима ΠΏΡƒΡ‚Π΅ΠΌ ΡΠ΅Π»Π΅ΠΊΡ†ΠΈΡ˜Π΅, Π²Π΅Ρ› ΠΈ Π·Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ услуга ΠΎΠ±Ρ€Π°Π΄Π΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° којС су способнС Π΄Π° ΠΎΠ±Ρ€Π°Ρ’ΡƒΡ˜Ρƒ стотинС ΠΌΠΈΠ»ΠΈΠΎΠ½Π° Ρ€Π΅Π΄ΠΎΠ²Π°/Π³ΠΈΠ³Π°Π±Π°Ρ˜Ρ‚Π° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Ρ‡Π°ΠΊ ΠΈΡƒ јСдан јСдини К процСс. Π‘Π°ΠΌ К јСзик ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π° ΠΈΠ·ΡƒΠ·Π΅Ρ‚Π½ΠΎ ΠΊΠΎΠ½Ρ†ΠΈΠ·Π½Ρƒ ΠΈ Сфикасну ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Ρƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚Π°ΠΌΠ° Π²Π΅Π·Π°Π½ΠΈΡ… Π·Π° ΠΎΠ±Ρ€Π°Π΄Ρƒ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Π·Π±ΠΎΠ³ својС вСкторскС ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅, ΡƒΠ³Ρ€Π°Ρ’Π΅Π½ΠΎΠ³ Ρ‚ΡƒΠΌΠ°Ρ‡Π° Π‘ΠšΠ› Π΄ΠΈΡ˜Π°Π»Π΅ΠΊΡ‚Π° ΠΈ Π²Π΅ΠΎΠΌΠ° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ скупа Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡ΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‚ΠΈΡ›Ρƒ Π΄Π° јС Π³ΠΎΡ€Π΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ само Π΄Π΅ΠΎ ΠΎΠ½ΠΎΠ³Π° ΡˆΡ‚ΠΎ К ΠΌΠΎΠΆΠ΅ Π΄Π° ΡƒΡ€Π°Π΄ΠΈ, ΠΈΠΌΠ° ΠΈ Π΄Ρ€ΡƒΠ³Π΅ Ρ˜Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π΅ карактСристикС. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ·ΡƒΠ·Π΅Ρ‚Π½ΠΎ Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π°Π½ ИПЦ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» који Π±Ρ€ΠΈΡˆΠ΅ Π³Ρ€Π°Π½ΠΈΡ†Ρƒ ΠΈΠ·ΠΌΠ΅Ρ’Ρƒ ΠΏΠΎΡ˜Π΅Π΄ΠΈΠ½Π°Ρ‡Π½ΠΈΡ… К процСса ΠΈ ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π° Π²Π°ΠΌ Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΡƒΡ˜Π΅Ρ‚Π΅ стотинС ΠΎΠ²ΠΈΡ… процСса Ρƒ Ρ˜Π΅Π΄Π½Ρƒ ΠΌΡ€Π΅ΠΆΡƒ, која сС ΠΌΠΎΠΆΠ΅ Π½Π°Π»Π°Π·ΠΈΡ‚ΠΈ Π½Π° дСсСтинама сСрвСра Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΠΈΠΌ Π΄Π΅Π»ΠΎΠ²ΠΈΠΌΠ° свСта.

Π˜Π·Π²ΠΎΡ€: Π²Π²Π².Ρ…Π°Π±Ρ€.Ρ†ΠΎΠΌ

Π”ΠΎΠ΄Π°Ρ˜ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€