nikolz (Все сообщения пользователя)

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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 89 След.
Причина очень медленной загрузки QUIK
 
это сейчас
Причина очень медленной загрузки QUIK
 
а это сейчас:
Причина очень медленной загрузки QUIK
 
Причина очень медленной загрузки QUIK
 
В данный момент совершены сделки и объем занимаемой памяти составляет 976 МБайт
Причина очень медленной загрузки QUIK
 
Информация к размышлению:
Причины тормозов при старте. Вскрытие покажет.
 
Цитата
Йцукен написал:
Цитата
nikolz написал:
На объем и время при старте  влияет повторный расчет индикаторов на Lua,
 циклический расчет индикаторов (возможно и графиков) для каждой свечи при старте
  и размер сохраненной истории, по которым считаются эти индикаторы.
Но как вы догадались, Холмс?  
Расчёт индикатора при старте не должен сильно отличаться от расчёта при его добавлении на график. При добавлении даже три раза пересчитывается, а при старте терминала - "только" два раза.
Но если в индикаторе используется getCandlesByIndex, то есть свои нюансы в расчётах.
Чтобы оценить влияние Lua-индикаторов, можно переименовать папку LuaIndicators, и сравнить время загрузки с индикаторами и без.
Приведите доказательства, Ватсон.
Причины тормозов при старте. Вскрытие покажет.
 
После указанное выше рабочей гипотезы, я добавил в индикаторы сборщик мусора в начале расчета.
-------------------------
Не берусь утверждать, является ли это причиной,
но сегодня при старте  объем занятой памяти составил 875 Мбайт,
а время третьего этапа составило 2 минуты.
--------------------
Так как это лишь единственный эксперимент, то исследования продолжаются.
Причины тормозов при старте. Вскрытие покажет.
 
