เด’เดฐเต เดคเดคเตเดธเดฎเดฏ เดธเต‡เดตเดจเดคเตเดคเดฟเดจเตเดฑเต† เด‰เดฆเดพเดนเดฐเดฃเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต Q, KDB+ เดญเดพเดทเด•เดณเตเดŸเต† เดธเดตเดฟเดถเต‡เดทเดคเด•เตพ

KDB+ เดฌเต‡เดธเต, Q เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเด‚เด—เต เดญเดพเดท เดŽเดจเตเดคเดพเดฃเต†เดจเตเดจเตเด‚ เด…เดตเดฏเตเดŸเต† เดถเด•เตเดคเดฟเดฏเตเด‚ เดฌเดฒเดนเต€เดจเดคเด•เดณเตเด‚ เดŽเดจเตเดคเดพเดฃเต†เดจเตเดจเตเด‚ เดŽเดจเตเดฑเต† เดฎเตเดฎเตเดชเดคเตเดคเต†เดคเดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดตเดพเดฏเดฟเด•เตเด•เดพเด‚ เดฒเต‡เด–เดจเด‚ เด†เดฎเตเด–เดคเตเดคเดฟเตฝ เดธเด‚เด•เตเดทเดฟเดชเตเดคเดฎเดพเดฏเดฟ. เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ, เด‡เตปเด•เดฎเดฟเด‚เด—เต เดกเดพเดฑเตเดฑเดพ เดธเตเดŸเตเดฐเต€เด‚ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจ เด’เดฐเต เดธเต‡เดตเดจเด‚ เดžเด™เตเด™เตพ Q-เตฝ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเด‚, เด•เต‚เดŸเดพเดคเต† "เดฑเดฟเดฏเตฝ เดŸเตˆเด‚" เดฎเต‹เดกเดฟเตฝ เด“เดฐเต‹ เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดฒเตเด‚ เดตเดฟเดตเดฟเดง เด…เด—เตเดฐเด—เต‡เดทเตป เดซเด‚เด—เตเดทเดจเตเด•เตพ เด•เดฃเด•เตเด•เดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚ (เด…เดคเดพเดฏเดคเต, เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เด…เดŸเตเดคเตเดค เดญเดพเด—เดคเตเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดŽเดฒเตเดฒเดพเด‚ เด•เดฃเด•เตเด•เดพเด•เตเด•เดพเตป เดธเดฎเดฏเดฎเตเดฃเตเดŸเดพเด•เตเด‚). เด’เดฑเตเดฑ เด’เดฌเตโ€Œเดœเด•เตโ€Œเดฑเตเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดฒเตเดฒ, เด…เดตเดฏเตเดŸเต† เด…เดฑเต‡เด•เตพ, เด…เดฑเต‡เด•เดณเตเดŸเต† เด…เดฑเต‡เด•เตพ, เดฎเดฑเตเดฑเต เดธเด™เตเด•เต€เตผเดฃเตเดฃ เดตเดธเตเดคเตเด•เตเด•เตพ เดŽเดจเตเดจเดฟเดต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ เดตเต†เด•เตเดฑเตเดฑเตผ เดญเดพเดทเดฏเดพเดฃเต เด•เตเดฏเต‚เดตเดฟเดจเตเดฑเต† เดชเตเดฐเดงเดพเดจ เดธเดตเดฟเดถเต‡เดทเดค. เด•เตเดฏเต, เด…เดคเดฟเดจเตเดฑเต† เดฌเดจเตเดงเตเด•เตเด•เดณเดพเดฏ เด•เต†, เดœเต†, เดŽเดชเดฟเดŽเตฝ เดคเตเดŸเด™เตเด™เดฟเดฏ เดญเดพเดทเด•เตพ เด…เดตเดฏเตเดŸเต† เดธเด‚เด•เตเดทเดฟเดชเตโ€Œเดคเดคเดฏเตเด•เตเด•เต เดชเตเดฐเดธเดฟเดฆเตเดงเดฎเดพเดฃเต. เดฎเดฟเด•เตเด•เดชเตเดชเต‹เดดเตเด‚, เดœเดพเดต เดชเต‹เดฒเตเดณเตเดณ เดชเดฐเดฟเดšเดฟเดคเดฎเดพเดฏ เดญเดพเดทเดฏเดฟเตฝ เด•เต‹เดกเดฟเดจเตเดฑเต† เดจเดฟเดฐเดตเดงเดฟ เดธเตโ€Œเด•เตเดฐเต€เดจเตเด•เตพ เดŽเดŸเตเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เด…เดตเดฏเดฟเตฝ เด•เตเดฑเดšเตเดšเต เดตเดฐเดฟเด•เดณเดฟเตฝ เดŽเดดเตเดคเดพเด‚. เด‡เดคเดพเดฃเต เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดžเดพเตป เดชเตเดฐเด•เดŸเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเดคเต.

เด’เดฐเต เดคเดคเตเดธเดฎเดฏ เดธเต‡เดตเดจเดคเตเดคเดฟเดจเตเดฑเต† เด‰เดฆเดพเดนเดฐเดฃเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต Q, KDB+ เดญเดพเดทเด•เดณเตเดŸเต† เดธเดตเดฟเดถเต‡เดทเดคเด•เตพ

เด†เดฎเตเด–เด‚

