Павел Bosco (Автор тем)

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

Страницы: 1
Оптимизация грфики в Quik, Quik v9.7.0.14 грузит GPU на 60-70%
 
Добрый день,

возможно такая проблема только у меня, если нет, прошу присоединяться с вашими отзывами к теме, но у меня Quik грузит GPU (старенькая GeForce GT 730) на 60-70%,
в результате чего, судя по всему начинает отставать получение данных, за минуту набегает отставание данных в несколько секунд.

не уверен насколько это было на прошлых версиях, кажется это появилось где-то в районе 9.6, но я не уверен.
Может ли разработчик посоветовать что-то настроить в операционной системе (Windows 10), либо в самом квике для ускорения процесса?

Так же я подключаюсь к этому компьютеру по Remote Desktop, возможно это тоже даёт дополнительную нагрузку на видео-карту.
Кроме того, я использую тёмную тему.
И у меня есть самописные индикаторы на Lua, но они сами не рисуют, тут GPU видно не при чём.

Иначе приходится разрываться: для стабильной и быстрой работы робота, приходится держать квик свёрнутым - тогда он мгновенно перестаёт нагружать GPU, но хочется видеть графики, сделки и изменение баланса здесь и сейчас.

CPU нагружен слабо, пропускной способности сети тоже более чем достаточно (500 mb/s), блокировок в скрипте _вроде_ бы нет, да если бы и были, они бы не давали высокую нагрузку GPU.
Так же я обновил недавно windows, может и в этом дело, сборка 19044.1766
Работает ли Lua с ИТП (Иностранной Торговой Площадкой)?
 
Пытаюсь попробовать получить что-то в Открытии-брокер с ИТП, но в ответ одни нули, хотя в таблице текущих торгов цифра предыдущего закрытия есть.
Я делаю что-то не так?
Код
function main()
  message("getParamEx: " .. getParamEx("NA_ALL_50_C", "TSLA", "PREVPRICE").param_value, 1)
end
Как часто у вас вызывается DataSource:Callback?
 
Даже немного стыдно такое говорить, но после многих лет поллинга информации о свечках из Quik, с высокой скоростью, решил наконец проверить, как же часто реально в квике обновляются эти самые свечки.
Простейший вопрос, простейший скрипт, но должны пройти годы (у некоторый вроде меня) чтобы об этом начать думать.
Итого - скрипт показывает что свечка Si обновляется не сильно чаще 100 раз в минуту. Возможно сегодня просто неактивный день.
Подскажите, а как у вас?
Скрипт выдает сколько раз обновилась свеча за 1 минуту, с помощью сообщения в квике
Код
stopped = false;
function OnStop()
  stopped = true;
end;
current_time = os.clock()
num = 0
function main()
 function cb( index ) 
  local time = os.clock()
  if time - current_time > 60 then
    current_time = time
    message("Запросов в минуту: " .. num, 1)
    num = 0
  end
  num = num + 1
 end 
 ds = CreateDataSource ("SPBFUT", "SiZ1", INTERVAL_M1) 
 ds:SetUpdateCallback (cb)
 while not stopped do
   sleep(1)
 end
 ds:Close()
end


PS: пока писал, квик осилил выдать один раз аж 174

Но в целом получается опрашивать / долбить бедный квик 1000 раз в _секунду_ с вопросом "че, как, изменилась ли свеча" вообще никакого смысла нет. Достаточно 3-5 раз.
Дубликаты уведомлений onOrder v9.2.2.11
 
Простенький скрипт, который отправляет заявку на 1 лот в Quik_Junior по сберу так, чтобы она заведомо исполнилась.
В нём определены два колбэка, OnTransReply и OnOrder

В результате вижу, что OnOrder вызывается по-моей заявке два раза (она имеет 1 лот и исполняется сразу).
Причём, очевидно, так бывает не всегда. Но заметил что такое получается чаще, если делать перед этим реконнект с сервером.
Код:
Код
function OnTransReply(trans)
 -- Если поступила информация по текущей транзакции 
 message("TransReply:\n" .. --trans.date_time .. '\n' .. 
   tostring(trans.trans_id) .. '\n' .. 
   trans.sec_code .. '\n' .. tostring(trans.status) .. '\n' .. 
   tostring(tobin(trans.flags)) .. '\n' .. 
    tostring(trans.order_num) .. '\n' .. 
   tostring(trans.quantity) .. '\n' .. 
   tostring(trans.price) .. '\n' .. 
   trans.result_msg);