Всем,добрый день,
Предлагаю обсудить проблему тормозов при старте терминала.
-------------------
До последней прошедшей недели пользовался версией 8.7
Неоднократно пытался установить более свежую версию, но всегда получал тормоза и возвращался к 8.7
-------------------
На прошедшей неделе Сбербанк перешел на единый счет и мне пришлось устанавливать версии 12
так как исчезли параметры по фьючерсам.
-----------------------
Сначала установил версию 12.6 которая выложена у Сбербанка.
Получил увеличение объема занятой памяти терминалом в 2 раза с 600 Мбайт до 1200Мбайт и жуткие тормоза
--------------------------
По совету разработчиков установил новую версию 12.8.4
Объем занимаемой памяти при старте сократился с 1200 до 900.
Почему он изменяется ?
-----------------------------
Самое странное, что во время торгов объем занимаемой памяти постепенно уменьшается.
Если никаких действий не совершать , то объем занимаемой памяти сокращается до 50Мбайт.
Но если начать что-то делать, то он снова увеличивается, но не более 700, а иногда и не более 350Mбайт.
--------------------
Трудно что-либо придумать почему так происходит.
--------------------------
Но так как максимальный объем всегда получается при старте и это приводит к очень длительной загрузки, то
давайте обсудим возможные причины этого.
----------------------------
Время старта можно разделить на три этапа.
Первый - запуск терминал.
Второй -ввод пароля
Третий- ввод кода со смартфона.
-------------------
самый короткий интервал - второй. Задержки при нем пока не будем рассматривать.
-----------------
Сначала я предположил, как и многие на форуме, что проблема медленной загрузки  в длительном получении начальной информации с сервера брокера.
Но теперь у меня другая рабочая гипотеза.
=================
Основа ее в том, что время первого и третьего этапов одинаковое.
Характерно , первый и третий этапы имеют одинаковое значение времени исполнения  -в моем случае это по 4 минуты каждый.
Но в первом этапе нет никакой связи с сервером.
Получается, что соединение с сервером не влияет ни на объем занимаемой памяти ни на время старта.
=================
Поэтому я считаю, что указанные проблемы (время старта и объем занимаемой памяти )
связаны исключительно  с вычислениями, которые совершает терминал при старте.
=====================
Более того, эта гипотеза подтверждается тем, что в третьем этапе терминал сначала уменьшает объем занятой памяти
до 350 Мбайт. А потом медленно начинает увеличивать его до тех же 900 Мбайт что и в первом этапе.
=====================
Как правило время и занятая память у всех пользователей разные.
Это связано с конкретной настройкой интерфейса. Т е числом окон с графиками, числом таблиц и стаканов и числом скриптов на Lua.
=====================
Полагаю, что максимальный объем памяти в момент старта возникает по причине, возможно не единственной, но одной из основных,
РАСЧЕТА ИНДИКАТОРОВ НА LUA.
========================
Известно, что индикаторы на луа вычисляются  несколько раз при открытии графика.
----------------------------------------
В результате такого расчета возникает куча мусора от этих расчетов, так как сборщик мусора при старте не работает.
------------------------
В начале третьего этапе терминал удаляет все расчеты первого этапа и память сокращается.
-------------------------
Так как у меня установлена подписка вручную, то ничего нового при соединении с сервером не приходит.
---------------------------------
Терминал снова начинает свой расчет индикаторов и графиков и это увеличивает объем памяти до максимума для всей сессии.
-------------------------
Но это еще не все.
Длительный расчет индикаторов и графиков при старте связан с тем, что хотя все свечи от первой до последней имеются в начале расчета,
Расчет индикаторов, а возможно и построение графиков выполняется для каждой свечи отдельно в цикле Calculate.
Так как большинство индикаторов - это интегральная обработка данных в окне,
то при 3000 свечах (это то что сохраняет сервер) для каждого индикатора
в цикле при старте вычисления в скользящем окне выполняются 3000 и более раз.
Если история сохраняется на ПК, то со временем тормоза и объем занимаемой памяти растет.
--------------------------------
Предположу, что это тупиковый момент в развитии QUIK и он требует кардинальных изменений.
---------------------------
Еще заметил, что число подписанных инструментов не влияет на объем и время при старте.
------------------------
Резюме:
На объем и время при старте  влияет повторный расчет индикаторов на Lua,
циклический расчет индикаторов (возможно и графиков) для каждой свечи при старте
и размер сохраненной истории, по которым считаются эти индикаторы.
----------------------------
Тот факт, что объем памяти при старте версии 12.6 на 300 Мбайт больше, чем при старте версии 12.8 говорит о том,
что, как говорил сатирик "что-то не так в консерватории"
-------------------------
Возможно, решением было бы исключение повторных расчетов индикаторов и принудительный запуск сборщика мусора при завершении третьего этапа.
-------------------------
Исследования продолжаются....
=========================
P.S. В настоящее время кувыркаюсь с единим счетом. Постоянно исчезают позиции по фьючерсам.
Кроме того, как уже писал на форуме,но без ответа, сваливание в кучу информации об акциях и фьючерсах имеет не только систематические ошибки, но и противоречит ФЗ "О рынке ЦБ"
Но это уже другая история  
как вернуть левую шкалу на график?
 
Миллион раз так делаю.  
Иногда не сразу получается.
Перед написанием совета специально сделал это несколько раз без особых проблем.
Причина очень медленной загрузки QUIK
 
Обнаружил такой факт.
Если в открытом окне  с интервалом 1 минута сменить интервал на 5 минут,
то объем занятой памяти сокращается примерно на 60 Мбайт.
Причина очень медленной загрузки QUIK
 
Специально удалил таблицу ТТТ ничего не изменилось
Причина очень медленной загрузки QUIK
 
Цитата
Nikolay написал:
Сегодня специально убрал все таблицы текущих торгов, особенно с иностранными акциями. Была, оказывается, открыта в свернутом виде. И терминал прямо ожил. Т.е. ТТТ с большим числом записей дает такую загрузку терминала.
Nikolay,
Если у Вас квики от нескольких брокеров, то напишите какой размер у них файла справочника  sec.dat.
Окно сообщений закрывает окно ввода
 
Версия 12.8.3.4
при старте терминала:
Как записать данные в массив?
 
Пример записи данных в таблицу скрипта есть в док QLua Приложение 1
Как записать данные в массив?
 
Цитата
prugramzer написал:
Квик выдает "attempt to index a nil value (local 'cc14')" , и в сс13 тоже ничего не пишет, тоже nil
Как записывать данные в массив на луа?
ошибка:
local cc13, cc14={}

cc13 -таблица, а сс14 -nil
----------------
Правильно:
local cc13, cc14={},{}
Скрипт для обнаружение задержек данных
 
