Злой файл «info.log»
Всем добрый день.
В Квике есть файл info.log.
Если я правильно понимаю, в нем хранятся логи действий по моему брокерскому счету, совершенных в Квике.
В QUIK есть два больших файла: alltrade.dat и info.log
Первый наполняется данными об обезличенных сделках. В зависимости от поставленных галках в QUIK в меню заказа на получение данных. Файл info.log наполняется по мере торгов информационными данными о текущ торговой сессии для построения графиков и пр (например значения параметров total bid или total offer).
Если вы закажете получение информации только об обезличенных сделках в СИСТЕМА/ЗАКАЗ ДАННЫХ/ПОТОК ОБЕЗЛИЧЕННЫХ СДЕЛОК и снимите галки в разделе СИСТЕМА/ЗАКАЗ ДАННЫХ/ПОТОК КОТИРОВОК, то файл alltrade.dat постепенно будет расти, а info.log не будет разбухать.
При смене торговой сессии естественно данные все обнуляются.
Если вам интересна структура этого файла, то пытайте разработчиков QUIK. А они как то молчат и не делятся этой инфой.
Нашел утилиту для его открытия. А там пока вообще ничего не понятно.
Пожалуйста, не могли бы подсказать, у кого-нибудь есть расшифровка всех этих строк? Не могли бы помочь?
Всем добра и профита.
Авто-репост. Читать в блоге >>>
Всем привет. Начинающий трейдер – вопрос имею. Подскажите что это за хрень такая. Открыл позицию на продажу фьючерса нефть по цене 60.21. В таблице сделок именно эта цена отображается. Захожу в состояние счета, а там балансовая стоимость 60.03. Сразу жесткий минус.
Кроме этой сделки больше никаких действий не было. Клиринга тоже не было. Раньше такого не замечал. Разбираюсь только как второй день. Счет не демо. Что это? Извиняюсь если не сюда закинул вопрос.
привет!
у меня в квике стояла камарилла аж с 2014 года, когда вы выложили здесь этот индикатор.
квик обновился до 8 и камарилла пропала.
это не исправить?
-- Camarilla.lua Settings={ Name = "Camarilla", period = 'D', line = { {Name = "S5", Color = RGB(255, 0, 0), Type = 1, Width = 2}, {Name = "S4", Color = RGB(255, 165, 0), Type = 1, Width = 2}, {Name = "S3", Color = RGB(255, 255, 0), Type = 1, Width = 2}, {Name = "PP", Color = RGB(0, 255, 0), Type = 1, Width = 2}, {Name = "R3", Color = RGB(0, 191, 255), Type = 1, Width = 2}, {Name = "R4", Color = RGB(0, 0, 255), Type = 1, Width = 2}, {Name = "R5", Color = RGB(139, 0, 255), Type = 1, Width = 2}, } } local math_floor = math.floor local levels = 0 local ydH, ydL, ydC, ydO = {},{},{},{} local PP, R3, R4, R5 = 0,0,0,0 local S3, S4, S5 = 0,0,0 local delta = 0 local cl = 0 local predThisDay=0 local function dTs(t) return 100*(100*t.year+t.month)+t.day; end local OldDay = '' -- для выделения начала торгового дня function Init () local t=getDataSourceInfo() local tt = t.interval if tt == -3 then message('Месячный график не обрабатывается.',1) return end return 7 end function OnCalculate (index) local time tt=T(index); ---время из свечи --local ThisDay=dTs(tt) -- дата в формате yyyyMMdd local tDay=dTs(tt) -- дата в формате yyyyMMdd local ThisDay = tDay if Settings.period == 'W' then ThisDay=tt.week_day -- номер недели end if index == 1 then --message('First ThisDay = '..tostring(ThisDay),1) local t=getDataSourceInfo() --7.2.5 Функция предназначена для получения информации об источнике данных для индикатора. local scale = getSecurityInfo(t.class_code, t.sec_code).scale -- NUMBER, Количество значащих цифр после запятой mul = 10^scale -- возведение в степень local tt = t.interval if tt == -3 then tt = 'месяц' elseif tt == -2 then tt = 'неделя' elseif tt == -1 then tt = 'день' else tt = tt..' мин.' end --message(t.sec_code..'('..t.class_code..'), цифр после запятой: '..scale..', mul = '..mul..', дата = '..ThisDay,1) levels = levels + 1 if ThisDay ~= OldDay then OldDay = ThisDay end predThisDay = ThisDay -- delta = H(index) - L(index) cl = C(index) R5 = (H(index) / L(index))*cl calcLevels(index) local per = 'daily' if Settings.period == 'W' then per = 'weekly' end message('Camarilla '..per..', Т = '..tt..', © xsharp.ru 20.06.2015', 1) return end if Settings.period == 'W' then if ThisDay < OldDay then -- для неделек OldDay = OldDay + 1 if OldDay ~= ThisDay then OldDay = ThisDay end levels = levels + 1 delta = ydH[levels-1] - ydL[levels-1] cl = ydC[levels-1] R5 = (ydH[levels-1] / ydL[levels-1])*cl calcLevels(index) --if index<120 then --message('index= '..tostring(index)..', Смена недели: '..tostring(ThisDay)..', OldDay: '..tostring(OldDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1) --end predThisDay = ThisDay else if ThisDay ~=predThisDay then --message('index= '..tostring(index)..', ThisDay= '..tostring(ThisDay)..', predThisDay: '..tostring(predThisDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1) predThisDay = ThisDay OldDay = OldDay + 1 end ThisDayF(index) end elseif Settings.period == 'D' then if ThisDay ~= OldDay then -- для дневок OldDay = OldDay + 1 if OldDay ~= ThisDay then OldDay = ThisDay end levels = levels + 1 delta = ydH[levels-1] - ydL[levels-1] cl = ydC[levels-1] R5 = (ydH[levels-1] / ydL[levels-1])*cl calcLevels(index) --if index<120 then --message('index= '..tostring(index)..', Смена недели: '..tostring(ThisDay)..', OldDay: '..tostring(OldDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1) --end predThisDay = ThisDay else if ThisDay ~=predThisDay then --message('index= '..tostring(index)..', ThisDay= '..tostring(ThisDay)..', predThisDay: '..tostring(predThisDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1) predThisDay = ThisDay OldDay = OldDay + 1 end ThisDayF(index) end elseif Settings.period == 'H4' then if ThisDay ~= OldDay then -- для дневок OldDay = OldDay + 1 if OldDay ~= ThisDay then OldDay = ThisDay end levels = levels + 1 delta = ydH[levels-1] - ydL[levels-1] cl = ydC[levels-1] R5 = (ydH[levels-1] / ydL[levels-1])*cl calcLevels(index) --if index<120 then --message('index= '..tostring(index)..', Смена недели: '..tostring(ThisDay)..', OldDay: '..tostring(OldDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1) --end predThisDay = ThisDay else if ThisDay ~=predThisDay then --message('index= '..tostring(index)..', ThisDay= '..tostring(ThisDay)..', predThisDay: '..tostring(predThisDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1) predThisDay = ThisDay OldDay = OldDay + 1 end ThisDayF(index) end end return S5, S4, S3, cl, R3, R4, R5 end function round(value) return math_floor(value*mul + 0.5) / mul end function ThisDayF(index) ydC[levels] = C(index) if H(index) > ydH[levels] then ydH[levels] = H(index) end if L(index) < ydL[levels] then ydL[levels] = L(index) end end function calcLevels(index) ydO[levels] = O(index) ydH[levels] = H(index) ydL[levels] = L(index) ydC[levels] = C(index) -- R3 = cl + delta * 1.1/4 R4 = cl + delta * 1.1/2 -- S3 = cl - delta * 1.1/4 S4 = cl - delta * 1.1/2 S5 = cl - (R5-cl) -- R5 = round(R5) R4 = round(R4) R3 = round(R3) S3 = round(S3) S4 = round(S4) S5 = round(S5) end
Был у всех нас раньше хороший скрипт Autologin.lua, который авторизовывался автоматически в Quik, но с выходом 8-й версии он работать перестал, т.к. перестала работать библиотека w32.dll. Мы по совету одного из участников нашего сайта решили пойти самым быстрым путем и написали консольное приложение, которое ловит окно авторизации терминала Quik, вводит в него указанные логин и пароль и нажимает кнопку «Войти в систему».
Данное решение очень упрощает жизнь, особенно при алготорговле, когда терминал стоит на выделенном сервере.
Кому интересно, качайте https://quikluacsharp.ru/quik-qlua/qlua-lua-skript-avtomaticheskoj-avtorizatsii/
А здесь выложу файлик с исходным кодом, для тех, кто сам захочет собрать приложение, чтобы не думать: скачать