end;

function OnOrder(order) 
 -- Если поступила информация по сделке
 message("OnOrder {\n" .. --trade.datetime .. '\n' .. 
   " trans_id: " .. tostring(order.trans_id) .. '\n' .. 
    " order_num: " .. tostring(order.order_num) .. '\n' .. 
   " flags: " .. tostring(tobin(order.flags)) .. '\n' ..
        " brokerref: " .. tostring(order.brokerref)  .. '\n' ..
   " balance: " .. tostring(order.balance) .."\n" .. 
   " qty: " .. tostring(order.qty) .. '\n' ..
   " value: " .. tostring(order.value) .. '\n' ..
   " account: " .. tostring(order.account) .. '\n' ..
   " activation_time: " .. tostring(order.activation_time) .. '\n' ..
   " ext_order_status: " .. tostring(order.ext_order_status) .. '\n' ..
   " trading_session: " .. tostring(order.trading_session) .. "\n}");
end;


Результат работы (копирую из сообщений)
Код
TransReply:
236
SBER
3
1001000000000000000001
6307340506
1.0
369.5
(161) Заявка N 6307340506 зарегистрирована. Удовлетворено 1

OnOrder {
 trans_id: 236
 order_num: 6307340506
 flags: 11000
 brokerref: 10112//
 balance: 0.0
 qty: 1.0
 value: 3695.0
 account: NL0011100043
 activation_time: 0
 ext_order_status: 0
 trading_session: 0
}

OnOrder {
 trans_id: 236
 order_num: 6307340506
 flags: 11000
 brokerref: 10112//
 balance: 0.0
 qty: 1.0
 value: 3695.0
 account: NL0011100043
 activation_time: 0
 ext_order_status: 0
 trading_session: 0
}


Вопрос, это разве нормально? Чем обусловлено? Кто сталкивался? Как боретесь?
Номер транзакции - не статический, для теста генерится рандомом от 1 до 1000
Что с параметром NUMCONTRACTS в 9.2.1.4?
 
Ранее получал число открытых позиций через getParamEx...NUMCONTRACTS
Теперь вижу появился другой параметр "Открытый интерес", в интерфейсе квика, для которого нет имени в справки а по старому имени возвращается 0.
Как получить открытый интерес?
9.2.1.4 не обновляется цена в таблице Состояние счёта
 
Обновился утром до 9.2.1.4, сейчас после 10-00 в таблице Состояние счёта у Сбербанка цена висит 333р и вообще не обновляется.
До обновления такой проблемы не наблюдал
При этом прибыль/убыток дня рассчитывается и меняется динамически
Падает при замене инструментов
 
Насколько я могу судить, если в таблице Текущие торги есть старый и новый фьючерс, то при появлении окна Замена инструментов, если согласиться заменить старый фьючерс на новый (так что их становится как бы два), квик падает.
Проверял и на 9.1 и на 9.2 - одинаково.
dmp не создаётся.
Если согласиться заменить все инструменты кроме "старого" на "новый" который уже есть - то не падает.
В моём случае это было SBRF-9.21 и SBRF-12.21
Статус на время долгой паузы
 
Часто бывает что если запускаешь квик в конце сессии торговой, а они ведь стали большие, то квик подвисает непонятно над чем на минут 5.
Графики не двигаются, котировки не обновляются.
Хотелось бы понимать что он там делает и сколько еще осталось.
Нельзя ли сделать какую-нибудь статусную строку, (она уже есть внизу вообще-то), в которой бы писать что мол квик читает данные с сервера, или читает данные с диска, осталось 20% или там 5 минут.
"управление ожиданиями"
Медленное переключение на минутки при созданном CreateDataSource, Может занимать больше минуты
 
