āĻā§āĻĄāĻŋāĻŦāĻŋ+ āĻŦā§āϏ, āĻāĻŋāĻ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻŋāĻ āĻāĻžāώāĻž āĻā§, āϤāĻžāĻĻā§āϰ āĻļāĻā§āϤāĻŋ āĻāĻŦāĻ āĻĻā§āϰā§āĻŦāϞāϤāĻžāĻā§āϞāĻŋ āĻā§ āϤāĻž āĻāĻŽāĻžāϰ āĻāĻā§āϰ āϞā§āĻāĻžāϝāĻŧ āĻāĻĒāύāĻŋ āĻĒāĻĄāĻŧāϤ⧠āĻĒāĻžāϰā§āύ āĻāĻŦāĻ āϏāĻāĻā§āώāĻŋāĻĒā§āϤāĻāĻžāĻŦā§ āĻā§āĻŽāĻŋāĻāĻž. āύāĻŋāĻŦāύā§āϧā§, āĻāĻŽāϰāĻž Q-āϤ⧠āĻāĻāĻāĻŋ āĻĒāϰāĻŋāώā§āĻŦāĻž āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰāĻŦ āϝāĻž āĻāύāĻāĻžāĻŽāĻŋāĻ āĻĄā§āĻāĻž āϏā§āĻā§āϰāĻŋāĻŽ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āĻāϰāĻŦā§ āĻāĻŦāĻ "āϰāĻŋāϝāĻŧā§āϞ āĻāĻžāĻāĻŽ" āĻŽā§āĻĄā§ āĻĒā§āϰāϤāĻŋ āĻŽāĻŋāύāĻŋāĻā§ āĻŦāĻŋāĻāĻŋāύā§āύ āĻāĻāϤā§āϰā§āĻāϰāĻŖ āĻĢāĻžāĻāĻļāύ āĻāĻŖāύāĻž āĻāϰāĻŦā§ (āĻ āϰā§āĻĨāĻžā§, āĻĄā§āĻāĻžāϰ āĻĒāϰāĻŦāϰā§āϤ⧠āĻ āĻāĻļā§āϰ āĻāĻā§ āϏāĻŦāĻāĻŋāĻā§ āĻāĻŖāύāĻž āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻĨāĻžāĻāĻŦā§)āĨ¤ Q-āĻāϰ āĻĒā§āϰāϧāĻžāύ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ āĻšāϞ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āĻā§āĻāϰ āĻāĻžāώāĻž āϝāĻž āĻāĻĒāύāĻžāĻā§ āĻāĻāĻ āĻŦāϏā§āϤā§āϰ āϏāĻžāĻĨā§ āύāϝāĻŧ, āϤāĻžāĻĻā§āϰ āĻ ā§āϝāĻžāϰā§, āĻ ā§āϝāĻžāϰ⧠āĻāĻŦāĻ āĻ āύā§āϝāĻžāύā§āϝ āĻāĻāĻŋāϞ āĻŦāϏā§āϤā§āϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāϤ⧠āĻĻā§āϝāĻŧāĨ¤ Q āĻāĻŦāĻ āĻāϰ āĻāϤā§āĻŽā§āϝāĻŧ K, ââJ, APL āĻāϰ āĻŽāϤ⧠āĻāĻžāώāĻžāĻā§āϞāĻŋ āϤāĻžāĻĻā§āϰ āϏāĻāĻā§āώāĻŋāĻĒā§āϤāϤāĻžāϰ āĻāύā§āϝ āĻŦāĻŋāĻā§āϝāĻžāϤāĨ¤ āĻĒā§āϰāĻžāϝāĻŧāĻļāĻ, āĻāĻāĻāĻŋ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽ āϝāĻž āĻāĻžāĻāĻžāϰ āĻŽāϤ⧠āĻāĻāĻāĻŋ āĻĒāϰāĻŋāĻāĻŋāϤ āĻāĻžāώāĻžāϝāĻŧ āĻā§āĻĄā§āϰ āĻŦā§āĻļ āĻāϝāĻŧā§āĻāĻāĻŋ āϏā§āĻā§āϰāĻŋāύ āύā§āϝāĻŧ āϏā§āĻā§āϞāĻŋāϤ⧠āĻāϝāĻŧā§āĻāĻāĻŋ āϞāĻžāĻāύ⧠āϞā§āĻāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻ āĻāĻŽāĻŋ āĻāĻ āύāĻŋāĻŦāύā§āϧ⧠āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāϤ⧠āĻāĻžāύ āĻāĻŋ.