Вот так сегодня тормозит Сбербанк:
Код
Mon Feb 16 10:27:48 2026,задержка(сек)=60
Mon Feb 16 10:28:18 2026,задержка(сек)=90
Mon Feb 16 10:28:48 2026,задержка(сек)=120
Mon Feb 16 10:29:18 2026,задержка(сек)=150
Mon Feb 16 10:30:18 2026,задержка(сек)=31
Mon Feb 16 10:30:48 2026,задержка(сек)=61
Mon Feb 16 10:31:18 2026,задержка(сек)=91
Mon Feb 16 10:31:48 2026,задержка(сек)=122

Mon Feb 16 11:11:18 2026,задержка(сек)=60
Mon Feb 16 11:11:48 2026,задержка(сек)=90
Mon Feb 16 11:12:18 2026,задержка(сек)=120

Mon Feb 16 14:25:19 2026,задержка(сек)=39
Mon Feb 16 14:25:49 2026,задержка(сек)=69
Mon Feb 16 14:26:19 2026,задержка(сек)=99
Mon Feb 16 14:26:49 2026,задержка(сек)=129

Mon Feb 16 16:43:49 2026,задержка(сек)=32
Mon Feb 16 16:44:19 2026,задержка(сек)=62
Mon Feb 16 16:44:49 2026,задержка(сек)=92
Mon Feb 16 16:45:19 2026,задержка(сек)=122
Mon Feb 16 16:45:49 2026,задержка(сек)=152

Mon Feb 16 19:22:50 2026,задержка(сек)=42
Mon Feb 16 19:23:19 2026,задержка(сек)=72
Mon Feb 16 19:23:50 2026,задержка(сек)=102
Mon Feb 16 19:24:20 2026,задержка(сек)=132
Mon Feb 16 19:24:50 2026,задержка(сек)=162
Mon Feb 16 19:25:50 2026,задержка(сек)=58
Mon Feb 16 19:26:20 2026,задержка(сек)=89
Mon Feb 16 19:26:50 2026,задержка(сек)=119

Mon Feb 16 19:27:50 2026
Вопрос к Разработчикам. Можете объяснить этот прикол?
 
Код
Mon Feb 16 10:27:48 2026,задержка(сек)=60
Mon Feb 16 10:28:18 2026,задержка(сек)=90
Mon Feb 16 10:28:48 2026,задержка(сек)=120
Mon Feb 16 10:29:18 2026,задержка(сек)=150
Mon Feb 16 10:30:18 2026,задержка(сек)=31
Mon Feb 16 10:30:48 2026,задержка(сек)=61
Mon Feb 16 10:31:18 2026,задержка(сек)=91
Mon Feb 16 10:31:48 2026,задержка(сек)=122

Mon Feb 16 11:11:18 2026,задержка(сек)=60
Mon Feb 16 11:11:48 2026,задержка(сек)=90
Mon Feb 16 11:12:18 2026,задержка(сек)=120

Mon Feb 16 14:25:19 2026,задержка(сек)=39
Mon Feb 16 14:25:49 2026,задержка(сек)=69
Mon Feb 16 14:26:19 2026,задержка(сек)=99
Mon Feb 16 14:26:49 2026,задержка(сек)=129

Mon Feb 16 16:43:49 2026,задержка(сек)=32
Mon Feb 16 16:44:19 2026,задержка(сек)=62
Mon Feb 16 16:44:49 2026,задержка(сек)=92
Mon Feb 16 16:45:19 2026,задержка(сек)=122
Mon Feb 16 16:45:49 2026,задержка(сек)=152

Mon Feb 16 19:22:50 2026,задержка(сек)=42
Mon Feb 16 19:23:19 2026,задержка(сек)=72
Mon Feb 16 19:23:50 2026,задержка(сек)=102
Mon Feb 16 19:24:20 2026,задержка(сек)=132
Mon Feb 16 19:24:50 2026,задержка(сек)=162
Mon Feb 16 19:25:50 2026,задержка(сек)=58
Mon Feb 16 19:26:20 2026,задержка(сек)=89
Mon Feb 16 19:26:50 2026,задержка(сек)=119
Mon Feb 16 19:27:50 2026
Гарантируется ли вызов колбэка при получении Квиком новых данных?, Вопросы разработчикам QUIK
 
Колбек вызывается перед записью в таблицу сделок
-----------------------
Если колбек не вызван, то и записи в таблицу не будет
Гарантируется ли вызов колбэка при получении Квиком новых данных?, Вопросы разработчикам QUIK
 