Заметил такую странность. Продиагностировал не до конца, может быть на форуме меня кто-то дополнит и кто-то такое наблюдал:
у меня открыто много графиков. На старших таймфреймах, типа час, день, месяц. Если я переключаюсь на минутный, для примера вот сейчас, в 11:xx, сравнительное начало торгов,
то всё происходит быстро.
Но если я делаю так с графиком, по которому открыт CreateDataSource, то весь квик сильно подвисает. И чем дальше к вечеру, тем больше.
Это из-за какой-то блокировки на таблице данных, по которой я в Lua скрипте делаю браузинг?
Нельзя ли оптимизировать эту блокировку? Например создавать копию DataSource для нужд квика, делать в ней модификации, а потом через короткую блокировку подменять содержимое датасорса открытого в скрипте целиком, а не построчно?

В скрипте я делаю перебор последних нескольких свечек из датасорса, но делаю это часто. Так что если блокировка ставится-снимается в квике построчно, то просмотр из скрипта такого датасорса будет сильно замедлять весь квик, что я и наблюдаю.

Дополню, что даже повторное открытие того же таймфрейма, на котором работает скрипт в окне квика снова приводит к подвисанию на минуту. А если в том же окне открывать другие таймфреймы никакого замедления нет.
Прошу программистов Арка оценить возможность оптимизации блокировок при смене таймфрейма в окне квика и одновременной работе скрипта с этим таймфрейом через DataSource.
Поток данных для графика цен и стаканов, чем регулировать
 
Пользуюсь версией 8.1.0.3, у меня выключен поток котировок в меню заказ данных для Forts(опционы), но я могу создать окно "Котировки" с любым нужным мне опционом - появится стакан. По нему могу построить график цен.
Всё обновляется, бегает в realtime. Но фильтр при этом в заказе данных не появляется.

Вопрос, чем регулируется поток данных для формирования графика и стакана? Он всегда включён? Если я вручную создаю графики цен и стаканы, как мне потом убедиться что если я закрою эти окна, данные больше не приходят ко мне?

Вопрос связан со заменой инструментов - точно так же откуда-то берутся опционы, которые надо заменять на другие - хотя никаких окон с ними у меня не открыто. Может быть не хватает какого-то функционала в квике по синхронизации по факту заказанных данных и галочек в "Заказ данных"?

В настройках "Получение данных" у меня стоит "С учётом настроек выбранных в меню Система/Заказ данных/Поток котировок", остальные галочки в этом меню отжаты - пустые.
Как считается открытый интерес по срочным контрактам?
 
Не "бьются" данные из квика с данными биржи.
Брокер Открытие, в Si открытый интерес на конец 2 авг в квике 2 164 352
А на бирже https://www.moex.com/ru/derivatives/open-positions.aspx  2 831 278

такой высокой цифры по Si как показывает биржа, в квике не было вообще.
далее, 1 авг на бирже число позиций было выше на 100 000, т.е. падение за день составило всего 100 000,
а в квике число позиций снизилось с 2.382 млн до 2.164 млн, т.е. на 218 000.
Почему такая разница?
Недельные опционы на смену, где их найти
 
Квик раз в неделю стал предлагать сменить инструменты, судя по кодам, похожи на недельные опционы. Код класса SPBOPT
Но я никак не могу найти где они у меня открыты. В списке "поток данных -> список инструментов" опционы у меня не включены. Открытых таблиц с опционами тоже нет.
Может в каких-то настроечных файлах текстовых можно посмотреть список?
Пара вопросов Lua trans2quik и два счёта
 
Немного лень тестить самому и хочется чуть пообщаться.
Всё хочу сделать отправку транзакций через Lua. Сейчас у меня отдельно стоящий робот общается с lua через pipe, но заявки шлёт через trans2quik. Знаю что trans2quik тоже через pipe работает.
недавно перешел с 32 bit на 64 bit, вроде никаких проблем, всё "бесшовно".
у кого есть опыт интеграции без trans2quik, даёт ли это какой-то выигрыш в скорости?

ещё мне казалось что всякая заявка из lua будет отображаться в окне сообщений, подобно тому как там отображаются сообщения по заявкам поставленным вручную, так ли это?

