āĻāĻ•āϟāĻŋ āϰāĻŋāϝāĻŧ⧇āϞ-āϟāĻžāχāĻŽ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϰ āωāĻĻāĻžāĻšāϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ Q āĻāĻŦāĻ‚ KDB+ āĻ­āĻžāώāĻžāϰ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ

āϕ⧇āĻĄāĻŋāĻŦāĻŋ+ āĻŦ⧇āϏ, āĻ•āĻŋāω āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāĻŋāĻ‚ āĻ­āĻžāώāĻž āϕ⧀, āϤāĻžāĻĻ⧇āϰ āĻļāĻ•ā§āϤāĻŋ āĻāĻŦāĻ‚ āĻĻ⧁āĻ°ā§āĻŦāϞāϤāĻžāϗ⧁āϞāĻŋ āϕ⧀ āϤāĻž āφāĻŽāĻžāϰ āφāϗ⧇āϰ āϞ⧇āĻ–āĻžāϝāĻŧ āφāĻĒāύāĻŋ āĻĒāĻĄāĻŧāϤ⧇ āĻĒāĻžāϰ⧇āύ āĻĒā§āϰāĻŦāĻ¨ā§āϧ āĻāĻŦāĻ‚ āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤāĻ­āĻžāĻŦ⧇ āĻ­ā§‚āĻŽāĻŋāĻ•āĻž. āύāĻŋāĻŦāĻ¨ā§āϧ⧇, āφāĻŽāϰāĻž Q-āϤ⧇ āĻāĻ•āϟāĻŋ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻŦ āϝāĻž āχāύāĻ•āĻžāĻŽāĻŋāĻ‚ āĻĄā§‡āϟāĻž āĻ¸ā§āĻŸā§āϰāĻŋāĻŽ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻ•āϰāĻŦ⧇ āĻāĻŦāĻ‚ "āϰāĻŋāϝāĻŧ⧇āϞ āϟāĻžāχāĻŽ" āĻŽā§‹āĻĄā§‡ āĻĒā§āϰāϤāĻŋ āĻŽāĻŋāύāĻŋāĻŸā§‡ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻāĻ•āĻ¤ā§āϰ⧀āĻ•āϰāĻŖ āĻĢāĻžāĻ‚āĻļāύ āĻ—āĻŖāύāĻž āĻ•āϰāĻŦ⧇ (āĻ…āĻ°ā§āĻĨāĻžā§Ž, āĻĄā§‡āϟāĻžāϰ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻ…āĻ‚āĻļ⧇āϰ āφāϗ⧇ āϏāĻŦāĻ•āĻŋāϛ⧁ āĻ—āĻŖāύāĻž āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻĨāĻžāĻ•āĻŦ⧇)āĨ¤ Q-āĻāϰ āĻĒā§āϰāϧāĻžāύ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āĻšāϞ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āϭ⧇āĻ•ā§āϟāϰ āĻ­āĻžāώāĻž āϝāĻž āφāĻĒāύāĻžāϕ⧇ āĻāĻ•āĻ• āĻŦāĻ¸ā§āϤ⧁āϰ āϏāĻžāĻĨ⧇ āύāϝāĻŧ, āϤāĻžāĻĻ⧇āϰ āĻ…ā§āϝāĻžāϰ⧇, āĻ…ā§āϝāĻžāϰ⧇ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āϜāϟāĻŋāϞ āĻŦāĻ¸ā§āϤ⧁āϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧāĨ¤ Q āĻāĻŦāĻ‚ āĻāϰ āφāĻ¤ā§āĻŽā§€āϝāĻŧ K, ​​J, APL āĻāϰ āĻŽāϤ⧋ āĻ­āĻžāώāĻžāϗ⧁āϞāĻŋ āϤāĻžāĻĻ⧇āϰ āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤāϤāĻžāϰ āϜāĻ¨ā§āϝ āĻŦāĻŋāĻ–ā§āϝāĻžāϤāĨ¤ āĻĒā§āϰāĻžāϝāĻŧāĻļāχ, āĻāĻ•āϟāĻŋ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽ āϝāĻž āϜāĻžāĻ­āĻžāϰ āĻŽāϤ⧋ āĻāĻ•āϟāĻŋ āĻĒāϰāĻŋāϚāĻŋāϤ āĻ­āĻžāώāĻžāϝāĻŧ āϕ⧋āĻĄā§‡āϰ āĻŦ⧇āĻļ āĻ•āϝāĻŧ⧇āĻ•āϟāĻŋ āĻ¸ā§āĻ•ā§āϰāĻŋāύ āύ⧇āϝāĻŧ āϏ⧇āϗ⧁āϞāĻŋāϤ⧇ āĻ•āϝāĻŧ⧇āĻ•āϟāĻŋ āϞāĻžāχāύ⧇ āϞ⧇āĻ–āĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻāχ āφāĻŽāĻŋ āĻāχ āύāĻŋāĻŦāĻ¨ā§āϧ⧇ āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ āĻ•āϰāϤ⧇ āϚāĻžāύ āĻ•āĻŋ.

āĻāĻ•āϟāĻŋ āϰāĻŋāϝāĻŧ⧇āϞ-āϟāĻžāχāĻŽ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϰ āωāĻĻāĻžāĻšāϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ Q āĻāĻŦāĻ‚ KDB+ āĻ­āĻžāώāĻžāϰ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ

āĻ­ā§‚āĻŽāĻŋāĻ•āĻž

KDB+ āĻšāϞ āĻāĻ•āϟāĻŋ āĻ•āϞāĻžāĻŽāĻžāϰ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āϝāĻž āϖ⧁āĻŦ āĻŦ⧇āĻļāĻŋ āĻĒāϰāĻŋāĻŽāĻžāϪ⧇ āĻĄā§‡āϟāĻžāϰ āωāĻĒāϰ āĻĻ⧃āĻˇā§āϟāĻŋ āύāĻŋāĻŦāĻĻā§āϧ āĻ•āϰ⧇, āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āωāĻĒāĻžāϝāĻŧ⧇ (āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āϏāĻŽāϝāĻŧ āĻ…āύ⧁āϏāĻžāϰ⧇) āĻ…āĻ°ā§āĻĄāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāϟāĻŋ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āφāĻ°ā§āĻĨāĻŋāĻ• āĻĒā§āϰāϤāĻŋāĻˇā§āĻ āĻžāύāϗ⧁āϞāĻŋāϤ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϝāĻŧ - āĻŦā§āϝāĻžāĻ‚āĻ•, āĻŦāĻŋāύāĻŋāϝāĻŧā§‹āĻ— āϤāĻšāĻŦāĻŋāϞ, āĻŦā§€āĻŽāĻž āϕ⧋āĻŽā§āĻĒāĻžāύāĻŋāĨ¤ Q āĻ­āĻžāώāĻž āĻšāϞ KDB+ āĻāϰ āĻ…āĻ­ā§āϝāĻ¨ā§āϤāϰ⧀āĻŖ āĻ­āĻžāώāĻž āϝāĻž āφāĻĒāύāĻžāϕ⧇ āĻāχ āĻĄā§‡āϟāĻžāϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāĻ°ā§āϝāĻ•āϰāĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧāĨ¤ Q āĻŽāϤāĻžāĻĻāĻ°ā§āĻļ āĻšāϞ āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤāϤāĻž āĻāĻŦāĻ‚ āĻĻāĻ•ā§āώāϤāĻž, āϝāĻ–āύ āĻ¸ā§āĻŦāĻšā§āĻ›āϤāĻž āĻŦāϞāĻŋ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧāĨ¤ āĻāϟāĻŋ āĻāχ āϏāĻ¤ā§āϝ⧇āϰ āĻĻā§āĻŦāĻžāϰāĻž āĻ¨ā§āϝāĻžāĻ¯ā§āϝ āϝ⧇ āϭ⧇āĻ•ā§āϟāϰ āĻ­āĻžāώāĻžāϟāĻŋ āϝ⧇ āϕ⧋āύāĻ“ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻŦā§‹āĻāĻž āĻ•āĻ āĻŋāύ āĻšāĻŦ⧇ āĻāĻŦāĻ‚ āϰ⧇āĻ•āĻ°ā§āĻĄāĻŋāĻ‚āϝāĻŧ⧇āϰ āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤāϤāĻž āĻāĻŦāĻ‚ āϏāĻŽā§ƒāĻĻā§āϧāĻŋ āφāĻĒāύāĻžāϕ⧇ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻ•ā§āϰāĻŋāύ⧇ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽā§‡āϰ āĻ…āύ⧇āĻ• āĻŦāĻĄāĻŧ āĻ…āĻ‚āĻļ āĻĻ⧇āĻ–āϤ⧇ āĻĻ⧇āϝāĻŧ, āϝāĻž āĻļ⧇āώ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻŦā§‹āĻāĻž āϏāĻšāϜ āĻ•āϰ⧇ āϤ⧋āϞ⧇āĨ¤