Цитата
Йцукен написал:
В документе "Использование Lua в Рабочем месте QUIK.pdf" на стр. 5-8 приведено описание событийной модели, как одного из подходов написания скриптов Lua в Рабочем месте QUIK.
На стр. 8 приведён пример скрипта NumberOfTradesOnCallbacks.lua

Вопросы:
1) Гарантирует ли данный подход, что все данные по сделкам, которые получит терминал с момента запуска скрипта, будут обработаны скриптом в колбэке OnTrade?
2) Может ли быть такое, что данные на рабочее место поступили, а колбэк не был вызван?
1 да
2 нет
Вопрос к Разработчикам. Можете объяснить этот прикол?
 
Код
Mon Feb 16 10:27:48 2026,задержка(сек)=60
Mon Feb 16 10:28:18 2026,задержка(сек)=90
Mon Feb 16 10:28:48 2026,задержка(сек)=120
Mon Feb 16 10:29:18 2026,задержка(сек)=150
Mon Feb 16 10:30:18 2026,задержка(сек)=31
Mon Feb 16 10:30:48 2026,задержка(сек)=61
Mon Feb 16 10:31:18 2026,задержка(сек)=91
Mon Feb 16 10:31:48 2026,задержка(сек)=122

Mon Feb 16 11:11:18 2026,задержка(сек)=60
Mon Feb 16 11:11:48 2026,задержка(сек)=90
Mon Feb 16 11:12:18 2026,задержка(сек)=120

Mon Feb 16 14:25:19 2026,задержка(сек)=39
Mon Feb 16 14:25:49 2026,задержка(сек)=69
Mon Feb 16 14:26:19 2026,задержка(сек)=99
Mon Feb 16 14:26:49 2026,задержка(сек)=129

Mon Feb 16 16:43:49 2026,задержка(сек)=32
Mon Feb 16 16:44:19 2026,задержка(сек)=62
Mon Feb 16 16:44:49 2026,задержка(сек)=92
Mon Feb 16 16:45:19 2026,задержка(сек)=122
Mon Feb 16 16:45:49 2026,задержка(сек)=152

Mon Feb 16 17:05:49 2026
Вопрос к Разработчикам. Можете объяснить этот прикол?
 
Код
Mon Feb 16 10:27:48 2026,задержка(сек)=60
Mon Feb 16 10:28:18 2026,задержка(сек)=90
Mon Feb 16 10:28:48 2026,задержка(сек)=120
Mon Feb 16 10:29:18 2026,задержка(сек)=150
Mon Feb 16 10:30:18 2026,задержка(сек)=31
Mon Feb 16 10:30:48 2026,задержка(сек)=61
Mon Feb 16 10:31:18 2026,задержка(сек)=91
Mon Feb 16 10:31:48 2026,задержка(сек)=122

Mon Feb 16 11:11:18 2026,задержка(сек)=60
Mon Feb 16 11:11:48 2026,задержка(сек)=90
Mon Feb 16 11:12:18 2026,задержка(сек)=120

Mon Feb 16 14:25:19 2026,задержка(сек)=39
Mon Feb 16 14:25:49 2026,задержка(сек)=69
Mon Feb 16 14:26:19 2026,задержка(сек)=99
Mon Feb 16 14:26:49 2026,задержка(сек)=129
Mon Feb 16 14:27:19 2026
Варианты построения робота
 
Тема предназначена для начинающих писателей роботов
------------------  
Вариантов написания роботов в терминале QUIK на луа множество.
Кратко расскажу о них на основе своего опыта.
-------------
По функциональному назначению можно разделить роботов на 3 класса.
1) Роботы , которые прогнозируют моменты изменения рынка для изменения позиции.Роботы-советники
2) Роботы, которые совершают транзакции на основе простейших алгоритмов и управляют стоп-заявками.
3) Роботы , которые объединяют функции 1 и 2.
---------------
Любого робота можно написать либо в виде скрипта-индикатора,далее робот-индикатор,
либо в виде скрипта не индикатора, далее робот-скрипт.
Разница в том, что робот на основе индикатора запускается на графике инструмента, которым торгуем,
а робот-скрипт, не индикатор, запускается без автоматической привязки к инструменту.
------------------
Робот индикатор самый простой в написании. в нем не надо подписываться на инструмент.
В него автоматически поступают данные лишь конкретного инструмента.
--------------------
Недостаток его в том,
что его надо запускать на графике инструмента и следовательно надо открывать окно с графиком.
Но обычно так все и торгуют.
---------------
Робот-скрипт  является универсальным и позволяет построить рой роботов, которые могут обмениваться данными и проводить расчеты параллельно.
----------------------------------
На этом пока все.
Если есть вопросы, то отвечу
---------------------
Продолжение следует...


   
Не приходит полная версия OnTrade
 