и третий вопрос из пары. пробовал ли кто-нибудь отправлять одновременно две заявки в одной строке в trans2quik, по одному инструменту но двум счетам (в одном терминале, одно физлицо) - будет ли это работать?
опять же чуток лень самому программить, плюс нет тестового полигона под рукой, может кто-то уже делал?

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

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

Спасибо!
Корректный расчёт позиции на срочке
 
Добрый день, имею квик версии 7.19.0.51
там транслируется ГО для покупателя и продавца.
допустим проходит несколько сделок.
далее из робота выставляю заявку на покупку, на всё, вычитая комиссию и используя ГО покупателя, для рассчёта позиции.
бюджет у меня брокер транслирует как  Плановые чистые позиции, если нет никаких позиций
при этом Текущие чистые позиции = - Вариационная Маржа,
т.е. если сложить ТЧП + ВМ + ПЧП = ПЧП

в итоге получаю "Нехватка средств по лимитам клиента".
в этот раз не проверял, но порой бывает что и в квике говорит что доступно столько-то контрактов, но при выставлении получается "Нехватка средств"
- с чем это связано?

смущает что после клиринга на счету как раз появились день для недостающего +1 контракта, при этом ГО было даже повышено, с 4462.73 до 4473.78, т.е. размер "Текущих чистых позиций" (уже купленных) - увеличился,
"роспуска" или "освобождения" ГО под контракты не было.

вопрос - подо что брокер может "морозить" деньги и в какой графе их можно увидеть?
суммы не хватало, порядка пары тысяч рублей, комиссии за этот день я явно меньше "нагенерил" в несколько раз.
Вертикальный и горизонтальный указатели на графике
 
Сделайте пожалуйста чтобы при наведении на график можно было увидеть вертикальную черту на всех других графиках в этом же окне, т.е. чтобы наведя на график можно было бы прикинуть значение индикаторов из другой области к примеру RSI.
Так же было бы неплохо видеть и горизонтальный указатель с ценой.
Можно при наведении выводить значения для этой точки времени во всех областях и всех индикаторах, для каждого индикатора/области выводить значение в своей области.
Посмотрите как это сделано в мобильном приложении Finam, удобно же.

Сейчас приходится запоминать значение времени на графике цены, затем переносить мышку в область индикатора ниже и искать там соответствующее этому времени значение, затем тоже повторять для другой области. Всё это лишние движения.
Пропало вычисление доступных контрактов и объёма ГО
 
В форме ввода заявки почему-то перестало высчитываться максимальное количество лотов ФОРТС, доступное к покупке-продаже
а так же в поле объём ГО всё время стоит ноль, а не сумма ГО под заявку.

где и что надо поправить в настройках чтобы вернуть эти функции?
Поделитесь, кто как отслеживает факт "готовности свечи"?
 
Если кто пользуется CreateDataSource и свечами из него, как вы решаете задачу, чтобы максимально быстро забрать самую последнюю **законченную** свечу?
Имею в виду, в datasource поседняя свеча всё время меняется, как узнать что она уже "точно сформировалась"?
Есть ли такая возможность? Если нет, может нам попросить разработчиков наконец-то сделать её?
Автоматическая смена счёта при смене операции в заявке
 
Заметил такую вещь, у меня два счёта в квике. Отправляю заявку с одного из них.
Далее хочу отправить со второго. Выбираю счёт. Затем меняю операцию. И квик сам меняет счёт на первый в списке "Торговый счёт"
По-моему это баг. Так не должно быть. Потому что это потенциально приводит к ошибкам человека.

Версия 7.19.0.51
Многопоточная работа из dll на C с Lua
 
Добрый день, столкнулся с такой проблемой в последнее время:
думал чтобы поменьше грузить Quik, запустить внутри lua, через средства C отдельный поток std::thread и в нём спокойно обрабатывать запросы стороннего приложения, некий сервер квик-данных реализовать.