āĻā§āĻŽāĻŋāĻāĻž
KDB+ āĻšāϞ āĻāĻāĻāĻŋ āĻāϞāĻžāĻŽāĻžāϰ āĻĄāĻžāĻāĻžāĻŦā§āϏ āϝāĻž āĻā§āĻŦ āĻŦā§āĻļāĻŋ āĻĒāϰāĻŋāĻŽāĻžāĻŖā§ āĻĄā§āĻāĻžāϰ āĻāĻĒāϰ āĻĻā§āώā§āĻāĻŋ āύāĻŋāĻŦāĻĻā§āϧ āĻāϰā§, āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāĻĒāĻžāϝāĻŧā§ (āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻāĻāĻžāĻŦā§ āϏāĻŽāϝāĻŧ āĻ āύā§āϏāĻžāϰā§) āĻ āϰā§āĻĄāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻŋ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻāĻāĻžāĻŦā§ āĻāϰā§āĻĨāĻŋāĻ āĻĒā§āϰāϤāĻŋāώā§āĻ āĻžāύāĻā§āϞāĻŋāϤ⧠āĻŦā§āϝāĻŦāĻšā§āϤ āĻšāϝāĻŧ - āĻŦā§āϝāĻžāĻāĻ, āĻŦāĻŋāύāĻŋāϝāĻŧā§āĻ āϤāĻšāĻŦāĻŋāϞ, āĻŦā§āĻŽāĻž āĻā§āĻŽā§āĻĒāĻžāύāĻŋāĨ¤ Q āĻāĻžāώāĻž āĻšāϞ KDB+ āĻāϰ āĻ āĻā§āϝāύā§āϤāϰā§āĻŖ āĻāĻžāώāĻž āϝāĻž āĻāĻĒāύāĻžāĻā§ āĻāĻ āĻĄā§āĻāĻžāϰ āϏāĻžāĻĨā§ āĻāĻžāϰā§āϝāĻāϰāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰāϤ⧠āĻĻā§āϝāĻŧāĨ¤ Q āĻŽāϤāĻžāĻĻāϰā§āĻļ āĻšāϞ āϏāĻāĻā§āώāĻŋāĻĒā§āϤāϤāĻž āĻāĻŦāĻ āĻĻāĻā§āώāϤāĻž, āϝāĻāύ āϏā§āĻŦāĻā§āĻāϤāĻž āĻŦāϞāĻŋ āĻĻā§āĻāϝāĻŧāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻŋ āĻāĻ āϏāϤā§āϝā§āϰ āĻĻā§āĻŦāĻžāϰāĻž āύā§āϝāĻžāϝā§āϝ āϝ⧠āĻā§āĻā§āĻāϰ āĻāĻžāώāĻžāĻāĻŋ āϝ⧠āĻā§āύāĻ āĻā§āώā§āϤā§āϰ⧠āĻŦā§āĻāĻž āĻāĻ āĻŋāύ āĻšāĻŦā§ āĻāĻŦāĻ āϰā§āĻāϰā§āĻĄāĻŋāĻāϝāĻŧā§āϰ āϏāĻāĻā§āώāĻŋāĻĒā§āϤāϤāĻž āĻāĻŦāĻ āϏāĻŽā§āĻĻā§āϧāĻŋ āĻāĻĒāύāĻžāĻā§ āĻāĻāĻāĻŋ āϏā§āĻā§āϰāĻŋāύ⧠āĻĒā§āϰā§āĻā§āϰāĻžāĻŽā§āϰ āĻ āύā§āĻ āĻŦāĻĄāĻŧ āĻ āĻāĻļ āĻĻā§āĻāϤ⧠āĻĻā§āϝāĻŧ, āϝāĻž āĻļā§āώ āĻĒāϰā§āϝāύā§āϤ āĻŦā§āĻāĻž āϏāĻšāĻ āĻāϰ⧠āϤā§āϞā§āĨ¤
āĻāĻ āύāĻŋāĻŦāύā§āϧ⧠āĻāĻŽāϰāĻž Q-āϤ⧠āĻāĻāĻāĻŋ āĻĒā§āϰā§āĻŖāĻžāĻā§āĻ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽ āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύ āĻāϰā§āĻāĻŋ āĻāĻŦāĻ āĻāĻĒāύāĻŋ āĻāĻāĻŋ āĻā§āώā§āĻāĻž āĻāϰ⧠āĻĻā§āĻāϤ⧠āĻāĻžāĻāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻāĻāĻŋ āĻāϰāĻžāϰ āĻāύā§āϝ, āĻāĻĒāύāĻžāϰ āĻĒā§āϰāĻā§āϤ Q āĻĒā§āϰāϝāĻŧā§āĻāύ āĻšāĻŦā§āĨ¤ āĻāĻĒāύāĻŋ kx āĻā§āĻŽā§āĻĒāĻžāύāĻŋāϰ āĻāϝāĻŧā§āĻŦāϏāĻžāĻāĻā§ āĻŦāĻŋāύāĻžāĻŽā§āϞā§āϝ⧠32-āĻŦāĻŋāĻ āϏāĻāϏā§āĻāϰāĻŖ āĻĄāĻžāĻāύāϞā§āĻĄ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ - . āϏā§āĻāĻžāύā§, āĻāĻĒāύāĻŋ āĻāĻā§āϰāĻšā§ āĻšāϞā§, āĻāĻĒāύāĻŋ 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;
āĻāĻāύ āĻāϞāĻžāĻŽāĻā§āϞāĻŋāĻā§ āĻā§āĻāĻžāĻŦā§ āĻāĻĒāĻĄā§āĻ āĻāϰāĻž āĻāĻāĻŋāϤ āϏ⧠āĻ āύā§āϝāĻžāϝāĻŧā§ āĻā§āϰā§āĻĒā§ āĻāĻžāĻ āĻāϰāĻž āϝāĻžāĻāĨ¤ āϤāĻŋāύ āϧāϰāύā§āϰ āĻĒāĻžāϰā§āĻĨāĻā§āϝ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§:
- āϏāĻā§āĻāϝāĻŧāĻāĻžāϰ⧠(āĻāϞāĻŋāĻāĻŽ, āĻāĻžāϰā§āύāĻāĻāĻžāϰ, ..) - āĻāĻŽāĻžāĻĻā§āϰ āĻ āĻŦāĻļā§āϝāĻ āĻāĻā§āϰāĻāĻŋāϰ āϏāĻžāĻĨā§ āĻāύāĻāĻžāĻŽāĻŋāĻ āĻŽāĻžāύ āϝā§āĻ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
- āĻāĻāĻāĻŋ āĻŦāĻŋāĻļā§āώ āĻĒāϝāĻŧā§āύā§āĻā§āϰ āϏāĻžāĻĨā§ (āĻāĻā§āĻ, āύāĻŋāĻŽā§āύ, ..) - āĻŽāĻŋāύāĻŋāĻā§āϰ āĻĒā§āϰāĻĨāĻŽ āĻŽāĻžāύāĻāĻŋ āĻāύāĻāĻžāĻŽāĻŋāĻ āĻĄā§āĻāĻž āĻĨā§āĻā§ āύā§āĻāϝāĻŧāĻž āĻšāϝāĻŧ, āĻŦāĻžāĻāĻŋāĻā§āϞāĻŋ āĻĢāĻžāĻāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻŖāύāĻž āĻāϰāĻž āĻšāϝāĻŧāĨ¤
- āĻŦāĻŋāĻļā§āϰāĻžāĻŽ. āϏāϰā§āĻŦāĻĻāĻž āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻŖāύāĻž āĻāϰāĻž āĻšāϝāĻŧāĨ¤
āĻāϞā§āύ āĻāĻ āĻļā§āϰā§āĻŖā§āϰ āĻāύā§āϝ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻāϰāĻž āϝāĻžāĻ:
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