Вообще-то, так как роботы есть разные, то целесообразность использования событий(колбеков)  тоже разная.
----------------------
Поэтому сделал обработку для всех событий, а применяю в конкретном роботе то, что имеет смысл "здесь и сейчас".
--------------------
Сейчас у меня все очень оптимально.
Все события обрабатывает один скрипт Он же выставляет и снимает заявки.
Остальные скрипты и приложения занимаются прогнозированием момента изменения позиции по конкретному инструменту
Скрипт(приложение) на инструмент или класс.
Не приходит полная версия OnTrade
 
Читать стакан в колбеке - это мазохизм какой-то.
Не приходит полная версия OnTrade
 
Лазить в таблицы вместо колбеков имеет смысл ,например, для получения текущих значений счета или размера позиции.
Но даже и в этом случае колбек  может быть полезен.  
Не приходит полная версия OnTrade
 
Добавлю свои пять копеек в вашу вумную беседу...
---------------------
Разные события обрабатываю по-разному.
------------------------
Обработка в main связана с очередью событий,
если не хочется пропускать события.
А стояние в очереди - это тоже время.
----------
Для оптимизации и минимизации:
-----------------
OnTransReply
Очень простой алгоритм, если нет ошибки.
обработка ошибки сложнее, но она бывает редко.
Поэтому его обработку делаю внутри функции колбека.
Время обработки равно времени передачи в очередь.
-----------------------
Применяю оптимизацию очереди.
Суть в том, что если пришло событие по конкретному инструменту,
которое уже есть в очереди,
то событие  в очереди уже устарело и его обрабатывать не следует.
Вопрос к Разработчикам. Можете объяснить этот прикол?
 
Код
Mon Feb 16 10:27:48 2026,задержка(сек)=60
Mon Feb 16 10:28:18 2026,задержка(сек)=90
Mon Feb 16 10:28:48 2026,задержка(сек)=120
Mon Feb 16 10:29:18 2026,задержка(сек)=150
Mon Feb 16 10:30:18 2026,задержка(сек)=31
Mon Feb 16 10:30:48 2026,задержка(сек)=61
Mon Feb 16 10:31:18 2026,задержка(сек)=91
Mon Feb 16 10:31:48 2026,задержка(сек)=122
Mon Feb 16 11:11:18 2026,задержка(сек)=60
Mon Feb 16 11:11:48 2026,задержка(сек)=90
Mon Feb 16 11:12:18 2026,задержка(сек)=120
Mon Feb 16 11:59:18 2026
Вопрос к Разработчикам. Можете объяснить этот прикол?
 
время местное мск+1
Вопрос к Разработчикам. Можете объяснить этот прикол?
 
Код
Mon Feb 16 10:27:48 2026,задержка(сек)=60
Mon Feb 16 10:28:18 2026,задержка(сек)=90
Mon Feb 16 10:28:48 2026,задержка(сек)=120
Mon Feb 16 10:29:18 2026,задержка(сек)=150
Mon Feb 16 10:30:18 2026,задержка(сек)=31
Mon Feb 16 10:30:48 2026,задержка(сек)=61
Mon Feb 16 10:31:18 2026,задержка(сек)=91
Mon Feb 16 10:31:48 2026,задержка(сек)=122
Mon Feb 16 10:40:18 2026
Вопрос к Разработчикам. Можете объяснить этот прикол?
 
Сделал скрипт для их фиксации. Выложил на форум для всех желающих. Как соберу статистику выложу.
Скрипт для обнаружение задержек данных
 
Для обнаружения ситуаций, когда соединение с сервером нормальное, но с сервера не поступают данные ВООБЩЕ написал скрипт.
Скрипт пишет данные о времени последней связи с сервером и фиксирует задержу в лог файле.
скрипт в стадии тестирования.
Желающие присоединяйтесь.
Код
function HMS(T) 
   local hms=0; for s in T:gmatch("[^:]+") do hms=60*hms+tonumber(s) end 