KDB+ เดŽเดจเตเดจเดคเต เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดฐเต€เดคเดฟเดฏเดฟเตฝ (เดชเตเดฐเดพเดฅเดฎเดฟเด•เดฎเดพเดฏเดฟ เดธเดฎเดฏเด‚ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต) เด•เตเดฐเดฎเต€เด•เดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ, เดตเดณเดฐเต† เดตเดฒเดฟเดฏ เด…เดณเดตเดฟเดฒเตเดณเตเดณ เดกเดพเดฑเตเดฑเดฏเดฟเตฝ เดถเตเดฐเดฆเตเดง เด•เต‡เดจเตเดฆเตเดฐเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เด•เต‹เดณเด‚ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดพเดฃเต. เด‡เดคเต เดชเตเดฐเดพเดฅเดฎเดฟเด•เดฎเดพเดฏเดฟ เดงเดจเด•เดพเดฐเตเดฏ เดธเตเดฅเดพเดชเดจเด™เตเด™เดณเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต - เดฌเดพเด™เตเด•เตเด•เตพ, เดจเดฟเด•เตเดทเต‡เดช เดซเดฃเตเดŸเตเด•เตพ, เด‡เตปเดทเตเดฑเตปเดธเต เด•เดฎเตเดชเดจเดฟเด•เตพ. เดˆ เดกเดพเดฑเตเดฑ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดซเดฒเดชเตเดฐเดฆเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ KDB+ เดจเตเดฑเต† เด†เดจเตเดคเดฐเดฟเด• เดญเดพเดทเดฏเดพเดฃเต Q เดญเดพเดท. Q เดชเตเดฐเดคเตเดฏเดฏเดถเดพเดธเตเดคเตเดฐเด‚ เดธเด‚เด•เตเดทเดฟเดชเตเดคเดคเดฏเตเด‚ เด•เดพเดฐเตเดฏเด•เตเดทเดฎเดคเดฏเตเด‚ เด†เดฃเต, เด…เดคเต‡เดธเดฎเดฏเด‚ เดตเตเดฏเด•เตเดคเดค เดฌเดฒเดฟเด•เดดเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต. เดเดคเต เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเดฒเตเด‚ เดตเต†เด•เตเดฑเตเดฑเตผ เดญเดพเดท เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเตป เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเดพเดฃเต เดŽเดจเตเดจ เดตเดธเตเดคเตเดค เด‡เดคเต เดจเตเดฏเดพเดฏเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เดฑเต†เด•เตเด•เต‹เตผเดกเดฟเด‚เด—เดฟเดจเตเดฑเต† เดธเด‚เด•เตเดทเดฟเดชเตเดคเดคเดฏเตเด‚ เดธเดฎเตเดชเดจเตเดจเดคเดฏเตเด‚ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดจเตเดฑเต† เดตเดฒเดฟเดฏเตŠเดฐเต เดญเดพเด—เด‚ เด’เดฐเต เดธเตเด•เตเดฐเต€เดจเดฟเตฝ เด•เดพเดฃเดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต, เด‡เดคเต เด†เดคเตเดฏเดจเตเดคเดฟเด•เดฎเดพเดฏเดฟ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเต เดŽเดณเตเดชเตเดชเดฎเดพเด•เตเด•เตเดจเตเดจเต.

เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดžเด™เตเด™เตพ Q-เตฝ เด’เดฐเต เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏ เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต, เดจเดฟเด™เตเด™เตพ เด…เดคเต เดชเดฐเต€เด•เตเดทเดฟเดšเตเดšเตเดจเต‹เด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเดšเตเดšเต‡เด•เตเด•เดพเด‚. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฏเดฅเดพเตผเดคเตเดฅ Q เด†เดตเดถเตเดฏเดฎเดพเดฃเต. kx เด•เดฎเตเดชเดจเดฟ เดตเต†เดฌเตเดธเตˆเดฑเตเดฑเดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเต—เดœเดจเตเดฏ 32-เดฌเดฟเดฑเตเดฑเต เดชเดคเดฟเดชเตเดชเต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเด‚ - www.kx.com. เด…เดตเดฟเดŸเต†, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, Q เดŽเดจเตเดจ เดชเตเดธเตเดคเด•เดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดฑเดซเดฑเตปเดธเต เดตเดฟเดตเดฐเด™เตเด™เตพ เดจเดฟเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเตเด‚ เด•เตเดฏเต เดซเต‹เตผ เดฎเต‹เตผเดŸเตเดŸเตฝเดธเต เดˆ เดตเดฟเดทเดฏเดคเตเดคเดฟเตฝ เดตเดฟเดตเดฟเดง เดฒเต‡เด–เดจเด™เตเด™เดณเตเด‚.

เดชเตเดฐเดถเตเดจ เดชเตเดฐเดธเตเดคเดพเดตเดจ