Но наткнулся на неприятную проблему, несмотря на то что потковая функция, pipe_thread спокойно работает, если её исполнить в основном main потоке (там тот же самый цикл по while (!stopped)), когда я запускаю её в отдельном потоке, я вижу как квик начинает тормозить: медленно открываются все окна, время начинает драматически отставать, и вообще происходят странные вещи: открытый квик и открые часы Windows 10 начинают "замирать", т.е. показывают секунды 1, 2, 9, 15, вместо 1, 2, 3, 4 ...

Может быть кто-нибудь сталкивался с этим? Не было ли в последней версии каких-то критических изменений связанных с синхронизацией и многопоточностью?
Сейчас код выглядит так:
Код
int main(lua_State *L){
   //// тут мы создаём новый state для отдельного потока
   //// см https://kristianrumberg.wordpress.com/2010/11/21/135/
   //// https://stackoverflow.com/questions/17817452/lua-5-2-2-broken-threading-system/17818481#17818481
   //// https://forum.quik.ru/messages/forum10/message10476/topic212/#message10476

   //lua_gc(L, LUA_GCSTOP, 0);
   //lua_State *tL = lua_newthread(L); // здесь tl кладётся в т.ч. стек L
   //int thread_L_ref = luaL_ref(L, LUA_REGISTRYINDEX); // создаётся ссылка на объект на верхушке стека
   //lua_pushvalue(L, -1);
   //lua_gc(L, LUA_GCRESTART, 0);

   //stopped = false;
   //std::thread pipeThread(pipe_thread, tL);
   //lua_function<lua_Number> lua_Sleep(L, "sleep");

   //while (!stopped) {
   //   lua_Sleep( 1000 );
   //}

   //pipeThread.join();
   //lua_unref(L, thread_L_ref);
   pipe_thread(L);
   message(L, "QPIPE: скрипт остановлен");

   return 0;
}



Если закомментировать вызов pipe_thread и расскомментировать код, который создаёт отдельный поток, то будут тормоза.
Может быть кто-нибудь решал похожую задачу?
Спамеры
 
Вот этот пользователь рассылает спам в личных сообщениях
https://forum.quik.ru/user/12430/

сделайте пожалуйста кнопку "пожаловаться" или "спам", чтобы можно было сразу давать знать модераторам.

спасибо
Сортировка по доходности облигаций работает криво
 
Добрый день, версия 7.19.0.51
сортировка по доходности выполняется как-то очень странно.
скорее не выполняется совсем.
Текст в окошке "Свойства линии"
 
Если редактировать свойства трендовых линий, в окошке "Свойства линии"
Надпись "Продлевать вправо" не влазить при использовании тёмной темы. В итоге выглядить "Продлевать впра..."
Окно само по себе не масштабируемое.
При этом "Продлевать влево" показывается целиком. И места для обеих надписей предостаточно.
Стакан аукциона и ГО под каждый фьючерс, пожелания по новому функционалу и улучшению текущего
 
Сделайте пожалуйста, чтобы на пред/пост-торговом аукционе, когда заявки в стакане переворачиваются, скроллинг был бы нормальным.
А то если покупки и продажи плохо пересекаются, то все продажи уезжают вверх, в середине показываются покупки красным цветом, а половина стакана показывается пустой.
И даже если двигать скроллбар, то квик потом перескролливает всё обратно как было - как было плохо. Это жутко неудобно!

И второе. Совершенно отсутствует функционал, где можно было бы посмотреть в нормальных рублях, сколько ГО занято под каждый купленный фьючерс.
Видно что суммарно заблокированно столько-то столько-то, но сколько в рублях под каждый фьюч - сиди вычисляй. А если фьючей 5-10? Как отследить? А если часть из них валютные, как понять сколько ГО в рублях ушло на каждый? Это жутко неудобно!
Что такое Volume на графике открытого интереса в Квике?
 
пытаюсь придумать что он может значить, но ни с чем не бъётся
[img]file:///C:/Users/lenovo/Pictures/volume.png[/img]
кто-нибудь пробовал тут изображения прикладывать? не работает же.
2016ый год на дворе. Сделайте уже кнопку "перевести срочные инструменты на следующий квартал", ну или как-то более ласково назовите ежеквартальную смену фьючерсов. на графиках, в таблицах текущих параметров и стаканах котировок
 
