BlackBoar (Автор тем)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Управление заявками, Lua или Trans2Quik
 
Возник очередной теоретический вопрос. Есть два альтернативных интерфейса для отправки и последующего управления заявками, sendTransaction + колбэки в луа и обсуждаемый в соседнем разделе Trans2Quik. От чтения форума и прочей документации сложилось такое впечатление что и то и другое в общем адекватно работает, но проблемы могут и так и эдак встречаются.

Вопрос такой, есть ли где-нибудь сравнения какой способ быстрее / надежнее / удобнее / какие-то еще преимущества или недостатки. Сам не нашел, если кто вникал в вопрос прошу поделиться ссылой или наблюдениями.

ЗЫ, с чисто технической точки зрения мне как "писателю" на С/С++ в общем близко к "все равно" каким из этих интерфейсов пользоваться.
"Ошибка экспорта в MetaStock"
 
После обновления до 7.19.0.51 изредка при запуске квик стало появляться такое вот сообщение:
Цитата
   Тип    Дата    Время    Сообщение
1,000000    3,000000    11.10.2018    18:32:33    Ошибка экспорта в MetaStock : произошла ошибка с кодом IWR_CANNOT_LOCATE.
Наблюдается раз где-то в 2 недели в квиках от ВТБ и Открытие (Windows 7 64 bit), видел также в QuikJunior когда пытался запускать его под вайном. Никаких метастоков на компе точно нет, никакой экспорт никогда точно не настраивался и не включался.
В принципе никк не мешает, но вот сегодня раз в 10 уже увидел и решил отписаться об этом факте. Как воспроизводить без понятия, просто иногда само появляется при запуске программы.
Тайминг функциональности QUIK из луа, как правильно замерить
 
Попробовал гонять кое - какие тесты скорости своего скрипта.
Один из тестов пытался отределить время затрачиваемое непосредственно на системный вызов getQuoteLevel2
Код
local TheClassCode = "QJSIM"
local TheSecCode = "SBER"
local NumIteractions2 = 100000
local NumRepeats2 = 10
local StartTime = 0
local RunTime = 0
local SumRunTime = 0
local MaxRunTime = 0
local MinRunTime = 100500
local QuoteL2 = {}

function TestQuoteL2_2()
    for TheRepeat =1, NumRepeats2, 1    do
        StartTime = os.clock()

        for TheIteraction =1, NumIteractions, 1 do
            QuoteL2 = getQuoteLevel2(TheClassCode, TheSecCode)
        end

        RunTime = os.clock() - StartTime
        SumRunTime = SumRunTime + RunTime
        if RunTime < MinRunTime then
            MinRunTime = RunTime
        end
        if RunTime > MaxRunTime then
            MaxRunTime = RunTime
        end
        TheMessage = "Attempt # "..tostring(TheRepeat).." RunTime = "..tostring(RunTime)
        message(TheMessage)
    end
    local AvgRunTime = SumRunTime / NumRepeats2
    TheMessage = "Tested "..tostring(NumRepeats2).." times, "..tostring(NumIteractions2).." iteractions each"
    message(TheMessage)
    TheMessage = "Average run time = "..tostring(AvgRunTime).." for "..tostring(NumIteractions2).." iteractions"
    message(TheMessage)
    TheMessage = "Maximum run time = "..tostring(MaxRunTime)
    message(TheMessage)
    TheMessage = "Minimum run time = "..tostring(MinRunTime)
    message(TheMessage)
end

function main()
    TestQuoteL2_2()
end
Это фрагмент разумеется, полный текст там слишком много букв для цитирования да и к вопросу отношения не имеет, еще ряд тестов уже моего кода. Так вот, результат работы этого конкретно теста:
Код
08.10.2018    0:15:42    Tested 10 times, 100000 iteractions each
08.10.2018    0:15:42    Average run time = 8.3163 for 100000 iteractions
08.10.2018    0:15:42    Maximum run time = 8.3400000000001
08.10.2018    0:15:42    Minimum run time = 8.2939999999999
В связи с тем что время вызова самой функции getQuoteLevel2 у меня получилось чуть ли не на порядок больше времени которое требуется моему скрипту на парсинг полученой таблицы (речь идет о стакане 10х10, для имитации деятельности осуществлялся двукратный доступ ко всем содержательнм полям) возник у меня вопрос.
Подскажите пожалуйста, порректно ли вообще измерять время на вызов функций квик подобным способом. Или "дерганье" их миллион раз подряд вызывает какие-то аномалии в работе квик?
Воспроизведение ситуации с заменой инструментов в QUIK, как удобнее реализовать
 
В процессе тестирования скрипта пару раз установил / разорвал соединение с сервером. Поскольку были устаревшие инструменты, квик при первом подключении предложил их заменить что и было сделано. Скрипт отработал (судя по логам) ожидаемым образом. Замену инструментов (да и вообще получениее каких либо торговых данных из квика) он никак не отрабатывал. Отрабатывалась как раз сторонняя система логирования (Р7) плюс создание интерфейса WinForms. Когда закрывал квик (при уже отключеном скрипте) квик завис, пришлось убить штатными средствами винды.

Воспроизвести не удалось (гонял еще раз 10, все отработало четко).
Вопрос не по скрипту, скрипт такой что выходит за рамки тематики форума, поэтому не прибожу его.

