Автор: Николай Камынин
В данной заметке приведу результаты исследований скорости получения информации по протоколу DDE из QUIK в разработанную мною СУБД.
Информация из лог-файла:
[1]2=R1C1:R41C44; Name=Trades: lt=5875; lts=5.87; Sun Feb 19 22:41:32 2012
[1]0=R1C1:R2C33; Name=Orders: lt=15; lts=5.89; Sun Feb 19 22:41:32 2012
[0]5=R1C1:R2C29; Name=Marginal: lt=16; lts=5.9; Sun Feb 19 22:41:32 2012
[0]4=R1C1:R2C19; Name=FuturesClientHoldings: lt=16; lts=5.92; Sun Feb 19 22:41:32 2012
[0]3=R1C1:R2C15; Name=FuturesClientLimits: lt=15; lts=5.93; Sun Feb 19 22:41:32 2012
[4]1=R1C1:R1C2; Name=EQBR_SBER: lt=0; lts=5.93; Sun Feb 19 22:41:32 2012
[1]1=R1C1:R1C48; Name=StopOrders: lt=16; lts=5.95; Sun Feb 19 22:41:32 2012
[0]1=R1C1:R2C11; Name=MoneyLimits: lt=15; lts=5.96; Sun Feb 19 22:41:32 2012
[3]0=R1C1:R16384C6; Name=AllTrades: lt=16; lts=5.98; Sun Feb 19 22:41:32 2012
[3]0=R16385C1:R32768C6; Name=AllTrades: lt=31; lts=6.01; Sun Feb 19 22:41:32 2012
[3]0=R32769C1:R49152C6; Name=AllTrades: lt=16; lts=6.03; Sun Feb 19 22:41:33 2012
[3]0=R49153C1:R65536C6; Name=AllTrades: lt=16; lts=6.04; Sun Feb 19 22:41:33 2012
[3]0=R65537C1:R81920C6; Name=AllTrades: lt=15; lts=6.06; Sun Feb 19 22:41:33 2012
[3]0=R81921C1:R98304C6; Name=AllTrades: lt=16; lts=6.07; Sun Feb 19 22:41:33 2012
[3]0=R98305C1:R114688C6; Name=AllTrades: lt=15; lts=6.09; Sun Feb 19 22:41:33 2012
[3]0=R114689C1:R131072C6; Name=AllTrades: lt=16; lts=6.1; Sun Feb 19 22:41:33 2012
[3]0=R131073C1:R147456C6; Name=AllTrades: lt=31; lts=6.14; Sun Feb 19 22:41:33 2012
[3]0=R147457C1:R163840C6; Name=AllTrades: lt=16; lts=6.15; Sun Feb 19 22:41:33 2012
[3]0=R163841C1:R180224C6; Name=AllTrades: lt=31; lts=6.18; Sun Feb 19 22:41:33 2012
[3]0=R180225C1:R196608C6; Name=AllTrades: lt=31; lts=6.21; Sun Feb 19 22:41:33 2012
[3]0=R196609C1:R212992C6; Name=AllTrades: lt=32; lts=6.25; Sun Feb 19 22:41:33 2012
[3]0=R212993C1:R229376C6; Name=AllTrades: lt=31; lts=6.28; Sun Feb 19 22:41:33 2012
[3]0=R229377C1:R245760C6; Name=AllTrades: lt=16; lts=6.29; Sun Feb 19 22:41:33 2012
[3]0=R245761C1:R262144C6; Name=AllTrades: lt=31; lts=6.32; Sun Feb 19 22:41:33 2012
[3]0=R262145C1:R278528C6; Name=AllTrades: lt=31; lts=6.35; Sun Feb 19 22:41:33 2012
[3]0=R278529C1:R294912C6; Name=AllTrades: lt=31; lts=6.39; Sun Feb 19 22:41:33 2012
[3]0=R294913C1:R311296C6; Name=AllTrades: lt=32; lts=6.42; Sun Feb 19 22:41:33 2012
[3]0=R311297C1:R327680C6; Name=AllTrades: lt=31; lts=6.45; Sun Feb 19 22:41:33 2012
[3]0=R327681C1:R344064C6; Name=AllTrades: lt=31; lts=6.48; Sun Feb 19 22:41:33 2012
[3]0=R344065C1:R360448C6; Name=AllTrades: lt=31; lts=6.51; Sun Feb 19 22:41:33 2012
[3]0=R360449C1:R376832C6; Name=AllTrades: lt=16; lts=6.53; Sun Feb 19 22:41:33 2012
[3]0=R376833C1:R393216C6; Name=AllTrades: lt=31; lts=6.56; Sun Feb 19 22:41:33 2012
[3]0=R393217C1:R409600C6; Name=AllTrades: lt=31; lts=6.59; Sun Feb 19 22:41:33 2012
[3]0=R409601C1:R425984C6; Name=AllTrades: lt=32; lts=6.62; Sun Feb 19 22:41:33 2012
[3]0=R425985C1:R442368C6; Name=AllTrades: lt=31; lts=6.65; Sun Feb 19 22:41:33 2012
[3]0=R442369C1:R458752C6; Name=AllTrades: lt=31; lts=6.68; Sun Feb 19 22:41:33 2012
[3]0=R458753C1:R475136C6; Name=AllTrades: lt=31; lts=6.71; Sun Feb 19 22:41:33 2012
[3]0=R475137C1:R491520C6; Name=AllTrades: lt=63; lts=6.78; Sun Feb 19 22:41:33 2012
[3]0=R491521C1:R507904C6; Name=AllTrades: lt=31; lts=6.81; Sun Feb 19 22:41:33 2012
[3]0=R507905C1:R524288C6; Name=AllTrades: lt=31; lts=6.84; Sun Feb 19 22:41:33 2012
[3]0=R524289C1:R540672C6; Name=AllTrades: lt=32; lts=6.87; Sun Feb 19 22:41:33 2012
[3]0=R540673C1:R557056C6; Name=AllTrades: lt=31; lts=6.9; Sun Feb 19 22:41:33 2012
[3]0=R557057C1:R573440C6; Name=AllTrades: lt=31; lts=6.93; Sun Feb 19 22:41:33 2012
[3]0=R573441C1:R589824C6; Name=AllTrades: lt=31; lts=6.96; Sun Feb 19 22:41:33 2012
[3]0=R589825C1:R606208C6; Name=AllTrades: lt=32; lts=7; Sun Feb 19 22:41:33 2012
[3]0=R606209C1:R622592C6; Name=AllTrades: lt=31; lts=7.03; Sun Feb 19 22:41:34 2012
[3]0=R622593C1:R638976C6; Name=AllTrades: lt=31; lts=7.06; Sun Feb 19 22:41:34 2012
[3]0=R638977C1:R655360C6; Name=AllTrades: lt=31; lts=7.09; Sun Feb 19 22:41:34 2012
[3]0=R655361C1:R671744C6; Name=AllTrades: lt=32; lts=7.12; Sun Feb 19 22:41:34 2012
[3]0=R671745C1:R688128C6; Name=AllTrades: lt=31; lts=7.15; Sun Feb 19 22:41:34 2012
[3]0=R688129C1:R704512C6; Name=AllTrades: lt=16; lts=7.17; Sun Feb 19 22:41:34 2012
[3]0=R704513C1:R720896C6; Name=AllTrades: lt=31; lts=7.2; Sun Feb 19 22:41:34 2012
[3]0=R720897C1:R737280C6; Name=AllTrades: lt=31; lts=7.23; Sun Feb 19 22:41:34 2012
[3]0=R737281C1:R753664C6; Name=AllTrades: lt=31; lts=7.26; Sun Feb 19 22:41:34 2012
[3]0=R753665C1:R770048C6; Name=AllTrades: lt=32; lts=7.29; Sun Feb 19 22:41:34 2012
[3]0=R770049C1:R786432C6; Name=AllTrades: lt=31; lts=7.32; Sun Feb 19 22:41:34 2012
[3]0=R786433C1:R802816C6; Name=AllTrades: lt=31; lts=7.35; Sun Feb 19 22:41:34 2012
[3]0=R802817C1:R819200C6; Name=AllTrades: lt=47; lts=7.4; Sun Feb 19 22:41:34 2012
[3]0=R819201C1:R835584C6; Name=AllTrades: lt=31; lts=7.43; Sun Feb 19 22:41:34 2012
[3]0=R835585C1:R851968C6; Name=AllTrades: lt=31; lts=7.46; Sun Feb 19 22:41:34 2012
[3]0=R851969C1:R868352C6; Name=AllTrades: lt=32; lts=7.5; Sun Feb 19 22:41:34 2012
[3]0=R868353C1:R884736C6; Name=AllTrades: lt=31; lts=7.53; Sun Feb 19 22:41:34 2012
[3]0=R884737C1:R901120C6; Name=AllTrades: lt=31; lts=7.56; Sun Feb 19 22:41:34 2012
[3]0=R901121C1:R917504C6; Name=AllTrades: lt=31; lts=7.59; Sun Feb 19 22:41:34 2012
[3]0=R917505C1:R933888C6; Name=AllTrades: lt=16; lts=7.6; Sun Feb 19 22:41:34 2012
[3]0=R933889C1:R950272C6; Name=AllTrades: lt=31; lts=7.64; Sun Feb 19 22:41:34 2012
[3]0=R950273C1:R966656C6; Name=AllTrades: lt=47; lts=7.68; Sun Feb 19 22:41:34 2012
[3]0=R966657C1:R983040C6; Name=AllTrades: lt=16; lts=7.7; Sun Feb 19 22:41:34 2012
[3]0=R983041C1:R999424C6; Name=AllTrades: lt=47; lts=7.75; Sun Feb 19 22:41:34 2012
[3]0=R999425C1:R1015808C6; Name=AllTrades: lt=31; lts=7.78; Sun Feb 19 22:41:34 2012
[3]0=R1015809C1:R1032192C6; Name=AllTrades: lt=31; lts=7.81; Sun Feb 19 22:41:34 2012
[3]0=R1032193C1:R1048576C6; Name=AllTrades: lt=31; lts=7.84; Sun Feb 19 22:41:34 2012
[3]0=R1048577C1:R1064960C6; Name=AllTrades: lt=32; lts=7.87; Sun Feb 19 22:41:34 2012
[3]0=R1064961C1:R1081344C6; Name=AllTrades: lt=15; lts=7.89; Sun Feb 19 22:41:34 2012
[3]0=R1081345C1:R1097728C6; Name=AllTrades: lt=32; lts=7.92; Sun Feb 19 22:41:34 2012
[3]0=R1097729C1:R1114112C6; Name=AllTrades: lt=46; lts=7.96; Sun Feb 19 22:41:34 2012
[3]0=R1114113C1:R1130496C6; Name=AllTrades: lt=32; lts=8; Sun Feb 19 22:41:34 2012
[3]0=R1130497C1:R1146880C6; Name=AllTrades: lt=31; lts=8.03; Sun Feb 19 22:41:35 2012
[3]0=R1146881C1:R1150063C6; Name=AllTrades: lt=31; lts=8.06; Sun Feb 19 22:41:35 2012
[4]0=R1C1:R41C3; Name=SPBFUT_SBRF: lt=16; lts=8.07; Sun Feb 19 22:41:35 2012
[2]1=R1C1:R41C65; Name=Forts: lt=0; lts=8.07; Sun Feb 19 22:41:35 2012
В лог файле указана следующая информация ( на примере 1-ой строки):
[1]2 — имя книги и листа
=R1C1:R41C44; -размер получаемой таблицы
Name=Trades: — имя таблицы
lt=5875; — время в миллисекундах, прошедшее с начала пуска экспорта из QUIK (для первой записи, в остальных строках — время прошедшее с момента предыдущего обмена по DDE)
lts=5.87; — время в секундах , прошедшее с начала пуска экспорта по DDE
Sun Feb 19 22:41:32 2012 — дата и время записи в лог файл
Анализ данного лог файла показывает, что с момента пуска обмена по DDE др получения первой порции данных прошло 5.8 секунды. Очевидно, это время требуется QUIK,чтобы подготовить информацию.
На передачу таблицы всех сделок ( Name=AllTrades) всего 1 миллион 150 тысяч записей ушло 8.06-6.01= 2.05 секунды.
Таким образом, при отсутствии торгов , суммарное время передачи всей информации , в том числе 1.1 млн сделок с их сортировкой по инструментам ( всего 953 инструмента в 16 классах) затрачено 8 секунд.