ну честное слово, плёвое же дело для разработчиков.
сейчас чтобы сменить инструмент на графике надо нажать правую кнопку мыши, выбрать редактировать, дальше выбрать диаграмму, дальше нажать кнопку изменить инструмент, дальше вбить в фильтр название инструмента, дальше выбрать его мышкой, дальше нажать ок мышкой.
ну не слишком ли много дел?
а операцию надо делать ежегодно 4 раза, умножить на то, сколько графиков открыто.
Заголовок окна в 7.2.2.3, При максимизации окна, заголовок с текущего окна не правильно добавляется к заголовку главного окна программы
 
Допустим у меня на закладке открыты графики россетей, газпрома и сургутнефтегаза.
У каждого окошка свой корректный заголовок.
Дальше максимизирую одно из окошек. Допустим россети - при этом у главного окна появляется подзаголовок - Сургутнефтегаз. А картинка россетей.
Максимизирую Сургут - у главного подзаголовок Газпром.
Максимизирую Газпром - у главного подзаголовок Россети.
возможно связано с тем что перед этим я использовал функцию связывания графика с таблицей. но затем эту функцию выключил и графики от таблицы уже отвязаны.
Quik моргает на медленной скорости
 
Если подключиться с ноутбука по телефону, на сравнительно медленной скорости интернета, то ощутимо видно как квик моргает, примерно каждые 5 секунд.
OS Windows 10.
очень неприятно.

вот тут https://support.microsoft.com/en-us/help/12374/windows-10-troubleshoot-screen-flickering пишут что проблема или в драйвере экрана, или в приложении.
Если таскменеджер не моргает, то проблема с приложением.
Я проверил, таскман не моргает. Т.е. проблема с приложением. Что можете сказать про Quik?
Версия 7.2.2.3

На нормальной скорости интернет тоже моргает, но уже не настолько явно. Но заметно и неприятно всё равно.
не проходит вызов ds:Size из С++, в Lua работает, в C++ возвращается 0
 
создаю в C++ источник данных, через CreateDataSource
затем возвращаю его в Lua, там беру Size, получаю допустим 800.
снова возвращаюсь в C++, беру Size - получаю 0
возвращаюсь второй раз с тем же самым источником данных, вызываю в Lua ds:Size() получаю опять 800

почему не получается размер в C+?
порядок вызова такой:
// ds уже в стеке, лежит наверху
lua_getfield(L, -1, "Size");
lua_pcall(L, 0, 1, 0);
double size = lua_tonumber(L, -1);
lua_pop(L, 1);

в size оказывается 0;
почему не 800?
Invalid Context из CreateDataSource, при работе с Lua из С++
 
Пытаюсь работать с Lua из dll
вот такой код, см ниже. Функция testDS вызывается из lua, без параметров
и по идее должна возвращать датасорс, по аналогии с CreateDataSource

функция message - это аналог Lua message, выдаёт окошко с сообщением в квике
сообщения по ходу программы такие
before create datasource
pcall succeeded
after create datasource
2
ds is nil
invalid context
nil

вопрос: что означает сообщение об ошибке "invalid context" при вызове createdatasource?
что не так?
спасибо!

Код
int testS(lua_State *L, LPCSTR cl, LPCSTR sec, double interval){
      lua_getglobal(L, "CreateDataSource");
      lua_pushstring(L, cl);
      lua_pushstring(L, sec);
      lua_pushnumber(L, interval);

      message(L, "before create datasource");
      if (lua_pcall(L, 3, 2, 0)!=0){
         message(L, "pcall unsucceeded");
         message(L, lua_tostring(L, -2));
      } else {
         message(L, "pcall succeeded");
      }
      message(L, "after create datasource");
      char x[10];
      itoa(lua_gettop(L), x, 10);
      message(L, x);
      if (lua_isnil(L, -2)){
         message(L, "ds is nil");
         message(L, lua_tostring(L, -1));
      }
      lua_remove(L, -1);
      // -2 = массив
      message(L, lua_typename(L, lua_type(L, -1)));
      message(L, lua_tostring(L, -1));
      return 1;
}