return hms;
end
MaxTime=30 
function main()
   while run do
      TS=getInfoParam("SERVERTIME")--  Время сервера  
      TW=getInfoParam("LASTRECORDTIME")--  Время последней записи  
      if TS and TW  then 
         TL=getInfoParam("LASTPINGTIME")  --Время последней проверки связи  
         if TL_OLD and TL~=TL_OLD then
            local str=os.date()
            if D>MaxTime then str=str..",задержка(сек)="..D; end 
            Log:seek("set",begin); 
            Log:write(str.."\n");    Log:flush(); 
            if D>MaxTime then begin=Log:seek(); end
         end
         TS_HMS=HMS(TS);   D=math.abs(HMS(TW)-TS_HMS)
      end
         TL_OLD=TL;
      sleep(200);
   end
end
function OnInit(ph)
ph=ph:sub(1,ph:len()-3).."log"; 
Log = io.open(ph, "w");Log:close(); Log = io.open(ph, "r+");
 begin=Log:seek(); 
D=0;
   run=true
end

Вопрос к Разработчикам. Можете объяснить этот прикол?
 
сейчас 920Мбайт
Вопрос к Разработчикам. Можете объяснить этот прикол?
 
Цитата
Pivaev Maxim написал:
nikolz, просим Вас повторно запечатлить момент задержек, которые Вы наблюдаете в Рабочем месте QUIK, а также подробно уточнить время, в которое возникают задержки, и с какими данными возникают трудности.
относительно задержек не так трогает, как время старта терминала и занимаемая им память в самом начале торгов. Обычно она самая большая и составляет 1200 Мбайт. в процессе торгов она может уменьшаться в 20 раз и составлять даже 50мбайт.  Но в среднем в процессе торгов составляет 300Мбайт.  
Вопрос к Разработчикам. Можете объяснить этот прикол?
 
сегодня загружалось   15 минут с момента ввода кода аутентификации.
как вернуть левую шкалу на график?
 
Цитата
Giulia написал:
Шкала была ранее скрыта. Как теперь ее снова вернуть на график?
ставите мышкой курсор на границу левой стороны рамки и тяните вправо

Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
 
TGB,
Если Вы знаете русский язык, то фраза
"до тех пор пока в потоке main не выполнится sleep или сишная функция"
означает, что время измеряется от некоторого момента до выполнения sleep  до момента окончания выполнения sleep.
-----------------
И понять эту фразу очень сложно.
Время до оператора  sleep     -   это время обработки очереди в цикле в main (пример есть в документации).  
Если бы в это время колбеки остановились, то никакой очереди создать было бы невозможно.
--------------------
момент времени после исполнения sleep   Если в sleep 0, то это практически время начала исполнения sleep  B этом случае оно совпадает с началом цикла обработки очереди.
-----------------------------
таким образом Вы сказали буквально следующее:  Колбеки всегда остановлены если в main нет функции sleep или параметр у нее равен нулю.
Но колбеки прекрасно работают и без sleep в main.
----------------------------
Согласитесь, что вы сказали чушь.
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
 
Цитата
TGB написал:
Цитата
nikolz написал:
Поэтому ничего не блокируется для исполнения sleep.
     Когда же вы научитесь читать :: ? Вы читаете тексты перед тем как писать?
  Ведь написано:
Цитата
TGB написал:
блокируется до тех пор пока в потоке main не выполнится sleep или сишная функция
  Где вы видите у меня фразу: "для исполнения"?  
 У вас какое то недержание ваших текстов.
Вы тоже не умеете читать.
Что именно по-вашему блокируется  "пока в потоке main не выполнится sleep"  
Напишите конкретно от какого до какого момента исполнения кода в функции Main блокируется
--------------------
Я написал именно на это ваше высказывание.
Ничего не блокируется "до тех пор пока в потоке main не выполнится sleep или сишная функция"
===================
Поясняю специально для Вас:
Поток может останавливается в многопоточной системе  если он обращается к ПАМЯТИ  ДАННЫХ ,
к которой обращается в данный момент другой поток. И то если потоки должны писать в эту память.
Если они читатели то никакой блокировки никто не делает.
---------------------------------------
Теперь скажите  К КАКОЙ ПАМЯТИ ВСЕГДА одновременно обращаются колбек и поток main  для записи данных в эту память
"до тех пор пока в потоке main не выполнится sleep или сишная функция"
--------------------------------------
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
 