Вопрос как проще воспроизводить ситуацию в которой квик предлагает заменить устаревшие инструменты. Сразу приходит в голову сделать резервную копию папки терминала и доставать когда что-нибудь устареет. Соответственно придется ждать пока устареет, не критично но как-то неочень продвинуто.

Каких-то еще способов есть/нет?
Синхронизация завершения main и OnStop, требуется ли
 
Возник вопрос. Вполне вероятно он достаточно нубский, но однозначный ответ я не нагуглил и хочу для себя прояснить.
Допустим OnStop в моем сценарии выглядит как-то так:
Код
function OnStop(flag) 
  IsRun = false
  -- далее следуют какие то относительно продолжительные действия
  -- сохранение нажитого непосильным трудом по файлам например
  -- имитация таковых:
  sleep(50) 
end 
В результате main может прочитать что IsRun = false и завершиться до завершения OnStop.
Вопрос, следует ли мне всегда размещать IsRun = false в конце OnStop или можно не забивать себе такими нюансами голову?
Поведение QUIK при ошибке "ключ не найден", Можно ли изменить.
 
Сегодня в очередной раз столкнулся с "ключ не найден". Сам виноват, флэшку с ключем снова в другой разьем воткнул )))
Суть вопроса вот в чем. Квик от ВТБ при этом выдает сообщение один раз а потом просто бездействует. А квик от Открытия начинает выводить это сообщение каждые 2-3 секунды и чтобы поменять настройки приходится его перезапускать, иначе заматывает.

Можно ли как-то изменить его поведение чтобы один раз высказался и заткнулся или так уж брокер вбил и я ничего не могу сделать? В настройках ничего подходящего сам не нашел.
Установка QUIK на Linux под Wine, Проблемы с актуальными на сегодняшний день версиями
 
Постановка задачи - чтобы QUIK работал полностью адекватно и без косяков.
Квик в экспериментах использовался только что скачаный отсюда, версия 7.19.0.51, для контрольных поппыток использовались завалявшиеся на диске старые дистры 7.5 и 6.17
Актуальной версией вайн видимо условно придется считать 3.1.4, во всяком случае в моем дистрибутиве так. Впрочем описаные ниже глюки абсолютно одинаково проявляются еще в нескольких версиях вайн новее 3.0.1


Получилось:
Поставил, запускается, в принципе работает. Шрифты и ключи вправились согласно нагугленым инструкциям, с этим нет затруднений.
Наблюдаемые глюки:
1. Не отображаются пиктограмки на кнопках информационного окна. Вообще, кнопки тупо пустые квадратики. С текстом в окне при этом все в порядке и нажимать на кнопки можно, работают.
2. Полностью пустые выпадающие списки в которых выбирать код клиента и торговый счет при постановке заявок и тп. Торговые счета в настройках актины (в правом стакане, это проверть не забыл). Таблички всякие со сделками, состоянием счета и тп при этом торговые счета и код клиента отображают штатным образом. А в окошке "новая заявка" и аналогичных если ввести счет и код вручную то заявка благополучно принимается. Но код в выпадающем списке даже так не сохраняется, только каждый раз вручную.
3. Не работает парная кнопка UpDown связаная с "количеством" в окошках ввода заявки и тп. Вообще ничего не делает. Это кстати и под Windows7 Enterprise также, да и судя по форуму не у меня одного. А кнопки UpDown связаные с вводом цены / стоп-цены / отступа и тп увеличивают значение в соответствующем поле не на шаг цены как должны а на какю-то странную цифру похожую на (max unsigned __int16) * (шаг цены).
При этом если нужное значение ввести в поле вручную опять же все работает.
Скрины выложу если требуется.

Описаные глюки выглядят одинаково в сборках "актуальный" Archlinux + wine 3.1.4 и "актуальный" Suse + wine 3.0.7 (Suse почему-то пишет что версия вайна 3.7, поскольку такой еще пока не существует думаю что 3.0.7 на самом деле.
DE пробовал KDE, GNOM, LXDE - все одинаково

Дальнейшие эксперименты показали следующее:
Если поставить квик 7.5 или 6.17 (других старых у меня нет) то глюк 2 и судя по всему глюк 3 пропадают, но глюк 1 все равно присутствует. Полностью проверить не знаю как, к серверу то эти версии без обновления подключаться не хотят.

С актуальной (7.19) версией квик и предыдущими версиями вайна:
"актуальный" Mint + вайн 3.0.1 - глюк №2 исчезает, глюк №3 остается.
разные сборки с вайн 2.х/1.8/1.7 - то же самое, глюк №3 присутствует

сборка OpenSuse 12.3 / wine 1.5.23 / qt4 / kde4 = сюрприз, не проявляется ни один из описаных глюков! В том числе корректно работает кнопка выбора количества (которая у меня даже под виндой сейчас косячит).

Итого вопрос. Понимаю что линух официально никому не интересен но все же, может кто вникал.
Хотелось бы во-первых понять что тут связано с глюками квика а что с глюками вайна (или может вообще qt или еще каких компонентов линуха).
И хотелось бы понять можно ли все это вправить под вайн 3+ / можно ли сделать что-то вообще.
А то работать вроде и можно но конкретно неудобно. Ставить вайн 7 летней давности тоже не хотелось бы связываться...

И дополнительный вопрос. Скорость отклика и вообще шевеления под вайном конкретно хуже чем под виндой. Это разумеется вопрос больше для других форумов, но может кто сталкивался настраивать вайн и прочее именно для квик, на что обратить внимание.
Страницы: 1
Наверх