เด“เดฐเต‹ 25 เดฎเดฟเดฒเตเดฒเดฟเดธเต†เด•เตเด•เตปเดกเดฟเดฒเตเด‚ เดกเดพเดฑเตเดฑเดฏเตเดณเตเดณ เด’เดฐเต เดชเดŸเตเดŸเดฟเด• เด…เดฏเดฏเตเด•เตเด•เตเดจเตเดจ เด’เดฐเต เด‰เดฑเดตเดฟเดŸเดฎเตเดฃเตเดŸเต. KDB+ เดชเตเดฐเดพเดฅเดฎเดฟเด•เดฎเดพเดฏเดฟ เดงเดจเด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเตฝ, เด‡เดคเต เด‡เดŸเดชเดพเดŸเตเด•เดณเตเดŸเต† (เดŸเตเดฐเต‡เดกเตเด•เตพ) เด’เดฐเต เดชเดŸเตเดŸเดฟเด•เดฏเดพเดฃเต†เดจเตเดจเต เดžเด™เตเด™เตพ เด…เดจเตเดฎเดพเดจเดฟเด•เตเด•เตเด‚, เด…เดคเดฟเตฝ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดจเดฟเดฐเด•เดณเดพเดฃเตเดณเตเดณเดคเต: เดธเดฎเดฏเด‚ (เดธเดฎเดฏเด‚ เดฎเดฟเดฒเตเดฒเดฟเดธเต†เด•เตเด•เตปเดกเดฟเตฝ), เดธเดฟเด‚ (เดธเตเดฑเตเดฑเต‹เด•เตเด•เต เดŽเด•เตเดธเตเดšเต‡เดžเตเดšเดฟเดฒเต† เด•เดฎเตเดชเดจเดฟ เดชเดฆเดตเดฟ - เดเดฌเดฟเดŽเด‚, AAPL,...), เดตเดฟเดฒ (เดทเต†เดฏเดฑเตเด•เตพ เดตเดพเด™เตเด™เดฟเดฏ เดตเดฟเดฒ), เดตเดฒเดฟเดชเตเดชเด‚ (เด‡เดŸเดชเดพเดŸเดฟเดจเตเดฑเต† เดตเดฒเดฟเดชเตเดชเด‚). 25 เดฎเดฟเดฒเตเดฒเดฟเดธเต†เด•เตเด•เตปเดกเต เด‡เดŸเดตเต‡เดณ เดเด•เดชเด•เตเดทเต€เดฏเดฎเดพเดฃเต, เดตเดณเดฐเต† เดšเต†เดฑเตเดคเดฒเตเดฒ, เดฆเตˆเตผเด˜เตเดฏเดฎเต‡เดฑเดฟเดฏเดคเตเดฎเดฒเตเดฒ. เด…เดคเดฟเดจเตเดฑเต† เดธเดพเดจเตเดจเดฟเดงเตเดฏเด‚ เด…เตผเดคเตเดฅเดฎเดพเด•เตเด•เตเดจเตเดจเดคเต เดกเดพเดฑเตเดฑ เด‡เดคเดฟเดจเด•เด‚ เดฌเดซเตผ เดšเต†เดฏเตเดค เดธเต‡เดตเดจเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดตเดฐเตเดจเตเดจเต เดŽเดจเตเดจเดพเดฃเต. เดจเดฟเดฒเดตเดฟเดฒเต† เดฒเต‹เดกเดฟเดจเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเต เดกเตˆเดจเดพเดฎเดฟเด•เต เดฌเดซเดฑเดฟเด‚เด—เต เด‰เตพเดชเตเดชเต†เดŸเต†, เดธเต‡เดตเดจ เดญเดพเด—เดคเตเดคเต เดฌเดซเดฑเดฟเด‚เด—เต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเต เดŽเดณเตเดชเตเดชเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚, เดŽเดจเตเดจเดพเตฝ เดฒเดพเดณเดฟเดคเตเดฏเดคเตเดคเดฟเดจเดพเดฏเดฟ, เดžเด™เตเด™เตพ เด’เดฐเต เดจเดฟเดถเตเดšเดฟเดค เด‡เดŸเดตเต‡เดณเดฏเดฟเตฝ เดถเตเดฐเดฆเตเดง เด•เต‡เดจเตเดฆเตเดฐเต€เด•เดฐเดฟเด•เตเด•เตเด‚.

เดธเดฟเด‚ เด•เต‹เดณเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด“เดฐเต‹ เด‡เตปเด•เดฎเดฟเด‚เด—เต เดšเดฟเดนเตเดจเดคเตเดคเดฟเดจเตเด‚ เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพ - เดชเดฐเดฎเดพเดตเดงเดฟ เดตเดฟเดฒ, เดถเดฐเดพเดถเดฐเดฟ เดตเดฟเดฒ, เดคเตเด•เดฏเตเดŸเต† เดตเดฒเตเดชเตเดชเด‚ เดฎเตเดคเดฒเดพเดฏเดต เดˆ เดธเต‡เดตเดจเด‚ เด“เดฐเต‹ เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดฒเตเด‚ เด•เดฃเด•เตเด•เดพเด•เตเด•เดฃเด‚. เด‰เดชเด•เดพเดฐเดชเตเดฐเดฆเดฎเดพเดฏ เดตเดฟเดตเดฐเด‚. เดฒเดพเดณเดฟเดคเตเดฏเดคเตเดคเดฟเดจเดพเดฏเดฟ, เดŽเดฒเตเดฒเดพ เดซเด‚เด—เตเดทเดจเตเด•เดณเตเด‚ เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเดšเตเดšเต เด•เดฃเด•เตเด•เดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดฎเต†เดจเตเดจเต เดžเด™เตเด™เตพ เด…เดจเตเดฎเดพเดจเดฟเด•เตเด•เตเด‚, เด…เดคเดพเดฏเดคเต. เด’เดฐเต เดชเตเดคเดฟเดฏ เดฎเต‚เดฒเตเดฏเด‚ เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดฐเดฃเตเดŸเต เดธเด‚เด–เตเดฏเด•เตพ เด…เดฑเดฟเดžเตเดžเดพเตฝ เดฎเดคเดฟ - เดชเดดเดฏเดคเตเด‚ เด‡เตปเด•เดฎเดฟเด‚เด—เต เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเตเด‚. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดชเดฐเดฎเดพเดตเดงเดฟ, เดถเดฐเดพเดถเดฐเดฟ, เดคเตเด• เดŽเดจเตเดจเต€ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพเด•เตเด•เต เดˆ เด—เตเดฃเดฎเตเดฃเตเดŸเต, เดŽเดจเตเดจเดพเตฝ เดฎเต€เดกเดฟเดฏเตป เดซเด‚เด—เตโ€Œเดทเดจเดฟเดฒเตเดฒ.

