Уберите, наконец, это ограничение на отображение максимум 3000 свечей. Неудобно анализировать историю на младших таймфреймах. При этом чтобы не грузить терминал пользователь может задать в настройках "Отображать последние x свечей", что уже реализовано.
Надо делать так, как надо. А как не надо - делать не надо.
я тоже думал над этим НО!!! встаёт такой вопрос: а если графиков более чем один. скажем, 20-50 то тогда как? да что говорить? пусть даже 10? при каждом добавлении новой свечки плагин графиков приостанавливает все другие потоки, которые к нему обращаются, что заметно потому как квик начинает "замирать" в этот момент, а потом "догонять" отображение пропущенных данных.
sam063rus пишет: встаёт такой вопрос: а если графиков более чем один. скажем, 20-50 то тогда как? да что говорить? пусть даже 10?
Думаю, вы в состоянии оценить возможности вашего "сервера" и задать для каждого графика необходимое количество свечей.
Цитата
Серж пишет: При этом чтобы не грузить терминал пользователь может задать в настройках "Отображать последние x свечей", что уже реализовано.
А вот эту мысль не понял:
Цитата
sam063rus пишет: при каждом добавлении новой свечки плагин графиков приостанавливает все другие потоки, которые к нему обращаются, что заметно потому как квик начинает "замирать" в этот момент
Количество добавляемых свечей в единицу времени зависит не от количества отображаемых свечей, а от количества открытых графиков.
Надо делать так, как надо. А как не надо - делать не надо.
Серж пишет: При этом чтобы не грузить терминал пользователь может задать в настройках "Отображать последние x свечей", что уже реализовано.
Если ограничение на количество свечей будет снято, то было бы хорошо добавить подобную настройку в основное меню, чтобы один раз введенное значение применялось ко всем вновь открываемым графикам. А уже при необходимости пользователь мог бы изменить его потом в свойствах отдельных графиков.
Ладно. не хотите так - вот вам линк-> ask Big Bill
графики в квике - это окна. Чтобы нарисовать свечу в окне нужно одновременно задействовать порядка 10-ти объектов GDI (карандаши, кисти, регионы и т. д. и т. п.). Существует ограничение по числу объектов GDI на один контекст и уж тем более на одно окно-график. А теперь, умножьте количество объектов GDI на 3000. И это, не говоря про то сколько это сожрёт памяти, а также быстродействия - т.к. оконная функция будет по времени съедать весть "тред" (поток, а в квике, судя по всему, главный поток).
Чтобы как-то исправить данную ситуацию и отказаться от наклёвывающейся потери производительности - разработчики квика со временем отказались от функции показа "хинта" при наведении на тень свечи, скорей всего, банально заменив расчёт региона на расчёт прямоугольника свечи (ptInRgn на ptInRect), а также, при показе всего графика - они не показывают все свечки и, соответственно, не рассчитывают по ним регионы, а делают из, скажем 2-х, 4-х свечей - одну полоску (представленную в памяти, как один логический объект) - это если не все свечи физически могут поместиться на графике (к тому же известно, что минимальная ширина свечи равна 1 пиксель). Можно, конечно и дальше продолжать упорствовать и вдаваться в пространственные обсуждения, что вот мол, де, для того и придумали полосы прокрутки (scrollbox) - но с точки зрения windows и программиста - это ничего не меняет, т.к. отображая даже часть общего количества свечей - надо, как говорится, со сроком "вчера" - уже думать над кешированием новых объектов, а как уже говорилось, время работы оконной процедуры и ресурсы ОС должны быть сведены к минимуму. Отдав/выделив это дело в отдельный поток - графики перестанут быть адекватными (строго говоря, они итак невсегда адекватны), а с ними и стиль торговли, жёстко привязанный к показаниям графиков перестанет отражать реальную рыночную ситуацию. т.к. windows - это не система жёского реально времени и время выделяемое под каждый тред нигде не фиксировано (по документации максимальное время гарантированного переключения между тредами может доходить до 5 сек, а вреальности и того больше) (говорю максимально усечённо, т.к. тут не форум по программированию, а я в свою очередь, не программист)
таким образом, чтобы не терять в потери производительности - они остановились на этом варианте.
sam063rus пишет: таким образом, чтобы не терять в потери производительности - они остановились на этом варианте
По умолчанию можно оставить ту же самую настройку, что и сейчас - не более 3000 свечей. А если кому-то надо больше (невзирая на потерю памяти и производительности) - то это будет его выбор. Главное, чтобы возможность выбора была.
Цитата
sam063rus пишет: по документации максимальное время гарантированного переключения между тредами может доходить до 5 сек, а вреальности и того больше
Это значит, что если у нас работает скрипт на QLua, в котором используются коллбэки для фиксации каких-то событий (типа изменения ТТП, приход сделки и т.п.), а затем на эти события каким-то образом должен отреагировать алгоритм, описанный в функции main() (которая работает в отдельном потоке), то фактически такая реакция может отставать на несколько секунд?
Дмитрий пишет: то фактически такая реакция может отставать на несколько секунд?
это справедливо на случай форс-мажора, т.е. при зависании одного из тредов. поэтому и называется гарантированное переключение. но, как показывает практика, никем это и нигде не гарантируется, так что в реальности и цифра 5 тут тоже условна.
sam063rus пишет: это справедливо на случай форс-мажора, т.е. при зависании одного из тредов
Значит, если сам терминал не зависнет (то есть его основной поток), то main() в описанном примере всегда сможет уже через доли секунды отреагировать на события, зафиксированные коллбэками (к примеру, не более чем через 100 мс)?
sam063rus пишет: точные замеры тут не имеют смысла
Отсюда надо сделать вывод, что если важна быстрая реакция на события, по которым происходят срабатывания коллбэков, то полную обработку такого события нужно делать только внутри самого коллбэка, не доверяя это функции main() ?
Серж пишет: Уберите, наконец, это ограничение на отображение максимум 3000 свечей. Неудобно анализировать историю на младших таймфреймах. При этом чтобы не грузить терминал пользователь может задать в настройках "Отображать последние x свечей", что уже реализовано.
Здравствуйте!
Ваше пожелание зарегистрировано, будет рассмотрено и, возможно, реализовано в одной из следующих версий нашего ПО.
Серж пишет: Уберите, наконец, это ограничение на отображение максимум 3000 свечей. Неудобно анализировать историю на младших таймфреймах. При этом чтобы не грузить терминал пользователь может задать в настройках "Отображать последние x свечей", что уже реализовано.
Добрый день,
Мы рассмотрели Ваше пожелание. По итогам его анализа сообщаем Вам, что реализация пожелания признана потенциально целесообразной. Если по результатам дальнейшего анализа, включающего юридические аспекты, анализ на непротиворечивость с общей политикой компании, никаких возражений не возникнет, мы постараемся включить Ваше пожелание в план доработок при выпуске одной из следующих версий нашего ПО.
Stanislav Tvorogov пишет: По итогам его анализа сообщаем Вам, что реализация пожелания признана потенциально целесообразной.
ну-ну. Лишний раз подтвердили то, что половина надо увольнять:)))
вопрос на засыпку: а почему всего 3000свечей? Даёшь 100500 на один график:))) полагаю, - те кто умные - давно уже всё поняли...)))
господа, ваш квик будет просто "валяться" прежде чем прожуёт столько свечей. Уже сейчас из-за этого, при открытии свыше 36 графиков начинается непредсказуемая работа - он просто падает, и не всегда с дампом. При этом, не забываем, что все ваши свечки, чудо-порисульки графики - всё работает в главном потоке квика. Это всё равно, что сделать из квика не терминал, который позволяет быстро реагировать/обрабатывать транзакции, а какой-то музей - с картинами-графиками. -> можно посмотреть но, нельзя касаться.
у вас нет никакого чувства видения перспективы ваших таких "поделок". Вы сами угробите квик. ---------------------------------------- в общем, вы не перестаёте меня разочаровывать...
Разумному человеку не придёт в голову запускать на компьютере одновременно сотню приложений, если на компьютере всего 1Гб памяти. Есть большая вероятность, что Windows, если не "упадёт", то, как минимум, "зависнет". Так и с QUIK. Вам дают инструмент, а как его использовать - решаете вы сами. Вы можете наоткрывать кучу таблиц/графиков, но если вы переоцените возможности своего компьютера, то результат будет соответствующий.
Надо делать так, как надо. А как не надо - делать не надо.
дело не только и не столько в ресурсах компбютера, а впределах операционной системы - увлечение контролами - даром не проходит. Свеча, конечно, хоть и не контрол - но и не обычная картинка, а вполне себе самостоятельный объект. И на то, чтоб она была на графике затрачиваются ресурсы и время выделения памяти.
Более жизненный пример - покажите мне современную игру - в которой одновременно 3000 "мобов" на уровне. (не спорю, хоть и "притянуто за уши" - но смысл ясен)
поверьте, в современных новомодных операционных системах - не одна сотня процессов/сервисов работает в системе - так что, от этого пока ещё никто не ушёл. А так, - конечно, всегда проще предложить купить более мощный компьютер, зная, что клиенту будет просто некуда деваться.
Ничто не мешает пользователю ограничить в настройках число отображаемых на графике свечей. И тогда терминал будет работать не хуже, чем сейчас. Вы сами можете выбирать, что вам важней - количество свечей или скорость работы.
sam063rus пишет: покажите мне современную игру - в которой одновременно 3000 "мобов" на уровне.
Под "мобом" вы подразумеваете самостоятельный объект, обладающий "интелектом" и состоящий из десятков а то и сотен полигонов? Какое это отношение имеет к статическому объекту типа "свеча"?
Надо делать так, как надо. А как не надо - делать не надо.
а кто сказал, что он статический??? объект - свеча: имеет координаты может менять положение может менять размеры может реагировать на движение курсора (показ хинта) может реагировать на клик мышки (ну типа вывод меню или отправка транзакции) и т. д.
sam063rus пишет: поверьте, в современных новомодных операционных системах - не одна сотня процессов/сервисов работает в системе - так что, от этого пока ещё никто не ушёл.
Не надо троллить - вы поняли о чём я. Большинство работающих в фоне процессов/сервисов отъедают менее 10Мб ОЗУ и 0% ЦП.
Цитата
sam063rus пишет: и не забываем, что положение всех свечек на графике пересчитываются при каждом приходе сделки на график, при масштабировании.
Ну, да, тут вы правы. Но это ничто по сравнению с полигональными моделями в 3D играх, ведь так? У меня к примеру графики обновляются не чаще 1 раза/сек. К тому же, возможно я ошибаюсь, но полагаю, что на неактивных вкладках или свёрнутых окнах обновления графиков не происходит.
Надо делать так, как надо. А как не надо - делать не надо.
насчёт сколько умещается свечей в окне - уже написал выше - минимальное число отображаемых свечек (без масштабирования по абсциссе[по времени]) - равно количеству пикселей, укладывающемуся в ширину отображаемой зоны по определению.
не чаще 1р/с происходит в данном случае получение сделки из твс, а оконные сообщения и возможный запрос на полную перерисовку - отправляется на каждый WM_PAINT
Цитата
Старатель пишет: полагаю, что на неактивных вкладках или свёрнутых окнах обновления графиков не происходит.
происходит - только не отображается - иначе бы при переходе на вкладку - там была бы не актуальная информация в первоначальный момент, и к тому же - есть роботы, индикаторы - они привязаны к графикам - им абсолютно параллельно активна или свёрнута вкладка - им торговать надо.
я, конечно, бесспорно, могу во многом ошибаться - и с радостью выслушал бы интервью "от создателей":)) но... они почему-то всегда ускользают от подобных тем... :)))
sam063rus пишет: не чаще 1р/с происходит в данном случае получение сделки из твс, а оконные сообщения и возможный запрос на полную перерисовку - отправляется на каждый WM_PAINT
Не путайте ТВС с графиками. Повторяю: У меня цена последней сделки на графике обновляется не чаще 1 раза/сек.
Цитата
sam063rus пишет: происходит - только не отображается - иначе бы при переходе на вкладку - там была бы не актуальная информация в первоначальный момент, и к тому же - есть роботы, индикаторы - они привязаны к графикам -им абсолютно параллельно активна или свёрнута вкладка - им торговать надо.
Мы ведь сейчас говорим о визуальном обновлении графиков, так? Так вот, роботам без разницы, как расположены свечки на том или ином графике. Данные они берут не с самих "картинок".
Надо делать так, как надо. А как не надо - делать не надо.