āĻāχ āύāĻŋāĻŦāĻ¨ā§āϧ⧇ āφāĻŽāϰāĻž Q-āϤ⧇ āĻāĻ•āϟāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ āĻ•āϰ⧇āĻ›āĻŋ āĻāĻŦāĻ‚ āφāĻĒāύāĻŋ āĻāϟāĻŋ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰ⧇ āĻĻ⧇āĻ–āϤ⧇ āϚāĻžāχāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āĻāϟāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻ•ā§ƒāϤ Q āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāĻŦ⧇āĨ¤ āφāĻĒāύāĻŋ kx āϕ⧋āĻŽā§āĻĒāĻžāύāĻŋāϰ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāĻŸā§‡ āĻŦāĻŋāύāĻžāĻŽā§‚āĻ˛ā§āϝ⧇ 32-āĻŦāĻŋāϟ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ - www.kx.com. āϏ⧇āĻ–āĻžāύ⧇, āφāĻĒāύāĻŋ āφāĻ—ā§āϰāĻšā§€ āĻšāϞ⧇, āφāĻĒāύāĻŋ Q, āĻŦāχāϝāĻŧ⧇āϰ āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āϤāĻĨā§āϝ āĻĒāĻžāĻŦ⧇āύ Q āύāĻļā§āĻŦāϰāĻĻ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻŦāĻ‚ āĻāχ āĻŦāĻŋāώāϝāĻŧ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āύāĻŋāĻŦāĻ¨ā§āϧāĨ¤

āϏāĻŽāĻ¸ā§āϝāĻž āĻ—āĻ āύ

āĻāĻ•āϟāĻŋ āĻ‰ā§ŽāϏ āϰāϝāĻŧ⧇āϛ⧇ āϝāĻž āĻĒā§āϰāϤāĻŋ 25 āĻŽāĻŋāϞāĻŋāϏ⧇āϕ⧇āĻ¨ā§āĻĄā§‡ āĻĄā§‡āϟāĻž āϏāĻš āĻāĻ•āϟāĻŋ āĻŸā§‡āĻŦāĻŋāϞ āĻĒāĻžāĻ āĻžāϝāĻŧāĨ¤ āϝ⧇āĻšā§‡āϤ⧁ KDB+ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻĢāĻžāχāĻ¨ā§āϝāĻžāĻ¨ā§āϏ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϝāĻŧ, āϤāĻžāχ āφāĻŽāϰāĻž āϧāϰ⧇ āύ⧇āĻŦ āϝ⧇ āĻāϟāĻŋ āϞ⧇āύāĻĻ⧇āύ⧇āϰ āĻāĻ•āϟāĻŋ āϏāĻžāϰāĻŖā§€ (āĻŦāĻžāĻŖāĻŋāĻœā§āϝ), āϝāĻžāϰ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻ•āϞāĻžāĻŽ āϰāϝāĻŧ⧇āϛ⧇: āϏāĻŽāϝāĻŧ (āĻŽāĻŋāϞāĻŋāϏ⧇āϕ⧇āĻ¨ā§āĻĄā§‡ āϏāĻŽāϝāĻŧ), āϏāĻŋāĻŽ (āĻ¸ā§āϟāĻ• āĻāĻ•ā§āϏāĻšā§‡āĻžā§āĻœā§‡ āϕ⧋āĻŽā§āĻĒāĻžāύāĻŋāϰ āĻĒāĻĻāĻŦā§€ - āφāχāĻŦāĻŋāĻāĻŽ, AAPL,â€Ļ), āĻŽā§‚āĻ˛ā§āϝ (āϝ⧇ āĻĻāĻžāĻŽā§‡ āĻļ⧇āϝāĻŧāĻžāϰ āϕ⧇āύāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ), āφāĻ•āĻžāϰ (āϞ⧇āύāĻĻ⧇āύ⧇āϰ āφāĻ•āĻžāϰ)āĨ¤ 25 āĻŽāĻŋāϞāĻŋāϏ⧇āϕ⧇āĻ¨ā§āĻĄā§‡āϰ āĻŦā§āϝāĻŦāϧāĻžāύāϟāĻŋ āύāĻŋāĻ°ā§āĻŦāĻŋāϚāĻžāϰ⧇, āϖ⧁āĻŦ āϛ⧋āϟ āύāϝāĻŧ āĻāĻŦāĻ‚ āϖ⧁āĻŦ āĻĻā§€āĻ°ā§āϘ āύāϝāĻŧ⧎ āĻāϰ āωāĻĒāĻ¸ā§āĻĨāĻŋāϤāĻŋāϰ āĻ…āĻ°ā§āĻĨ āĻšāϞ āĻĄā§‡āϟāĻž āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇āχ āĻŦāĻžāĻĢāĻžāϰ āĻ•āϰāĻž āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϤ⧇ āφāϏ⧇⧎ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āϞ⧋āĻĄā§‡āϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇ āĻ—āϤāĻŋāĻļā§€āϞ āĻŦāĻžāĻĢāĻžāϰāĻŋāĻ‚ āϏāĻš āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϰ āĻĻāĻŋāϕ⧇ āĻŦāĻžāĻĢāĻžāϰāĻŋāĻ‚ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ āĻ•āϰāĻž āϏāĻšāϜ āĻšāĻŦ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āϏāϰāϞāϤāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻŦā§āϝāĻŦāϧāĻžāύ⧇ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰāĻŦāĨ¤

āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϟāĻŋāϕ⧇ āĻ…āĻŦāĻļā§āϝāχ āϏāĻŋāĻŽ āĻ•āϞāĻžāĻŽ āĻĨ⧇āϕ⧇ āĻĒā§āϰāϤāĻŋāϟāĻŋ āφāĻ—āϤ āĻĒā§āϰāϤ⧀āϕ⧇āϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϤāĻŋ āĻŽāĻŋāύāĻŋāĻŸā§‡ āĻ—āĻŖāύāĻž āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϏāĻŽāĻˇā§āϟāĻŋāĻ—āϤ āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āĻāĻ•āϟāĻŋ āϏ⧇āϟ - āϏāĻ°ā§āĻŦā§‹āĻšā§āϚ āĻŽā§‚āĻ˛ā§āϝ, āĻ—āĻĄāĻŧ āĻŽā§‚āĻ˛ā§āϝ, āϝ⧋āĻ—āĻĢāϞ⧇āϰ āφāĻ•āĻžāϰ āχāĻ¤ā§āϝāĻžāĻĻāĻŋāĨ¤ āĻĻāϰāĻ•āĻžāϰ⧀ āϤāĻĨā§āϝāĨ¤ āϏāϰāϞāϤāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻŽāϰāĻž āϧāϰ⧇ āύ⧇āĻŦ āϝ⧇ āϏāĻŽāĻ¸ā§āϤ āĻĢāĻžāĻ‚āĻļāύ āĻ•ā§āϰāĻŽāĻŦāĻ°ā§āϧāĻŽāĻžāύāĻ­āĻžāĻŦ⧇ āĻ—āĻŖāύāĻž āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇, āϝ⧇āĻŽāύ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āĻŽāĻžāύ āĻĒ⧇āϤ⧇, āĻĻ⧁āϟāĻŋ āϏāĻ‚āĻ–ā§āϝāĻž āϜāĻžāύāĻž āϝāĻĨ⧇āĻˇā§āϟ - āĻĒ⧁āϰāĻžāύ⧋ āĻāĻŦāĻ‚ āφāĻ—āϤ āĻŽāĻžāύāĨ¤ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻĢāĻžāĻ‚āĻļāύ āϏāĻ°ā§āĻŦāĻžāϧāĻŋāĻ•, āĻ—āĻĄāĻŧ, āϝ⧋āĻ—āĻĢāϞ āĻāχ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āφāϛ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻŽāĻ§ā§āϝ āĻĢāĻžāĻ‚āĻļāύ āύ⧇āχ.

āφāĻŽāϰāĻž āĻāϟāĻžāĻ“ āϧāϰ⧇ āύ⧇āĻŦ āϝ⧇ āχāύāĻ•āĻžāĻŽāĻŋāĻ‚ āĻĄā§‡āϟāĻž āĻ¸ā§āĻŸā§āϰ⧀āĻŽ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŋāϤ āϏāĻŽāϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝāĨ¤ āĻāϟāĻŋ āφāĻŽāĻžāĻĻ⧇āϰ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻļ⧇āώ āĻŽā§āĻšā§‚āĻ°ā§āϤ⧇ āĻ•āĻžāϜ āĻ•āϰāĻžāϰ āϏ⧁āϝ⧋āĻ— āĻĻ⧇āĻŦ⧇āĨ¤ āĻ…āύ⧁āĻļā§€āϞāύ⧇, āĻ•āĻŋāϛ⧁ āφāĻĒāĻĄā§‡āϟ āĻĻ⧇āϰ⧀ āĻšāϞ⧇ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻāĻŦāĻ‚ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āĻŽāĻŋāύāĻŋāĻŸā§‡āϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āϏāĻ•ā§āώāĻŽ āĻšāĻ“āϝāĻŧāĻž āϝāĻĨ⧇āĻˇā§āϟāĨ¤ āϏāϰāϞāϤāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻŽāϰāĻž āĻāχ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰāĻŦ āύāĻžāĨ¤

āĻāĻ•āĻ¤ā§āϰ⧀āĻ•āϰāĻŖ āĻĢāĻžāĻ‚āĻļāύ

āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āϏāĻŽāĻˇā§āϟāĻŋ āĻĢāĻžāĻ‚āĻļāύ āύ⧀āĻšā§‡ āϤāĻžāϞāĻŋāĻ•āĻžāϭ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ. āφāĻŽāĻŋ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϤ⧇ āϞ⧋āĻĄ āĻŦāĻžāĻĄāĻŧāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āϤāĻžāĻĻ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āϝāϤāϟāĻž āϏāĻŽā§āĻ­āĻŦ āύāĻŋāϝāĻŧ⧇āĻ›āĻŋ:

  • āωāĻšā§āϚ – āϏāĻ°ā§āĻŦā§‹āĻšā§āϚ āĻŽā§‚āĻ˛ā§āϝ – āĻĒā§āϰāϤāĻŋ āĻŽāĻŋāύāĻŋāĻŸā§‡ āϏāĻ°ā§āĻŦā§‹āĻšā§āϚ āĻŽā§‚āĻ˛ā§āϝāĨ¤
  • āĻ•āĻŽ - āĻ¨ā§āϝ⧂āύāϤāĻŽ āĻŽā§‚āĻ˛ā§āϝ - āĻĒā§āϰāϤāĻŋ āĻŽāĻŋāύāĻŋāĻŸā§‡ āϏāĻ°ā§āĻŦāύāĻŋāĻŽā§āύ āĻŽā§‚āĻ˛ā§āϝ⧎
  • āĻĒā§āϰāĻĨāĻŽ āĻŽā§‚āĻ˛ā§āϝ - āĻĒā§āϰāĻĨāĻŽ āĻŽā§‚āĻ˛ā§āϝ - āĻĒā§āϰāϤāĻŋ āĻŽāĻŋāύāĻŋāĻŸā§‡ āĻĒā§āϰāĻĨāĻŽ āĻŽā§‚āĻ˛ā§āϝ⧎
  • āĻļ⧇āώ āĻŽā§‚āĻ˛ā§āϝ - āĻļ⧇āώ āĻŽā§‚āĻ˛ā§āϝ - āĻĒā§āϰāϤāĻŋ āĻŽāĻŋāύāĻŋāĻŸā§‡ āĻļ⧇āώ āĻŽā§‚āĻ˛ā§āϝāĨ¤
  • āĻĒā§āϰāĻĨāĻŽ āφāĻ•āĻžāϰ - āĻĒā§āϰāĻĨāĻŽ āφāĻ•āĻžāϰ - āĻĒā§āϰāϤāĻŋ āĻŽāĻŋāύāĻŋāĻŸā§‡ āĻĒā§āϰāĻĨāĻŽ āĻŦāĻžāĻŖāĻŋāĻœā§āϝ āφāĻ•āĻžāϰāĨ¤
  • āϞāĻžāĻ¸ā§āϟ āϏāĻžāχāϜ - āĻļ⧇āώ āϏāĻžāχāϜ - āĻāĻ• āĻŽāĻŋāύāĻŋāĻŸā§‡ āĻļ⧇āώ āĻŸā§āϰ⧇āĻĄ āϏāĻžāχāϜāĨ¤
  • numTrades – āĻ•āĻžāωāĻ¨ā§āϟ i – āĻĒā§āϰāϤāĻŋ āĻŽāĻŋāύāĻŋāĻŸā§‡ āĻŸā§āϰ⧇āĻĄā§‡āϰ āϏāĻ‚āĻ–ā§āϝāĻžāĨ¤
  • āĻ­āϞāĻŋāωāĻŽ – āϏāĻŽāĻˇā§āϟāĻŋāϰ āφāĻ•āĻžāϰ – āĻĒā§āϰāϤāĻŋ āĻŽāĻŋāύāĻŋāĻŸā§‡ āĻŸā§āϰ⧇āĻĄ āϏāĻžāχāĻœā§‡āϰ āϏāĻŽāĻˇā§āϟāĻŋāĨ¤
  • pvolume – āϏāĻŽāĻˇā§āϟāĻŋ āĻŽā§‚āĻ˛ā§āϝ – āĻĒā§āϰāϤāĻŋ āĻŽāĻŋāύāĻŋāĻŸā§‡ āĻĻāĻžāĻŽā§‡āϰ āϝ⧋āĻ—āĻĢāϞ, avgPrice āĻāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϝāĻŧā§‹āϜāύāĨ¤
  • - āϝ⧋āĻ—āĻĢāϞ āϟāĻžāĻ°ā§āύāĻ“āĻ­āĻžāϰ āĻŽā§‚āĻ˛ā§āϝ * āφāĻ•āĻžāϰ - āĻĒā§āϰāϤāĻŋ āĻŽāĻŋāύāĻŋāĻŸā§‡ āϞ⧇āύāĻĻ⧇āύ⧇āϰ āĻŽā§‹āϟ āĻĒāϰāĻŋāĻŽāĻžāĻŖāĨ¤
  • avgPrice – pvolume%numTrades – āĻĒā§āϰāϤāĻŋ āĻŽāĻŋāύāĻŋāĻŸā§‡ āĻ—āĻĄāĻŧ āĻŽā§‚āĻ˛ā§āϝāĨ¤
  • avgSize – āĻ­āϞāĻŋāωāĻŽ%numTrades – āĻĒā§āϰāϤāĻŋ āĻŽāĻŋāύāĻŋāĻŸā§‡ āĻ—āĻĄāĻŧ āĻŸā§āϰ⧇āĻĄ āϏāĻžāχāϜāĨ¤
  • vwap - āϟāĻžāĻ°ā§āύāĻ“āĻ­āĻžāϰ% āĻ­āϞāĻŋāωāĻŽ - āϞ⧇āύāĻĻ⧇āύ⧇āϰ āφāĻ•āĻžāϰ āĻ…āύ⧁āϏāĻžāϰ⧇ āĻĒā§āϰāϤāĻŋ āĻŽāĻŋāύāĻŋāĻŸā§‡ āĻ—āĻĄāĻŧ āĻŽā§‚āĻ˛ā§āϝāĨ¤
  • āĻ•āĻŽ āĻ­āϞāĻŋāωāĻŽ - āϏāĻŽāĻˇā§āϟāĻŋ āĻ­āϞāĻŋāωāĻŽ - āĻĒ⧁āϰ⧋ āϏāĻŽāϝāĻŧ āϧāϰ⧇ āϞ⧇āύāĻĻ⧇āύ⧇āϰ āϏāĻžā§āϚāĻŋāϤ āφāĻ•āĻžāϰāĨ¤

āφāϏ⧁āύ āĻ…āĻŦāĻŋāϞāĻŽā§āĻŦ⧇ āĻāĻ•āϟāĻŋ āĻ…-āĻ¸ā§āĻĒāĻˇā§āϟ āĻŦāĻŋāώāϝāĻŧ āύāĻŋāϝāĻŧ⧇ āφāϞ⧋āϚāύāĻž āĻ•āϰāĻž āϝāĻžāĻ• - āϕ⧀āĻ­āĻžāĻŦ⧇ āĻāχ āĻ•āϞāĻžāĻŽāϗ⧁āϞāĻŋ āĻĒā§āϰāĻĨāĻŽāĻŦāĻžāϰ āĻāĻŦāĻ‚ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻŽāĻŋāύāĻŋāĻŸā§‡āϰ āϜāĻ¨ā§āϝ āĻļ⧁āϰ⧁ āĻ•āϰāĻž āϝāĻžāϝāĻŧāĨ¤ āĻĢāĻžāĻ°ā§āĻ¸ā§āϟāĻĒā§āϰāĻžāχāϏ āϟāĻžāχāĻĒ⧇āϰ āĻ•āĻŋāϛ⧁ āĻ•āϞāĻžāĻŽ āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ āĻļā§‚āĻ¨ā§āϝ āĻ•āϰāϤ⧇ āφāϰāĻŽā§āĻ­ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇; āϤāĻžāĻĻ⧇āϰ āĻŽāĻžāύ āĻ…āύāĻŋāĻ°ā§āϧāĻžāϰāĻŋāϤāĨ¤ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻ­āϞāĻŋāωāĻŽ āĻĒā§āϰāĻ•āĻžāϰāϗ⧁āϞāĻŋ āϏāĻ°ā§āĻŦāĻĻāĻž 0 āϤ⧇ āϏ⧇āϟ āĻ•āϰāĻž āφāĻŦāĻļā§āϝāϕ⧎ āĻāĻŽāύ āĻ•āϞāĻžāĻŽāϗ⧁āϞāĻŋāĻ“ āϰāϝāĻŧ⧇āϛ⧇ āϝ⧇āϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āϏāĻŽā§āĻŽāĻŋāϞāĻŋāϤ āĻĒāĻĻā§āϧāϤāĻŋāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ - āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, cumVolume āĻ…āĻŦāĻļā§āϝāχ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āĻŽāĻŋāύāĻŋāϟ āĻĨ⧇āϕ⧇ āĻ…āύ⧁āϞāĻŋāĻĒāĻŋ āĻ•āϰāĻž āωāϚāĻŋāϤ āĻāĻŦāĻ‚ āĻĒā§āϰāĻĨāĻŽāϟāĻŋāϰ āϜāĻ¨ā§āϝ 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 ĐžĐąŅŠŅŅĐŊĐĩĐŊ ĐŊиĐļĐĩ

āφāĻŽāĻŋ āϏ⧁āĻŦāĻŋāϧāĻžāϰ āϜāĻ¨ā§āϝ āĻ…āĻ­āĻŋāϧāĻžāύ⧇ sym āĻāĻŦāĻ‚ āϏāĻŽāϝāĻŧ āϝ⧋āĻ— āĻ•āϰ⧇āĻ›āĻŋ, āĻāĻ–āύ initWith āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āϤ āϏāĻŽāĻˇā§āϟāĻŋ āϏāĻžāϰāĻŖā§€ āĻĨ⧇āϕ⧇ āĻāĻ•āϟāĻŋ āϰ⧇āĻĄāĻŋāĻŽā§‡āĻĄ āϞāĻžāχāύ, āϝ⧇āĻ–āĻžāύ⧇ āĻāϟāĻŋ āϏāĻ āĻŋāĻ• sym āĻāĻŦāĻ‚ āϏāĻŽāϝāĻŧ āϏ⧇āϟ āĻ•āϰāϤ⧇ āĻĨāĻžāϕ⧇āĨ¤ āφāĻĒāύāĻŋ āĻāĻ•āϟāĻŋ āĻŸā§‡āĻŦāĻŋāϞ⧇ āύāϤ⧁āύ āϏāĻžāϰāĻŋ āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