เด‡เตปเด•เดฎเดฟเด‚เด—เต เดกเดพเดฑเตเดฑ เดธเตเดŸเตเดฐเต€เด‚ เดธเดฎเดฏเด‚ เด•เตเดฐเดฎเต€เด•เดฐเดฟเดšเตเดšเดคเดพเดฃเต†เดจเตเดจเตเด‚ เดžเด™เตเด™เตพ เด…เดจเตเดฎเดพเดจเดฟเด•เตเด•เตเด‚. เด‡เดคเต เด…เดตเดธเดพเดจ เดจเดฟเดฎเดฟเดทเด‚ เด•เตŠเดฃเตเดŸเต เดฎเดพเดคเตเดฐเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เด…เดตเดธเดฐเด‚ เดจเตฝเด•เตเด‚. เดชเตเดฐเดพเดฏเต‹เด—เดฟเด•เดฎเดพเดฏเดฟ, เดšเดฟเดฒ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเตเด•เตพ เดตเตˆเด•เดฟเดฏเดพเตฝ เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณเดคเตเด‚ เดฎเตเดฎเตเดชเดคเตเดคเต†เดคเตเดฎเดพเดฏ เดฎเดฟเดจเดฟเดฑเตเดฑเตเด•เตพเด•เตเด•เตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดžเตเดžเดพเตฝ เดฎเดคเดฟ. เดฒเดพเดณเดฟเดคเตเดฏเดคเตเดคเดฟเดจเดพเดฏเดฟ, เดžเด™เตเด™เตพ เดˆ เด•เต‡เดธเต เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เดฟเดฒเตเดฒ.

เด…เด—เตเดฐเด—เต‡เดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ

เด†เดตเดถเตเดฏเดฎเดพเดฏ เด…เด—เตเดฐเด—เต‡เดทเตป เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพ เดšเตเดตเดŸเต† เดชเดŸเตเดŸเดฟเด•เดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดธเต‡เดตเดจเดคเตเดคเดฟเดฒเต† เดฒเต‹เดกเต เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดžเดพเตป เด…เดตเดฏเดฟเตฝ เดชเดฐเดฎเดพเดตเดงเดฟ เดŽเดŸเตเดคเตเดคเต:

  • เด‰เดฏเตผเดจเตเดจ - เดชเดฐเดฎเดพเดตเดงเดฟ เดตเดฟเดฒ - เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดจเต เดชเดฐเดฎเดพเดตเดงเดฟ เดตเดฟเดฒ.
  • เด•เตเดฑเดžเตเดž - เดฎเดฟเดจเดฟเดฑเตเดฑเต เดตเดฟเดฒ - เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดจเต เด•เตเดฑเดžเตเดž เดตเดฟเดฒ.
  • เด†เดฆเตเดฏเดตเดฟเดฒ - เด†เดฆเตเดฏ เดตเดฟเดฒ - เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดจเต เด†เดฆเตเดฏ เดตเดฟเดฒ.
  • เด…เดตเดธเดพเดจ เดตเดฟเดฒ - เด…เดตเดธเดพเดจ เดตเดฟเดฒ - เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดฒเต† เด…เดตเดธเดพเดจ เดตเดฟเดฒ.
  • เด†เดฆเตเดฏ เดตเดฒเตเดชเตเดชเด‚ - เด†เดฆเตเดฏ เดตเดฒเตเดชเตเดชเด‚ - เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเตฝ เด†เดฆเตเดฏ เดตเตเดฏเดพเดชเดพเดฐ เดตเดฒเตเดชเตเดชเด‚.
  • lastSize - เด…เดตเดธเดพเดจ เดตเดฒเตเดชเตเดชเด‚ - เด’เดฐเต เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดจเตเดณเตเดณเดฟเตฝ เด…เดตเดธเดพเดจ เดตเตเดฏเดพเดชเดพเดฐ เดตเดฒเตเดชเตเดชเด‚.
  • numTrades - เด•เต—เดฃเตเดŸเต i - เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดฒเต† เดŸเตเดฐเต‡เดกเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚.
  • เดตเต‹เดณเดฟเดฏเด‚ - เด†เด•เต† เดตเดฒเตเดชเตเดชเด‚ - เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดฒเต† เดตเตเดฏเดพเดชเดพเดฐ เดตเดฒเตเดชเตเดชเด™เตเด™เดณเตเดŸเต† เด†เด•เต†เดคเตเดคเตเด•.
  • pvolume - เดคเตเด•เดฏเตเดŸเต† เดตเดฟเดฒ - เด’เดฐเต เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดฒเต† เดตเดฟเดฒเด•เดณเตเดŸเต† เด†เด•เต†เดคเตเดคเตเด•, เดถเดฐเดพเดถเดฐเดฟ เดตเดฟเดฒเดฏเตเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเดพเดฃเต.
  • - เดคเตเด• เดตเดฟเดฑเตเดฑเตเดตเดฐเดตเต เดตเดฟเดฒ* เดตเดฒเตเดชเตเดชเด‚ - เด’เดฐเต เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดฒเต† เด‡เดŸเดชเดพเดŸเตเด•เดณเตเดŸเต† เด†เด•เต† เด…เดณเดตเต.
  • เดถเดฐเดพเดถเดฐเดฟ เดตเดฟเดฒ - pvolume%numTrades - เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดจเต เดถเดฐเดพเดถเดฐเดฟ เดตเดฟเดฒ.
  • เดถเดฐเดพเดถเดฐเดฟ เดตเดฒเตเดชเตเดชเด‚ - เดตเต‹เดณเดฟเดฏเด‚% numTrades - เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเตฝ เดถเดฐเดพเดถเดฐเดฟ เดตเตเดฏเดพเดชเดพเดฐ เดตเดฒเตเดชเตเดชเด‚.
  • vwap - เดตเดฟเดฑเตเดฑเตเดตเดฐเดตเต% เดตเต‹เดณเดฟเดฏเด‚ - เด‡เดŸเดชเดพเดŸเดฟเดจเตเดฑเต† เดตเดฒเตเดชเตเดชเด‚ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดจเต เดถเดฐเดพเดถเดฐเดฟ เดตเดฟเดฒ.
  • cumVolume - เดธเด‚ เดตเต‹เดณเดฟเดฏเด‚ - เดฎเตเดดเตเดตเตป เดธเดฎเดฏเดตเตเด‚ เด‡เดŸเดชเดพเดŸเตเด•เดณเตเดŸเต† เดธเดžเตเดšเดฟเดค เดตเดฒเตเดชเตเดชเด‚.