и еще...
Если значение аргумента sleep равно нулю, поток освобождает оставшуюся часть своего интервала времени для любого потока с таким же приоритетом, готовым к выполнению.
Если других готовых к выполнению потоков с таким же приоритетом нет, выполнение текущего потока не приостанавливается.
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
 
чтобы остановить выполнение потоко с колбеком надо в функцию колбека поставить sleep.
Поток колбека будет остановлен на время указанное в sleep.
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
 
Функция  sleep  уступает свободное время потока следующему потоку.
Например sleep(1000) в main означает, что поток main будет остановлен системой на 1000 ms.
-----------------------
Таким образом,
функция sleep выполняется  быстро, так как ее задача сообщить ОС
чтобы та разбудила поток через заданное время.
ОC устанавливает таймер на событие "запустить поток main через 1000 ms.
------------------------
Все эти действия выполняются буквально мкс .
Поэтому ничего не блокируется для исполнения sleep.
Не приходит полная версия OnTrade
 
По-моему мнению причина в том, что trans_id -  это идентификатор транзакции.
Главное в этой фразе что это ТРАНЗАКЦИЯ.
И это транзакция  на выставление заявки.  Т е это не id заявки и не id сделки.
Поэтому вполне допускаю, что сервер QUIK не посылает повторно сообщение о сделке, если все параметры сделки уже переданы.  
Нет смыла тратить время на передачу id.
Возможно это происходит если сделки совершаются с малым интервалом.
Тогда второе сообщение по первой сделки просто затирается сообщением по второй.  
Но в любом случае отслеживать id транзакции в сообщениях по сделке это нонсенс.
 
Не приходит полная версия OnTrade
 
User12501,
Покажите как Вы реализовали ОnTrade.  
Возможно будет понятнее причина.
Цена исполнения стоп лимит
 
Цитата
Марфа написал:
Добрый вечер. Нигде не могу найти ответ.
Выставила заявку "стоп лимит" на открытие короткой позиции.. Стоп лимит (продажа) = 304.55 . Цена = 304.4.Что произошло? Цена коснулась 304.55 и пошла в противоположную сторону. Результат - цена исполнения данного стоп лимита  304.6р. (выше всех цен, указанных в стоп лимите). Как такое может быть?
Поясняю:
Продано по лучшей цене.
Когда Ваша заявка продать по цене 304.4,
которую сервер выставил по вашему стопу,
долетела до биржи ,
лучшая цена была 304.6.  
Причина очень медленной загрузки QUIK
 
Pivaev Maxim,

Прикольно, к серверу сбербанка - 1200Мбайт и 8 минут
к демо серверу -180Мбайт и 1  минута
Причина очень медленной загрузки QUIK
 
Сейчас объем занимаемой памяти уменьшился до 54 МБайт.
Причина очень медленной загрузки QUIK
 
Сейчас объем занимаемой памяти уменьшился до 125 МБайт.
Причина очень медленной загрузки QUIK
 
Сейчас объем занимаемой памяти уменьшился до 167 МБайт.
Не приходит полная версия OnTrade
 
Цитата
User12501 написал:
Сегодня опять случилась эта бяка. За секунду произошли четыре транзакции, по трём из них полная версия OnTrade (с ненулевым trans_id) не пришла. Видимо придётся убрать из скрипта эту дополнительную проверку. Но вообще факт неприятный.  
Когда делал тесты системы выставления заявок по лучшей цене, то наблюдал подобные эффекты. Как я понял это происходи тогда, когда заявка сразу исполняется встречной. В этом случае приходит сообщение что она и выставилаcь и исполнилась  все в одном. При этом  OnTransReply тоже содержит всю информацию о заявке.
--------------------  
Мне собственно безразлично такие ситуации, так как без разницы сколько раз поступили события по транзакции,заявке или сделке.
Причина очень медленной загрузки QUIK
 
Сейчас объем занимаемой памяти уменьшился до 330 МБайт.
За прошедшее время никаких действий в терминале не совершал.
Причина очень медленной загрузки QUIK
 
Pivaev Maxim,

Есть файл sec.dat  . Вчера он был 14Мбайт сегодня 24Мбайта.
Он очевидно содержит информацию по всем торгуемым инструментам.
---------------------
Но они мне не нужны.
--------------------------
Может надо его обрезать до требуемого количества инструментов, а не присылать кучу мусора?
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 89 След.
Наверх