āĻāĻ•āϟāĻŋ āϏāĻŽāĻˇā§āϟāĻŋ āĻĢāĻžāĻ‚āĻļāύ āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āφāĻŽāĻžāĻĻ⧇āϰ aggCols āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāĻŦ⧇āĨ¤ āϤāĻžāϞāĻŋāĻ•āĻžāϟāĻŋ āĻ…āĻŦāĻļā§āϝāχ āωāĻ˛ā§āϟāĻžāϤ⧇ āĻšāĻŦ⧇ āĻ•āĻžāϰāĻŖ Q-āϤ⧇ āĻ…āĻ­āĻŋāĻŦā§āϝāĻ•ā§āϤāĻŋ āĻŽā§‚āĻ˛ā§āϝāĻžāϝāĻŧāύ āĻ•āϰāĻž āĻšāϝāĻŧ (āĻĄāĻžāύ āĻĨ⧇āϕ⧇ āĻŦāĻžāĻŽā§‡)āĨ¤ āϞāĻ•ā§āĻˇā§āϝ āĻšāϞ āĻ—āĻŖāύāĻž āωāĻšā§āϚ āĻĨ⧇āϕ⧇ āĻ•āĻŽ āĻ­āϞāĻŋāωāĻŽā§‡ āϝāĻžāϝāĻŧ āϤāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāĻž, āϝ⧇āĻšā§‡āϤ⧁ āĻ•āĻŋāϛ⧁ āĻ•āϞāĻžāĻŽ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀āϗ⧁āϞāĻŋāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇āĨ¤

āϝ⧇ āĻ•āϞāĻžāĻŽāϗ⧁āϞāĻŋāϕ⧇ āφāϗ⧇āϰāϟāĻŋ āĻĨ⧇āϕ⧇ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āĻŽāĻŋāύāĻŋāĻŸā§‡ āĻ…āύ⧁āϞāĻŋāĻĒāĻŋ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇, āϏ⧁āĻŦāĻŋāϧāĻžāϰ āϜāĻ¨ā§āϝ āϏāĻŋāĻŽ āĻ•āϞāĻžāĻŽāϟāĻŋ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇:

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

āĻāχ āĻĒāĻĻā§āϧāϤāĻŋāϰ āĻāĻ•āϟāĻŋ āĻ…āϏ⧁āĻŦāĻŋāϧāĻž āφāϛ⧇ - āĻ—āĻŖāύāĻž āĻ•āϰāĻž āĻ•āϞāĻžāĻŽā§‡āϰ āϏ⧇āϟ āĻĒā§‚āĻ°ā§āĻŦāύāĻŋāĻ°ā§āϧāĻžāϰāĻŋāϤāĨ¤ āϏ⧌āĻ­āĻžāĻ—ā§āϝāĻŦāĻļāϤ, Q-āϤ⧇, āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻāĻ•āϟāĻŋ āĻĢāĻžāĻ‚āĻļāύ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ āϝ⧇āĻ–āĻžāύ⧇ āφāĻĒāύāĻŋ āĻ—āϤāĻŋāĻļā§€āϞāĻ­āĻžāĻŦ⧇ āϤ⧈āϰāĻŋ āφāĻ°ā§āϗ⧁āĻŽā§‡āĻ¨ā§āϟāϗ⧁āϞāĻŋ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ:

?[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];

āĻ¸ā§āĻĒāĻˇā§āϟāϤāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻŽāĻŋ āĻĒāĻžāĻ°ā§āϏ āĻĢāĻžāĻ‚āĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĻ›āĻŋ, āϝāĻž āĻāĻ•āϟāĻŋ Q āĻāĻ•ā§āϏāĻĒā§āϰ⧇āĻļāύ āϏāĻš āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚āϕ⧇ āĻāĻ•āϟāĻŋ āĻŽāĻžāύāϤ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻ•āϰ⧇ āϝāĻž eval āĻĢāĻžāĻ‚āĻļāύ⧇ āĻĒāĻžāϏ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ āϝāĻž āĻĢāĻžāĻ‚āĻļāύ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ⧇āϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧāĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ āĻŽāύ⧇ āϰāĻžāĻ–āĻŦ⧇āύ āϝ⧇ āĻĒā§āϰāĻŋāĻĒā§āϰāϏ⧇āϏ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āĻāĻ•āϟāĻŋ āĻĒā§āϰāĻœā§‡āĻ•āĻļāύ (āĻ…āĻ°ā§āĻĨāĻžā§Ž, āφāĻ‚āĻļāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āφāĻ°ā§āϗ⧁āĻŽā§‡āĻ¨ā§āϟ āϏāĻš āĻāĻ•āϟāĻŋ āĻĢāĻžāĻ‚āĻļāύ) āĻšāĻŋāϏāĻžāĻŦ⧇ āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āĻāĻ•āϟāĻŋ āφāĻ°ā§āϗ⧁āĻŽā§‡āĻ¨ā§āϟ (āĻŸā§‡āĻŦāĻŋāϞ) āĻ…āύ⧁āĻĒāĻ¸ā§āĻĨāĻŋāϤāĨ¤ āϝāĻĻāĻŋ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āĻŸā§‡āĻŦāĻŋāϞ⧇ āĻĒā§āϰāĻŋāĻĒā§āϰāϏ⧇āϏ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻŋ, āϤāĻžāĻšāϞ⧇ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āϏāĻ‚āϕ⧁āϚāĻŋāϤ āĻŸā§‡āĻŦāĻŋāϞ āĻĒāĻžāĻŦāĨ¤

āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āĻĒāĻ°ā§āϝāĻžāϝāĻŧ⧇ āϏāĻŽāĻˇā§āϟāĻŋāĻ—āϤ āĻŸā§‡āĻŦāĻŋāϞ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻšāϝāĻŧ. āĻĒā§āϰāĻĨāĻŽā§‡ āϏāĻŋāωāĻĄā§‹āϕ⧋āĻĄā§‡ āĻ…ā§āϝāĻžāϞāĻ—āϰāĻŋāĻĻāĻŽ āϞāĻŋāĻ–āĻŋ:

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];
  â€Ļ