เดตเตเดฏเด•เตเดคเดฎเดฒเตเดฒเดพเดคเตเดค เด’เดฐเต เดชเต‹เดฏเดฟเดจเตเดฑเต เดจเดฎเตเด•เตเด•เต เด‰เดŸเตป เดšเตผเดšเตเดš เดšเต†เดฏเตเดฏเดพเด‚ - เดˆ เด•เต‹เดณเด™เตเด™เตพ เด†เดฆเตเดฏเดฎเดพเดฏเดฟ เดŽเด™เตเด™เดจเต† เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเด‚, เดคเตเดŸเตผเดจเตเดจเตเดณเตเดณ เด“เดฐเต‹ เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดฒเตเด‚. เด“เดฐเต‹ เดคเดตเดฃเดฏเตเด‚ เด…เดธเดพเดงเตเดตเดพเด•เตเด•เดพเตป เดซเดธเตเดฑเตเดฑเต เดชเตเดฐเตˆเดธเต เดคเดฐเดคเตเดคเดฟเดจเตเดฑเต† เดšเดฟเดฒ เด•เต‹เดณเด™เตเด™เตพ เด†เดฐเด‚เดญเดฟเด•เตเด•เดฃเด‚; เด…เดตเดฏเตเดŸเต† เดฎเต‚เดฒเตเดฏเด‚ เดจเดฟเตผเดตเดšเดฟเดšเตเดšเดฟเดŸเตเดŸเดฟเดฒเตเดฒ. เดฎเดฑเตเดฑเต เดตเต‹เดณเดฟเดฏเด‚ เดคเดฐเด™เตเด™เตพ เดŽเดฒเตเดฒเดพเดฏเตโ€Œเดชเตเดชเต‹เดดเตเด‚ 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 ะพะฑัŠััะฝะตะฝ ะฝะธะถะต

เดธเต—เด•เดฐเตเดฏเดพเตผเดคเตเดฅเด‚ เดžเดพเตป เดจเดฟเด˜เดฃเตเดŸเตเดตเดฟเดฒเต‡เด•เตเด•เต เดธเดฟเดฎเตเดฎเตเด‚ เดธเดฎเดฏเดตเตเด‚ เดšเต‡เตผเดคเตเดคเต, เด‡เดชเตเดชเต‹เตพ initWith เด…เดจเตเดคเดฟเดฎ เดธเดฎเดพเดนเดฐเดฟเดšเตเดš เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด’เดฐเต เดฑเต†เดกเดฟเดฎเต†เดฏเตเดกเต เดฒเตˆเดจเดพเดฃเต, เด…เดตเดฟเดŸเต† เดถเดฐเดฟเดฏเดพเดฏ เดธเดฟเดฎเตเดฎเตเด‚ เดธเดฎเดฏเดตเตเด‚ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เดพเตป เด…เดตเดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเต. เด’เดฐเต เดชเดŸเตเดŸเดฟเด•เดฏเดฟเดฒเต‡เด•เตเด•เต เดชเตเดคเดฟเดฏ เดตเดฐเดฟเด•เตพ เดšเต‡เตผเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚.

เด’เดฐเต เด…เด—เตเดฐเด—เต‡เดทเตป เดซเด‚เด—เตโ€Œเดทเตป เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดžเด™เตเด™เตพเด•เตเด•เต 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 เด’เดฐเต เดตเต†เด•เตเดฑเตเดฑเตผ เดญเดพเดทเดฏเดพเดฏเดคเดฟเดจเดพเตฝ, เดŽเดฒเตเดฒเดพ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเด‚ เด’เดฑเตเดฑเดฏเดŸเดฟเด•เตเด•เต เดจเดฎเตเด•เตเด•เต เดŽเดฒเตเดฒเดพ เดšเดฟเดนเตเดจเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เตเด‚ เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚, เดคเตเดŸเตผเดจเตเดจเต เดจเดฎเตเด•เตเด•เต เด’เดฐเต เดฒเต‚เดชเตเดชเต เด‡เดฒเตเดฒเดพเดคเต† เดคเดจเตเดจเต† เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚, เดŽเดฒเตเดฒเดพ เดšเดฟเดนเตเดจเด™เตเด™เดณเดฟเดฒเตเด‚ เด’เดฐเต‡เดธเดฎเดฏเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดจเดŸเดคเตเดคเดพเด‚:

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;โ€ฆ)];