int testDS(lua_State *L){
   testS(L, "SPBFUT", "Si-6.16", 1);
   return 1;
}
Куда быстрее попадают новые данные, в стакан или таблицу текущих параметров?, Интересуют лучший спрос и лучшее предложение - спред в стакане.
 
Обратил внимание, что функция,
Код
function bestBidAndOffer(cls, sec)
   local ql2 = getQuoteLevel2(cls, sec)
--   message("" .. ql2.bid_count, 1)
        if ql2 ~= nil then
           return ql2.bid[ql2.bid_count+0].price, ql2.offer[1].price
        end
        return nil
end
которая использует getQuoteLevel2 в первые минуты торгов может отрабатывать целых 10 миллисекунд, иногда 5, а в обычное время 1
может быстрее будет брать из таблицы текущих параметров? но тогда куда быстрее попадают новые данные? визуально не поймёшь, если только программу писать для сравнения.
всё-таки куда быстрее попадают данные из квика - в таблицу текущих параметров или в стакан
и какая функция быстрее, getQuoteLevel2  или getParamEx. на последний вопрос кажется ответ я знаю. а предпоследний  - нет.
Already is connected to quik
 
Обратил внимание, что trans2quik.dll выдаёт такое сообщение в некоторых случаях.
Хотел узнать, кто такой Already и почему он подсоединился к шучу квику?
Но действительно, в фразе ошибка. И не очень понятно, почему dll сообщает на английском, в то время как сам quik возвращает все сообщения на нормальном русском языке.
Разная скорость регистрации заявок по Si и по ED, 50-250 мсек на регистрацию заявки по Si и 1 мсек на регистрацию заявки по ED
 
Не хотелось бы упоминать конкретного брокера, но заметил такую вещь:
между TRANS2QUIK_SEND_ASYNC_TRANSACTION и получением статуса "заявка зарегистрирована" в TRANS2QUIK_TRANSACTION_REPLY_CALLBACK для инструмента Si обычно проходит 50-250 мсек.
а для инструмента ED - примерно в тоже самое время суток (разница 10-20 минут не больше) проходит 1 (одна!) миллисекунда.
код, естественно, один и тот же.

понятно, что оборот по инструментам разный. но от чего может быть такая зависимость? от настроек квика? (по Si ещё открыта таблица опционов, по ED - нет), от особенность работы брокера (искусственно тормозит заявки, "закрывает об себя"?) или всё нормально - и задержка чисто на стороне биржи, связанная с количеством агентов (трейдеров/роботов) в стакане?

мне казалось что по ED народу не так уж чтобы сильно меньше, 50-250 раз разницы - это какой-то "перебор"
Паузы 15 мске при отправке TRANS2QUIK_SEND_ASYNC_TRANSACTION, обнаружил странные паузы
 
Периодически возникают странные паузы в работе робота, в 15 мсек по исполнению TRANS2QUIK_SEND_ASYNC_TRANSACTION
в нормально время она исполняется < 1 мсек

пытаюсь найти причину, хотел бы уточнить, может ли быть дело в самой TRANS2QUIK_SEND_ASYNC_TRANSACTION или это где-то в другой стороне?
робот работает в Java, для вызова dll используется JNA и в целом, как я говорю, отрабатывает <1 мсек.
но вот эти странные паузы ровно в 15 мсек меня настораживают.

ОС Windows 7 pro
памяти 16 Gb, под Java выделено тоже много, сомневаюсь что это GC

хотелось бы понять, замечал ли кто подобные паузы и с чем они могут быть связаны. а так же детали реализации TRANS2QUIK_SEND_ASYNC_TRANSACTION.
может ли она содержать в себе какую-либо синхронизацию (паузу) или по-честному всегда возвращатся квази-мгновенно?

спасибо!
CreateDataSource если график не открыт
 
Почему для того чтобы CreateDataSource вернул не пустой массив, нужно чтобы на рабочем месте хоть раз был открыт график по этому инструменту?
Сегодня проводил несколько экспериментов - создавал DataSource для пятиминуток в Si-9.15
Изначально графиков с ним открытых не было - только Si-6.15 (предыдущий) и возвращался в результате пустой DS
если Si-9.15 внести в таблицу параметров - это не влияет на DataSource - так и возвращается пустой.
если же открыть хотя бы часовой график Si-9.15, то DataSource даже для 5минуток начинает возвращать свечи.