Q-āϤ⧇, āϞ⧁āĻĒ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻŽā§āϝāĻžāĻĒ/āϰāĻŋāĻĄā§āϏ āĻĢāĻžāĻ‚āĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϏāĻžāϧāĻžāϰāĻŖāĨ¤ āĻ•āĻŋāĻ¨ā§āϤ⧁ āϝ⧇āĻšā§‡āϤ⧁ Q āĻāĻ•āϟāĻŋ āϭ⧇āĻ•ā§āϟāϰ āĻ­āĻžāώāĻž āĻāĻŦāĻ‚ āφāĻŽāϰāĻž āϏāĻšāĻœā§‡āχ āϏāĻŽāĻ¸ā§āϤ āĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻ•āϞāĻžāĻĒāϗ⧁āϞāĻŋ āϏāĻŽāĻ¸ā§āϤ āĻĒā§āϰāϤ⧀āĻ•āϗ⧁āϞāĻŋāϤ⧇ āĻāĻ•āĻŦāĻžāϰ⧇ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ, āϤāĻžāϰāĻĒāϰ⧇ āĻāĻ•āϟāĻŋ āĻĒā§āϰāĻĨāĻŽ āĻ…āύ⧁āĻŽāĻžāύ⧇ āφāĻŽāϰāĻž āϞ⧁āĻĒ āĻ›āĻžāĻĄāĻŧāĻžāχ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ, āĻāĻ•āĻŦāĻžāϰ⧇ āϏāĻŽāĻ¸ā§āϤ āϚāĻŋāĻšā§āύāϗ⧁āϞāĻŋāϤ⧇ āĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻ•āϞāĻžāĻĒ āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ:

idx:calcIdx inputTable;
row:aggTable idx;
aggTable[idx;`high]: row[`high] | inputTable`high;
aggTable[idx;`volume]: row[`volume] + inputTable`volume;
â€Ļ

āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻŽāϰāĻž āφāϰāĻ“ āϝ⧇āϤ⧇ āĻĒāĻžāϰāĻŋ, Q-āĻāϰ āĻāĻ•āϟāĻŋ āĻ…āύāĻ¨ā§āϝ āĻāĻŦāĻ‚ āĻ…āĻ¤ā§āϝāĻ¨ā§āϤ āĻļāĻ•ā§āϤāĻŋāĻļāĻžāϞ⧀ āĻ…āĻĒāĻžāϰ⧇āϟāϰ āϰāϝāĻŧ⧇āϛ⧇ - āϏāĻžāϧāĻžāϰāĻŖ āĻ…ā§āϝāĻžāϏāĻžāχāύāĻŽā§‡āĻ¨ā§āϟ āĻ…āĻĒāĻžāϰ⧇āϟāϰāĨ¤ āĻāϟāĻŋ āφāĻĒāύāĻžāϕ⧇ āϏ⧂āϚāĻ•, āĻĢāĻžāĻ‚āĻļāύ āĻāĻŦāĻ‚ āφāĻ°ā§āϗ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āϰ āĻāĻ•āϟāĻŋ āϤāĻžāϞāĻŋāĻ•āĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ āϜāϟāĻŋāϞ āĻĄā§‡āϟāĻž āĻ•āĻžāĻ āĻžāĻŽā§‹āϤ⧇ āĻŽāĻžāύāϗ⧁āϞāĻŋāϰ āĻāĻ•āϟāĻŋ āϏ⧇āϟ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧāĨ¤ āφāĻŽāĻžāĻĻ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāϟāĻŋ āĻāχ āĻŽāϤ āĻĻ⧇āĻ–āĻžāϝāĻŧ:

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;â€Ļ)];

āφāĻŽāϰāĻž āφāĻŦāĻžāϰ āĻĢāĻžāĻ‚āĻļāύ āĻĒā§āϰāĻœā§‡āĻ•āĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŋāĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ āĻŽāύ⧇ āϰāĻžāĻ–āĻŦ⧇āύ āϝ⧇ Q-āϤ⧇, āĻāĻ•āϟāĻŋ āϤāĻžāϞāĻŋāĻ•āĻž āϤ⧈āϰāĻŋ āĻ•āϰāĻžāĻ“ āĻāĻ•āϟāĻŋ āĻĢāĻžāĻ‚āĻļāύ āĻāĻŦāĻ‚ āφāĻŽāϰāĻž āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻāĻ•āϟāĻŋ āϤāĻžāϞāĻŋāĻ•āĻž āĻĒ⧇āϤ⧇ āĻĒā§āϰāϤāĻŋāϟāĻŋ (āĻŽāĻžāύāϚāĻŋāĻ¤ā§āϰ) āĻĢāĻžāĻ‚āĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāϟāĻŋāϕ⧇ āĻ•āϞ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤

āĻ—āĻŖāύāĻž āĻ•āϰāĻž āĻ•āϞāĻžāĻŽā§‡āϰ āϏ⧇āϟāϟāĻŋ āĻ¸ā§āĻĨāĻŋāϰ āύāϝāĻŧ āϤāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻŽāϰāĻž āωāĻĒāϰ⧋āĻ•ā§āϤ āĻ…āĻ­āĻŋāĻŦā§āϝāĻ•ā§āϤāĻŋāϟāĻŋ āĻ—āϤāĻŋāĻļā§€āϞāĻ­āĻžāĻŦ⧇ āϤ⧈āϰāĻŋ āĻ•āϰāĻŦāĨ¤ āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻāĻŦāĻ‚ āχāύāĻĒ⧁āϟ āĻĄā§‡āϟāĻž āωāĻ˛ā§āϞ⧇āĻ– āĻ•āϰāϤ⧇ āϏāĻžāϰāĻŋ āĻāĻŦāĻ‚ inp āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻ•āϞāĻžāĻŽ āĻ—āĻŖāύāĻž āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāĻĨāĻŽā§‡ āĻĢāĻžāĻ‚āĻļāύāϗ⧁āϞāĻŋ āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āĻ•āϰāĻž āϝāĻžāĻ•:

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");