เดžเด™เตเด™เตพ เดตเต€เดฃเตเดŸเตเด‚ เดซเด‚เด—เตเดทเตป เดชเตเดฐเตŠเดœเด•เตเดทเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. Q-เตฝ, เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเต เด’เดฐเต เดซเด‚เด—เตโ€Œเดทเดจเดพเดฃเต†เดจเตเดจเตเด‚ เดฒเดฟเดธเตเดฑเตเดฑเตเด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด“เดฐเต‹(เดฎเดพเดชเตเดชเต) เดซเด‚เด—เตโ€Œเดทเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฎเตเด•เตเด•เต เด…เดคเดฟเดจเต† เดตเดฟเดณเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด•.

เด•เดฃเด•เตเด•เดพเด•เตเด•เดฟเดฏ เดจเดฟเดฐเด•เดณเตเดŸเต† เดธเต†เดฑเตเดฑเต เด‰เดฑเดชเตเดชเดฟเดšเตเดšเดฟเดŸเตเดŸเดฟเดฒเตเดฒเต†เดจเตเดจเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เดพเตป, เดฎเตเด•เดณเดฟเตฝ เดชเดฑเดžเตเดž เดชเดฆเดชเตเดฐเดฏเต‹เด—เด‚ เดžเด™เตเด™เตพ เดšเดฒเดจเดพเดคเตเดฎเด•เดฎเดพเดฏเดฟ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด‚. เดธเดฎเดพเดนเดฐเดฟเดšเตเดšเดคเตเด‚ เด‡เตปเดชเตเดŸเตเดŸเต เดกเดพเดฑเตเดฑเดฏเตเด‚ เดฑเดซเตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดตเดฐเดฟเดฏเตเด‚ เด‡เตปเดชเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด“เดฐเต‹ เดจเดฟเดฐเดฏเตเด‚ เด•เดฃเด•เตเด•เดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดซเด‚เด—เตเดทเดจเตเด•เตพ เดจเดฎเตเด•เตเด•เต เด†เดฆเตเดฏเด‚ เดจเดฟเตผเดตเดšเดฟเด•เตเด•เดพเด‚:

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 เดจเต เด’เดฐเต เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดค เดซเด‚เด—เตโ€Œเดทเตป เด‰เดฃเตเดŸเต - ?[เดฌเต‚เดณเดฟเดฏเตป เดฒเดฟเดธเตเดฑเตเดฑเต;list1;list2] - เด‡เดคเต เด†เดฆเตเดฏ เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเดฟเดฒเต† เดตเตเดฏเดตเดธเตเดฅเดฏเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเต เดชเดŸเตเดŸเดฟเด• 1 เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ 2 เตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เดฎเต‚เดฒเตเดฏเด‚ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเดจเตเดจเต:

// high -> ?[isFirst;inp`high;row[`high]|inp`high]
// @ - ั‚ะพะถะต ะพะฑะพะฑั‰ะตะฝะฝะพะต ะฟั€ะธัะฒะฐะธะฒะฐะฝะธะต ะดะปั ัะปัƒั‡ะฐั ะบะพะณะดะฐ ะธะฝะดะตะบั ะฝะตะณะปัƒะฑะพะบะธะน
@[`aggExpression;specialCols;{[x;y]"?[isFirst;inp`",y,";",x,"]"};string specialCols];

เด‡เดตเดฟเดŸเต† เดžเดพเตป เดŽเดจเตเดฑเต† เดซเด‚เด—เตโ€Œเดทเดจเตเดณเตเดณ เด’เดฐเต เดธเดพเดฎเดพเดจเตเดฏเดตเตฝเด•เตเด•เดฐเดฟเดšเตเดš เด…เดธเตˆเตปเดฎเต†เดจเตเดฑเดฟเดจเต† เดตเดฟเดณเดฟเดšเตเดšเต (เดšเตเดฐเตเดฃเตเดŸ เดฌเตเดฐเต‡เดธเตเด•เดณเดฟเดฒเต† เด’เดฐเต เดชเดฆเดชเตเดฐเดฏเต‹เด—เด‚). เด‡เดคเดฟเดจเต เดจเดฟเดฒเดตเดฟเดฒเต† เดฎเต‚เดฒเตเดฏเดตเตเด‚ (เด†เดฆเตเดฏเดคเตเดคเต† เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเต) เด’เดฐเต เด…เดงเดฟเด• เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเตเด‚ เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเต เดžเดพเตป เดจเดพเดฒเดพเดฎเดคเตเดคเต† เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเดฟเตฝ เดชเดพเดธเตเดธเดพเด•เตเด•เตเดจเตเดจเต.