в настройках стоит "с учётом настроек Связь/Списки", в настройках "Связь/Списки" фильр для инструментов не задан (доступны все).

неужели обязательно теперь будет открывать новый график, чтобы программа на Lua корректно получала данные?
отправка заявки на закрытии сессии, заявка снимается, но показывается как исполнена
 
Версия Quik 6.14.0.12 (такую брокер использует).
отправляю заявки через Trans2Quik.dll, при этом отслеживаю статус исполнения через
TRANS2QUIK_ORDER_STATUS_CALLBACK

алгоритм пытается выставить заявку достаточно близко к концу закрытия сессии.
при этом исходя из статусов от Quik API - всё проходит отлично. Но в самом окошке Квика заявка оказывается снятой в 18-45, никаких дополнительных комментариев по ней нет.
И уведомления о том что она снята в TRANS2QUIK_ORDER_STATUS_CALLBACK не приходит, т.е. алгоритм пытается и дальше дождаться, когда же она исполнится.

Почему так?
вот лог вызовов операций Trans2Quik API из моего алгоритма:

ACCOUNT=SPBFUT00XXX; CLIENT_CODE= SPBFUT00XXX; TYPE=L; TRANS_ID=5566; CLASSCODE=SPBFUT; SECCODE=ED-6.15; ACTION=NEW_ORDER; OPERATION=B; PRICE=1.1116; QUANTITY=9;

SendAsyncTransaction retcode=0 errorCode=0 errorMessage=
acceptTransactionReply** nTransactionResult: 0 nTransactionExtendedErrorCode: 0 transID: 5566 orderNum: 16000034016 replyCode: 3 message: Заявка, с биржевым номером 16000034016, успешно зарегистрирована.
acceptOrderStatus** nMode: 0, dwTransID: 5566,  number: 16000034016,  price: 1.1116,  balance: 9,  value: 565160.58,  isSell: 0,  orderDescriptor: 387643556,  status: 2, brokerRef: SPBFUT00XXX
acceptOrderStatus** nMode: 0, dwTransID: 5566,  number: 16000034016,  price: 1.1116,  balance: 9,  value: 565160.58,  isSell: 0,  orderDescriptor: 387643556,  status: 2, brokerRef: SPBFUT00XXX
acceptOrderStatus** nMode: 0, dwTransID: 5566,  number: 16000034016,  price: 1.1116,  balance: 9,  value: 565160.58,  isSell: 0,  orderDescriptor: 387643556,  status: 2, brokerRef: SPBFUT00XXX

дальше в логе сообщений по заявке не было.
вопрос собственно - почему?

заявка была подана 18:44:59.908
отсуствие информации о заявках, при отправке через TRANS2QUIK.dll
 
Пробую отлаживать новый функционал на выходных из вашего демо-клиента (Quik-Junior).
При подписывании на заявки, старте их получения, в order callback приходит только OrderDescriptor. и всё...

пробовал через ваше тестовое приложение API_Tester_DLG.exe - тоже самое. приходит OrderDescriptor, времена там какие-то,
а ключевой информации, вроде номер заявки, количество, цена и тп - всё по нулям.
в таблике заявок квика всё нормально.

это ваш тестовый сервер специально так настроен? или с квиком что-то не так?
Quik версия 6.17.0.58, Trans2QUIK версии 1.2

в transaction callback приходят нормальные корректные данные.
Как получить из таблицы параметров несколько колонок одновременно?, Надо сопоставить объём по последней сделке в контрактах и в деньгах
 
Подскажите, как получить из таблицы текущих параметров в Lua одновременно объём по последней сделке и деньгах и в контрактах?
Насколько я понимаю, для этого надо вызывать два раза функцию getParamEx, но ведь нет никакой гарантии, что таблица не изменится за это время.
Как с получить эти данные, с гарантией, что они соответствуют одному и тому же моменту?
Страницы: 1
Наверх