āĻ•āĻŋāϛ⧁ āĻ•āϞāĻžāĻŽ āĻŦāĻŋāĻļ⧇āώ; āϤāĻžāĻĻ⧇āϰ āĻĒā§āϰāĻĨāĻŽ āĻŽāĻžāύ āĻĢāĻžāĻ‚āĻļāύ āĻĻā§āĻŦāĻžāϰāĻž āĻ—āĻŖāύāĻž āĻ•āϰāĻž āωāϚāĻŋāϤ āύāϝāĻŧāĨ¤ āφāĻŽāϰāĻž āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ āϝ⧇ āĻāϟāĻŋ āϏāĻžāϰāĻŋ [`numTrades] āĻ•āϞāĻžāĻŽ āĻĻā§āĻŦāĻžāϰāĻž āĻĒā§āϰāĻĨāĻŽ - āϝāĻĻāĻŋ āĻāϤ⧇ 0 āĻĨāĻžāϕ⧇, āϤāĻžāĻšāϞ⧇ āĻŽāĻžāύāϟāĻŋ āĻĒā§āϰāĻĨāĻŽāĨ¤ Q-āĻāϰ āĻāĻ•āϟāĻŋ āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻĢāĻžāĻ‚āĻļāύ āφāϛ⧇ - ?[āĻŦ⧁āϞāĻŋāϝāĻŧāĻžāύ āϤāĻžāϞāĻŋāĻ•āĻž;āϞāĻŋāĻ¸ā§āϟ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;

āĻāϟāĻŋ Q āĻŽāĻžāύ āĻ…āύ⧁āϏāĻžāϰ⧇ āĻāĻ•āϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻ…ā§āϝāĻžāϏāĻžāχāύāĻŽā§‡āĻ¨ā§āϟ, āϤāĻŦ⧇ āφāĻŽāĻŋ āĻāĻ•āĻŦāĻžāϰ⧇ āĻŽāĻžāύāϗ⧁āϞāĻŋāϰ āĻāĻ•āϟāĻŋ āϤāĻžāϞāĻŋāĻ•āĻž āĻŦāϰāĻžāĻĻā§āĻĻ āĻ•āϰāĻ›āĻŋāĨ¤ āĻ…āĻŦāĻļ⧇āώ⧇, āĻĒā§āϰāϧāĻžāύ āĻĢāĻžāĻ‚āĻļāύ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āϝāĻžāĻ•:

// ":",/: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])]}

āĻ•āϞāĻžāĻŽ āĻŽā§‚āĻ˛ā§āϝāĻžāϝāĻŧāύ āĻ•ā§āϰāĻŽ āωāĻ˛ā§āϟāĻžāύ⧋ āĻšāϝāĻŧ āĻ•āĻžāϰāĻŖ Q-āϤ⧇ āĻŽā§‚āĻ˛ā§āϝāĻžāϝāĻŧāύ⧇āϰ āĻ•ā§āϰāĻŽ āĻĄāĻžāύ āĻĨ⧇āϕ⧇ āĻŦāĻžāĻŽā§‡ āĻĨāĻžāϕ⧇āĨ¤

āĻāĻ–āύ āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻžāϛ⧇ āĻ—āĻŖāύāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āĻĻ⧁āϟāĻŋ āĻĒā§āϰāϧāĻžāύ āĻĢāĻžāĻ‚āĻļāύ āϰāϝāĻŧ⧇āϛ⧇, āφāĻŽāĻžāĻĻ⧇āϰ āĻļ⧁āϧ⧁ āĻāĻ•āϟ⧁ āĻĒāϰāĻŋāĻ•āĻžāĻ āĻžāĻŽā§‹ āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āĻāĻŦāĻ‚ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻĒā§āϰāĻ¸ā§āϤ⧁āϤāĨ¤

āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āϤ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒ

āφāĻŽāĻžāĻĻ⧇āϰ āĻĒā§āϰāĻŋāĻĒā§āϰāϏ⧇āϏ āĻāĻŦāĻ‚ āφāĻĒāĻĄā§‡āϟāĻāĻ— āĻĢāĻžāĻ‚āĻļāύ āϰāϝāĻŧ⧇āϛ⧇ āϝāĻž āϏāĻŽāĻ¸ā§āϤ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤ āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻŽāĻŋāύāĻŋāĻŸā§‡āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϏāĻ āĻŋāĻ• āĻ¸ā§āĻĨāĻžāύāĻžāĻ¨ā§āϤāϰ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāĻž āĻāĻŦāĻ‚ āϏāĻŽāĻˇā§āϟāĻŋāϰ āϜāĻ¨ā§āϝ āϏ⧂āϚāĻ• āĻ—āĻŖāύāĻž āĻ•āϰāĻž āĻāĻ–āύāĻ“ āĻĒā§āϰāϝāĻŧā§‹āϜāύāĨ¤ āĻĒā§āϰāĻĨāĻŽāϤ, init āĻĢāĻžāĻ‚āĻļāύāϟāĻŋ āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āĻ•āϰāĻž āϝāĻžāĻ•:

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 āĻĢāĻžāĻ‚āĻļāύ (Q āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻāχ āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āϜāĻ¨ā§āϝ āϐāϤāĻŋāĻšā§āϝāĻ—āϤ āύāĻžāĻŽ), āϝāĻž āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āĻĻā§āĻŦāĻžāϰāĻž āĻĄā§‡āϟāĻž āϝ⧋āĻ— āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻŦāϞāĻž āĻšāϝāĻŧ:

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

āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ•

āϏ⧇āĻŦāĻžāϰ āĻ•āĻ°ā§āĻŽāĻ•ā§āώāĻŽāϤāĻž āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻž āϝāĻžāĻ•. āĻāϟāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āφāϏ⧁āύ āĻāϟāĻŋāϕ⧇ āĻāĻ•āϟāĻŋ āĻĒ⧃āĻĨāĻ• āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāϝāĻŧ āϚāĻžāϞāĻžāύ (āϕ⧋āĻĄāϟāĻŋ service.q āĻĢāĻžāχāϞ⧇ āϰāĻžāϖ⧁āύ) āĻāĻŦāĻ‚ init āĻĢāĻžāĻ‚āĻļāύāϟāĻŋ āĻ•āϞ āĻ•āϰ⧁āύ:

q service.q –p 5566

q)init[]

āĻ…āĻ¨ā§āϝ āĻ•āύāϏ⧋āϞ⧇, āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ Q āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāϟāĻŋ āĻļ⧁āϰ⧁ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āĻĒā§āϰāĻĨāĻŽāϟāĻŋāϰ āϏāĻžāĻĨ⧇ āϏāĻ‚āϝ⧋āĻ— āĻ•āϰ⧁āύ:

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)}

āĻŸā§‡āĻŦāĻŋāϞ⧇ āϤāĻžāĻĻ⧇āϰ āϏāĻ¨ā§āϧāĻžāύ āĻ•āϰāĻž āϏāĻšāϜ āĻ•āϰāϤ⧇ āφāĻŽāĻŋ āϤāĻžāϞāĻŋāĻ•āĻžāϝāĻŧ āϤāĻŋāύāϟāĻŋ āĻŦāĻžāĻ¸ā§āϤāĻŦ āϚāĻŋāĻšā§āύ āϝ⧋āĻ— āĻ•āϰ⧇āĻ›āĻŋāĨ¤ rnd āĻĢāĻžāĻ‚āĻļāύ 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:.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) āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧇, updateAgg āĻāϰ āϏāĻŋāϞāĻŋāĻ‚āϝāĻŧ⧇ āĻĒ⧌āρāϛ⧇ āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ⧇ āĻāϟāĻŋāϰ āϏāĻŽā§āĻĒāĻžāĻĻāύ⧇āϰ āϏāĻŽāϝāĻŧ āφāĻĒāĻĄā§‡āĻŸā§‡āϰ āφāĻ•āĻžāϰ⧇āϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇ āύāĻžāĨ¤ āĻāϟāĻŋ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ• āĻĒāĻĻāĻ•ā§āώ⧇āĻĒ Q āĻāϰ āĻ•āĻžāϰāϪ⧇ āϝ⧇ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϟāĻŋ āĻāϤ āĻĒāϰāĻŋāĻŽāĻžāĻŖ āĻĄā§‡āϟāĻž āĻšāϜāĻŽ āĻ•āϰāϤ⧇ āϏāĻ•ā§āώāĻŽāĨ¤ āĻāϟāĻŋ āĻšāĻžāχāϞāĻžāχāϟ āĻ•āϰ⧇ āϝ⧇ āĻŦāĻĄāĻŧ āĻĄā§‡āϟāĻž āύāĻŋāϝāĻŧ⧇ āĻ•āĻžāϜ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āϏāĻ āĻŋāĻ• āĻ…ā§āϝāĻžāϞāĻ—āϰāĻŋāĻĻāĻŽ āĻŦ⧇āϛ⧇ āύ⧇āĻ“āϝāĻŧāĻž āĻ•āϤāϟāĻž āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖāĨ¤ āφāϰ⧇āĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟ āĻšāϞ āĻŽā§‡āĻŽāϰāĻŋāϤ⧇ āĻĄā§‡āϟāĻžāϰ āϏāĻ āĻŋāĻ• āĻ¸ā§āĻŸā§‹āϰ⧇āϜāĨ¤ āϝāĻĻāĻŋ āĻĄā§‡āϟāĻž āĻ•āϞāĻžāĻŽāĻžāϰāϞāĻŋ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻž āύāĻž āĻšāϝāĻŧ āĻŦāĻž āϏāĻŽāϝāĻŧ āĻ…āύ⧁āϏāĻžāϰ⧇ āĻ…āĻ°ā§āĻĄāĻžāϰ āύāĻž āĻ•āϰāĻž āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ āφāĻŽāϰāĻž TLB āĻ•ā§āϝāĻžāĻļ⧇ āĻŽāĻŋāϏ - āĻĒā§āϰāϏ⧇āϏāϰ āĻ…ā§āϝāĻžāĻĄā§āϰ⧇āϏ āĻ•ā§āϝāĻžāĻļ⧇ āĻŽā§‡āĻŽāϰāĻŋ āĻĒ⧃āĻˇā§āĻ āĻžāϰ āĻ āĻŋāĻ•āĻžāύāĻžāϰ āĻ…āύ⧁āĻĒāĻ¸ā§āĻĨāĻŋāϤāĻŋāϰ āĻŽāϤ⧋ āĻāĻ•āϟāĻŋ āϜāĻŋāύāĻŋāϏ⧇āϰ āϏāĻžāĻĨ⧇ āĻĒāϰāĻŋāϚāĻŋāϤ āĻšāĻŦāĨ¤ āĻāĻ•āϟāĻŋ āĻ āĻŋāĻ•āĻžāύāĻž āĻ…āύ⧁āϏāĻ¨ā§āϧāĻžāύ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻ°ā§āĻĨ āĻšāϞ⧇ āĻĒā§āϰāĻžāϝāĻŧ 30 āϗ⧁āĻŖ āĻŦ⧇āĻļāĻŋ āϏāĻŽāϝāĻŧ āϞāĻžāϗ⧇, āĻāĻŦāĻ‚ āϝāĻĻāĻŋ āĻĄā§‡āϟāĻž āĻ›āĻĄāĻŧāĻŋāϝāĻŧ⧇ āĻĒāĻĄāĻŧ⧇, āĻāϟāĻŋ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϟāĻŋ āĻ•āϝāĻŧ⧇āĻ•āĻŦāĻžāϰ āϧ⧀āϰ āĻ•āϰ⧇ āĻĻāĻŋāϤ⧇ āĻĒāĻžāϰ⧇⧎

āωāĻĒāϏāĻ‚āĻšāĻžāϰ

āĻāχ āύāĻŋāĻŦāĻ¨ā§āϧ⧇, āφāĻŽāĻŋ āĻĻ⧇āĻ–āĻŋāϝāĻŧ⧇āĻ›āĻŋ āϝ⧇ KDB+ āĻāĻŦāĻ‚ Q āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻŦāĻĄāĻŧ āĻĄā§‡āϟāĻž āϏāĻžā§āϚāϝāĻŧ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻŦāĻ‚ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϏāĻšāĻœā§‡ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝāχ āωāĻĒāϝ⧁āĻ•ā§āϤ āύāϝāĻŧ, āĻŦāϰāĻ‚ āĻĄā§‡āϟāĻž āĻĒā§āϰāϏ⧇āϏāĻŋāĻ‚ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝāĻ“ āωāĻĒāϝ⧁āĻ•ā§āϤ āϝāĻž āĻ•āϝāĻŧ⧇āĻ• āĻŽāĻŋāϞāĻŋāϝāĻŧāύ āϏāĻžāϰāĻŋ/āĻ—āĻŋāĻ—āĻžāĻŦāĻžāχāϟ āĻĄā§‡āϟāĻž āĻšāϜāĻŽ āĻ•āϰāϤ⧇ āϏāĻ•ā§āώāĻŽāĨ¤ āĻāĻ•āϟāĻŋ āĻāĻ•āĻ• Q āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāĨ¤ Q āĻ­āĻžāώāĻž āύāĻŋāĻœā§‡āχ āĻāϰ āϭ⧇āĻ•ā§āϟāϰ āĻĒā§āϰāĻ•ā§ƒāϤāĻŋ, āĻ…āĻ¨ā§āϤāĻ°ā§āύāĻŋāĻ°ā§āĻŽāĻŋāϤ SQL āωāĻĒāĻ­āĻžāώāĻž āĻĻā§‹āĻ­āĻžāώ⧀ āĻāĻŦāĻ‚ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āĻĢāĻžāĻ‚āĻļāύāϗ⧁āϞāĻŋāϰ āĻāĻ•āϟāĻŋ āϖ⧁āĻŦ āϏāĻĢāϞ āϏ⧇āĻŸā§‡āϰ āĻ•āĻžāϰāϪ⧇ āĻĄā§‡āϟāĻž āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻ•āϰāϪ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āĻ…ā§āϝāĻžāϞāĻ—āϰāĻŋāĻĻāĻŽāϗ⧁āϞāĻŋāϰ āĻ…āĻ¤ā§āϝāĻ¨ā§āϤ āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤ āĻāĻŦāĻ‚ āĻĻāĻ•ā§āώ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ⧇āϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧāĨ¤

āφāĻŽāĻŋ āϞāĻ•ā§āĻˇā§āϝ āĻ•āϰāĻŦ āϝ⧇ āωāĻĒāϰ⧇āϰāϟāĻŋ Q āĻāϰ āĻ•ā§āώāĻŽāϤāĻžāϰ āĻ…āĻ‚āĻļ āĻŽāĻžāĻ¤ā§āϰ; āĻāϟāĻŋāϰ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻ…āύāĻ¨ā§āϝ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāĻ“ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻāĻ•āϟāĻŋ āĻ…āĻ¤ā§āϝāĻ¨ā§āϤ āϏāĻžāϧāĻžāϰāĻŖ IPC āĻĒā§āϰ⧋āĻŸā§‹āĻ•āϞ āϝāĻž āĻĒ⧃āĻĨāĻ• Q āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāϗ⧁āϞāĻŋāϰ āĻŽāĻ§ā§āϝ⧇ āϏ⧀āĻŽāĻžāύāĻž āĻŽā§āϛ⧇ āĻĻ⧇āϝāĻŧ āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϕ⧇ āĻāχ āĻļāϤ āĻļāϤ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāϗ⧁āϞāĻŋāϕ⧇ āĻāĻ•āϟāĻŋ āĻāĻ•āĻ• āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇ āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧ, āϝāĻž āĻŦāĻŋāĻļā§āĻŦ⧇āϰ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻ…āĻ‚āĻļ⧇ āĻ•āϝāĻŧ⧇āĻ• āĻĄāϜāύ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻ…āĻŦāĻ¸ā§āĻĨāĻŋāϤ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āωāĻ¤ā§āϏ: www.habr.com

DDoS āϏ⧁āϰāĻ•ā§āώāĻž, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϏāĻš āϏāĻžāχāϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ đŸ”Ĩ DDoS āϏ⧁āϰāĻ•ā§āώāĻž āϏāĻš āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ | ProHoster