เดฌเดพเดฑเตเดฑเดฑเดฟ เดธเตเดชเต€เด•เตเด•เดฑเตเด•เตพ เดตเต†เดตเตเดตเต‡เดฑเต† เดšเต‡เตผเด•เตเด•เดพเด‚, เด•เดพเดฐเดฃเด‚ เด…เดตเดฏเตโ€Œเด•เตเด•เตเดณเตเดณ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดธเดฎเดพเดจเดฎเดพเดฃเต:

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

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:{[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 เดฆเดถเดฒเด•เตเดทเด‚ เดตเดฐเดฟเด•เตพ) เดตเดณเดฐเต† เดตเดฒเตเดคเดพเดฃเต; เด…เดคเตเดคเดฐเด‚ เดธเดจเตเดฆเตผเดญเด™เตเด™เดณเดฟเตฝ, เดธเต‡เดตเดจเดคเตเดคเดฟเดจเตเดฑเต† เดจเดฟเดฐเดตเดงเดฟ เด•เตเดฒเต‹เดฃเตเด•เตพ (เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดกเดธเตป เด•เดฃเด•เตเด•เดฟเดจเต เด•เตเดฒเต‹เดฃเตเด•เตพ เดชเต‹เดฒเตเด‚) เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเต เดธเดพเดงเดพเดฐเดฃเดฎเดพเดฃเต, เด…เดตเดฏเดฟเตฝ เด“เดฐเต‹เดจเตเดจเตเด‚ เดชเตเดฐเดคเต€เด•เด™เตเด™เดณเตเดŸเต† เด’เดฐเต เดญเดพเด—เด‚ เดฎเดพเดคเตเดฐเด‚ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดชเตเดฐเดพเดฅเดฎเดฟเด•เดฎเดพเดฏเดฟ เดกเดพเดฑเตเดฑ เดธเด‚เดญเดฐเดฃเดคเตเดคเดฟเตฝ เดถเตเดฐเดฆเตเดง เด•เต‡เดจเตเดฆเตเดฐเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดตเตเดฏเดพเด–เตเดฏเดพเดจ เดญเดพเดทเดฏเตเด•เตเด•เต เดซเดฒเด‚ เดถเตเดฐเดฆเตเดงเต‡เดฏเดฎเดพเดฃเต.

เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต เด“เดฐเต‹ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเดฟเดจเตเดฑเต†เดฏเตเด‚ เดตเดฒเตเดชเตเดชเดคเตเดคเดฟเดจเตŠเดชเตเดชเด‚ เดธเดฎเดฏเด‚ เดฐเต‡เด–เต€เดฏเดฎเดฒเตเดฒเดพเดคเตเดค เดฐเต€เดคเดฟเดฏเดฟเตฝ เดตเดณเดฐเตเดจเตเดจเดคเต เดŽเดจเตเดจ เดšเต‹เดฆเตเดฏเด‚ เด‰เดฏเตผเดจเตเดจเต‡เด•เตเด•เดพเด‚. เด•เดพเดฐเดฃเด‚, เดทเตเดฐเดฟเด™เตเด•เต เดซเด‚เด—เตโ€Œเดทเตป เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เด’เดฐเต C เดซเด‚เด—เตโ€Œเดทเดจเดพเดฃเต, เด‡เดคเต updateAgg-เดจเต‡เด•เตเด•เดพเตพ เดตเดณเดฐเต† เด•เดพเดฐเตเดฏเด•เตเดทเดฎเดฎเดพเดฃเต. เด’เดฐเต เดจเดฟเดถเตเดšเดฟเดค เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดตเดฒเตเดชเตเดชเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต (เดเด•เดฆเต‡เดถเด‚ 10.000) เด†เดฐเด‚เดญเดฟเดšเตเดšเต, updateAgg เด…เดคเดฟเดจเตเดฑเต† เดชเดฐเดฟเดงเดฟเดฏเดฟเตฝ เดŽเดคเตเดคเตเดจเตเดจเต, เดคเตเดŸเตผเดจเตเดจเต เด…เดคเดฟเดจเตเดฑเต† เดŽเด•เตโ€Œเดธเดฟเด•เตเดฏเต‚เดทเตป เดธเดฎเดฏเด‚ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดตเดฒเตเดชเตเดชเดคเตเดคเต† เด†เดถเตเดฐเดฏเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ. เดชเตเดฐเดฟเดฒเดฟเดฎเดฟเดจเดฑเดฟ เดธเตเดฑเตเดฑเต†เดชเตเดชเต เด•เตเดฏเต เด•เดพเดฐเดฃเดฎเดพเดฃเต เด…เดคเตเดคเดฐเด‚ เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เด…เดณเดตเตเด•เตพ เดฆเดนเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดธเต‡เดตเดจเดคเตเดคเดฟเดจเต เด•เดดเดฟเดฏเตเดจเตเดจเดคเต. เดตเดฒเดฟเดฏ เดกเดพเดฑเตเดฑเดฏเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดถเดฐเดฟเดฏเดพเดฏ เด…เตฝเด—เต‹เดฐเดฟเดคเด‚ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเดจเตเดจเดคเต เดŽเดคเตเดฐ เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต†เดจเตเดจเต เด‡เดคเต เดŽเดŸเตเดคเตเดคเตเด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต. เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเดฟเดฒเต† เดกเดพเดฑเตเดฑเดฏเตเดŸเต† เดถเดฐเดฟเดฏเดพเดฏ เดธเด‚เดญเดฐเดฃเดฎเดพเดฃเต เดฎเดฑเตเดฑเตŠเดฐเต เดชเต‹เดฏเดฟเดจเตเดฑเต. เดกเดพเดฑเตเดฑ เดจเดฟเดฐเดฏเดพเดฏเดฟ เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดŸเตเดŸเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเดฒเต‹ เดธเดฎเดฏเดคเตเดคเดฟเดจเดจเตเดธเดฐเดฟเดšเตเดšเต เด“เตผเดกเตผ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเดฒเต‹, TLB เด•เดพเดทเต† เดฎเดฟเดธเต เดชเต‹เดฒเตเดณเตเดณ เด’เดฐเต เด•เดพเดฐเตเดฏเด‚ เดžเด™เตเด™เตพ เดชเดฐเดฟเดšเดฟเดคเดฐเดพเด•เตเด‚ - เดชเตเดฐเต‹เดธเดธเตเดธเตผ เดตเดฟเดฒเดพเดธ เด•เดพเดทเต†เดฏเดฟเตฝ เดฎเต†เดฎเตเดฎเดฑเดฟ เดชเต‡เดœเต เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดจเตเดฑเต† เด…เดญเดพเดตเด‚. เด’เดฐเต เดตเดฟเดฒเดพเดธเด‚ เดคเดฟเดฐเดฏเตเดจเตเดจเดคเต เดตเดฟเดœเดฏเดฟเดšเตเดšเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดเด•เดฆเต‡เดถเด‚ 30 เดฎเดŸเด™เตเด™เต เด•เต‚เดŸเตเดคเตฝ เดธเดฎเดฏเดฎเต†เดŸเตเด•เตเด•เตเด‚, เด•เต‚เดŸเดพเดคเต† เดกเดพเดฑเตเดฑ เดšเดฟเดคเดฑเดฟเด•เตเด•เดฟเดŸเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด…เดคเต เดจเดฟเดฐเดตเดงเดฟ เดคเดตเดฃ เดธเต‡เดตเดจเด‚ เดฎเดจเตเดฆเด—เดคเดฟเดฏเดฟเดฒเดพเด•เตเด•เดพเด‚.

เดคเต€เดฐเตเดฎเดพเดจเด‚

เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ, KDB+, Q เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดตเดฒเดฟเดฏ เดกเดพเดฑเตเดฑ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต† เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดฆเดถเดฒเด•เตเดทเด•เตเด•เดฃเด•เตเด•เดฟเดจเต เดตเดฐเดฟเด•เตพ/เดœเดฟเด—เดพเดฌเตˆเดฑเตเดฑเต เดกเดพเดฑเตเดฑ เดฆเดนเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดตเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เต เดธเต‡เดตเดจเด™เตเด™เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดพเดฃเต†เดจเตเดจเต เดžเดพเตป เด•เดพเดฃเดฟเดšเตเดšเต. เด’เดฐเตŠเดฑเตเดฑ Q เดชเตเดฐเด•เตเดฐเดฟเดฏ. เด•เตเดฏเต เดญเดพเดท เดคเดจเตเดจเต† เด…เดคเดฟเดจเตเดฑเต† เดตเต†เด•เตเดฑเตเดฑเตผ เดธเตเดตเดญเดพเดตเด‚, เด…เดจเตเดคเตผเดจเดฟเตผเดฎเตเดฎเดฟเดค SQL เดกเดฏเดฒเด•เตเดฑเตเดฑเต เด‡เดจเตเดฑเตผเดชเตเดฐเต†เดฑเตเดฑเตผ, เดตเดณเดฐเต† เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏ เดฒเตˆเดฌเตเดฐเดฑเดฟ เดซเด‚เด—เตเดทเดจเตเด•เตพ เดŽเดจเตเดจเดฟเดต เด•เดพเดฐเดฃเด‚ เดกเดพเดฑเตเดฑ เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸ เด…เตฝเด—เต‹เดฐเดฟเดคเด™เตเด™เตพ เดตเดณเดฐเต† เดธเด‚เด•เตเดทเดฟเดชเตเดคเดตเตเด‚ เด•เดพเดฐเตเดฏเด•เตเดทเดฎเดตเตเดฎเดพเดฏ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.

เด•เตเดฏเตเดตเดฟเดจเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเดจเตเดจเดคเดฟเดจเตเดฑเต† เด’เดฐเต เดญเดพเด—เด‚ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เดฎเตเด•เดณเดฟเตฝ เดชเดฑเดžเตเดžเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดจเตเดจเต เดžเดพเตป เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด‚, เด‡เดคเดฟเดจเต เดฎเดฑเตเดฑเต เดธเดตเดฟเดถเต‡เดท เดธเดตเดฟเดถเต‡เดทเดคเด•เดณเตเด‚ เด‰เดฃเตเดŸเต. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดตเดณเดฐเต† เดฒเดณเดฟเดคเดฎเดพเดฏ เด’เดฐเต IPC เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เตพ เดตเตเดฏเด•เตเดคเดฟเด—เดค เด•เตเดฏเต เดชเตเดฐเต‹เดธเดธเตเด•เตพ เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เด…เดคเดฟเตผเดคเตเดคเดฟ เดฎเดพเดฏเตโ€Œเด•เตเด•เตเด•เดฏเตเด‚ เดฒเต‹เด•เดคเตเดคเดฟเดจเตเดฑเต† เดตเดฟเดตเดฟเดง เดญเดพเด—เด™เตเด™เดณเดฟเตฝ เดกเดธเตป เด•เดฃเด•เตเด•เดฟเดจเต เดธเต†เตผเดตเดฑเตเด•เดณเดฟเตฝ เดธเตเดฅเดฟเดคเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจ เด’เดฐเตŠเดฑเตเดฑ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเดฒเต‡เด•เตเด•เต เดจเต‚เดฑเตเด•เดฃเด•เตเด•เดฟเดจเต เดˆ เดชเตเดฐเด•เตเดฐเดฟเดฏเด•เตพ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•