Давайте подумаем вместе. Вот настроен список классов для получения обезличенных сделок. В терминале крутятся скрипты, работающие со сделками. И тут "нерадивому" пользователю вдруг вздумалось зачем-то открыть ТОС и вывести в неё только один инструмент из класса. И бац, терминал перестаёт получать сделки по всем остальным инструментам из этого класса. Как следствие, некорректно работают скрипты. Вы считаете нормальная логика? И как вы предлагаете работать? Опять лезть в настройки, выставлять фильтры, перекачивать данные, перезапускать скрипты?
Надо делать так, как надо. А как не надо - делать не надо.
Предвосхищая вопросы: одна ТОС должна быть открыта всегда, если необходимо работать со сделками из скриптов. В неё может быть добавлен один любой инструмент, не важно какой, главное, чтобы была открыта сама таблица. При открытии/закрытии других таблиц ТОС происходит #3
Надо делать так, как надо. А как не надо - делать не надо.
Egor Zaytsev, вы внимательно прочитали, что я написал? Не увидел ответа на свой вопрос. Вот есть у нас настройки для заказа обезличенных сделок: Создаём новую таблицу обезличенных сделок, в которую хотим получать только один инструмент. Пусть это будет Si-9.19 в классе FORTS. Конкретно, в эту таблицу один инструмент. В сам терминал же, по прежнему, сделки должны поступать по всем инструментам выбранных классов согласно первоначальным настройкам. После создания таблицы настройки для заказа обезличенных сделок сбрасываются, включается фильтр в классе FORST
Надо делать так, как надо. А как не надо - делать не надо.
Старатель написал: При перезаказе данных в течение торговой сессии по обезличенным сделкам
Ключевые слова здесь "в течение". Если вы тестируете на демо, да ещё когда торги не активны, то, очевидно, что не воспроизводится. Запустите на боевом QUIK в момент высокой активности торгов, чтобы сделки поступали в терминал непрерывно. Что касается других площадок, я не проверял.
Надо делать так, как надо. А как не надо - делать не надо.
Старая проблема. Настроен список инструментов для получения информации по обезличенным сделкам. К примеру, получаем сделки по классу FORTS, фильтр инструментов не включен. Открываем новую таблицу ТВС и указываем только один инструмент из класса FORTS для вывода в эту таблицу. В результате настройки сбрасываются, сделки по остальным инструментам прекращают поступать.
Надо исправить: при открытии новой таблицы список инструментов не должен изменяться в сторону уменьшения.
Надо делать так, как надо. А как не надо - делать не надо.
Хочу вернуться к данной теме. При перезаказе данных в течение торговой сессии по обезличенным сделкам (кнопка "Получить заново данные по обезличенным сделкам", настройка "Получать информацию по всем обезличенным сделкам с текущего момента" отключена) нарушается порядок следования сделок в хранилище.
В таблице параметр index - это индекс строки, получаемой функцией
Перезаказ был осуществлен примерно в 12:04. Как видно, первые несколько строк идут с этим временем, далее хронология начинается с начала веченей сессии. На мой взгляд, это косяк, надо исправить. А то приходится закрывать QUIK и вручную удалять файл alltrade.dat, чтобы восстановить порядок следования сделок.
Надо делать так, как надо. А как не надо - делать не надо.
Графики - это всегда история. Свечи - это всего лишь метод сжатия и отображения этой истории. У кого-то получается торговать лучше, если close - это цена последней сделки на бирже по часам биржи. У вас, если close - цена последней сделки, полученной вашим компьютером, в интервале, отсчитываемом по часам вашего же компьютера. Какой метод использовать - дело вкуса.
Надо делать так, как надо. А как не надо - делать не надо.
Николай Камынин написал: синхронизируйте время компа по атомным часам.свеча закрывается всегда точно по указанному кванту времени и выдается "задним числом"т е цена закрытия свечи (close) это цена последней сделки время которой не больше времени закрытия свечи.т е как пропикало закрыть свечу - лови подарок от сервера.можешь не ждать а вычислить сам - можешь даже обогнать.
Что даст вам такой фокус, если в начале нового интервала на вашем "синхронизированном" компе сервер пришлёт данные, относящиеся к предыдущему интервалу времени? Априори нельзя точно сказать, когда закрылась свеча, пока не откроется новая. Причём данные разных потоков не синхронизированы. Т.е., если терминал, например, получил обезличенную сделку с нового интервала, это ещё не значит, что на графике свеча закрылась. Более того, в QUIK обезличенные сделки с одной торговой площадки могут обогнать сделки с другой площадки. Не проверял, но подозреваю, что на графиках та же история. Поскольку данные графиков формируются на стороне сервера по обезличенным сделкам, то теоретически возможен вариант, когда на одном графике (одной торговой площадки) ещё продолжает формироваться старая свеча, а на другом графике (другой торговой площадки) - уже открылась новая свеча.
Надо делать так, как надо. А как не надо - делать не надо.
kroki написал: Вообще производительность Lua при заданных макросах lua_lock() / lua_unlock() просто ужасная, почти на каждом шагу освобождение и захват блокировки.
kroki написал: Поэтому у себя обернул все критические callbacks в table.ssort() , чтобы не было постоянной борьбы за блокировку с main().
Цитата
kroki написал: Но можно использовать для создания "критических секций", то есть вызова произвольних функций при удерживаемой блокировке:
Код
table.ssort ({ 0 , 0 }, function ()
-- код здесь выполняется под блокировкой
return true
end )
Интересная идея. Возьму на вооружение. Код, действительно, внутри ssort выполняется быстрее. Но все же в два раза дольше, чем в чистом Lua.
Цитата
kroki написал: хотя "потоки" - это настояшие потоки операционной системы, в каждый момент времени интерпретатор Lua работает только в одном потоке, параллельной работы интерпретаторов нет.
Старатель написал: Вопрос разработчикам: верно ли, что в QUIK, как таковой, многопоточности нет?
В QUIK есть многопоточность
Цитата
Старатель написал: Да, есть два потока: основной и main. Но в каждый момент времени работают команды только из одного потока. Просто происходит переключение между потоками на уровне ОС.
так обрабатывается ситуация при одновременном доступе к одному ресурсу
Надо делать так, как надо. А как не надо - делать не надо.
Кнопки не согласуются с кнопками в других окнах - слишком длинные, занимают лишнее место.
Кнопка "Закрыть" вообще не нужна, опять же занимает широкую полосу внизу окна - есть крестик в правом углу для закрытия.
Поле "Ошибки выполнения скрипта" можно сделать раскрывающимся, как, например, дополнительное поле в окне ввода заявок. С какой-нибудь индикацией, что скрипт завершился с ошибкой и в доп. поле есть что почитать ))
В поле "Ошибки выполнения скрипта" выводить весь traceback по ошибке, как это делает Lua. Возможно?
Надо делать так, как надо. А как не надо - делать не надо.
До сих пор нет надёжного решения обсуждаемой проблемы. Предлагаю добавить событие QTABLE_CLOSETERMINAL для функции SetTableNotificationCallback, срабатывающее при закрытии таблицы в результате закрытия терминала. Тогда можно будет не останавливать скрипты при закрытии терминала, если они должны автоматом стартовать. OnClose не всегда спасает, т.к. между колбэком на закрытие таблицы и событием OnClose может пройти много времени.
Надо делать так, как надо. А как не надо - делать не надо.
info.exe 7.14.1.7 StratVolat.dll 2.1.61.1 Неверно отображается прибыль при цене БА, равной страйку, на момент экспирации. И как не меняй масштаб, добиться шага цены 100, чтобы страйк попал на одно из делений на шкале, невозможно.
Надо делать так, как надо. А как не надо - делать не надо.
Кроме того, есть ещё сбор за ошибочные транзакции. Это когда транзакция отклоняется по тем или иным причинам. Например, не хватило средств для новой заявки или была попытка снять/переставить заявку после её исполнения.
Выше правильно написали: вам нужно считать не количество заявок, а количество транзакций: поставил заявку - одна транзакция, снял - другая транзакция, move - ещё одна транзакция. Из http://www.moex.com/a3825 не понятно, учитывает ли методология расчёта ошибочные транзакции в общем количестве неэффективных транзакций.
Надо делать так, как надо. А как не надо - делать не надо.
font написал: Как в этом случае проверять достоверность накопленных данных при сбоях?
font, вы не поверите, но брокер также не может проверить достоверность данных. И случается, что при сбоях брокер транслирует некорректные данные, пока не укажешь ему на это.
Надо делать так, как надо. А как не надо - делать не надо.
Zoya Skvorcova, не работает (вернее иногда не работает) именно автоподключение после рестарта сервера. Вручную подключается без проблем. Проблема не в конкретном брокере: она наблюдается как на бою, так и на демо. И судя по всему не только у меня. Наблюдается с ещё "лохматой" 6-й версии.
Цитата
Zoya Skvorcova написал: Нужно смотреть что со стороны сервера происходит. Без логов Вашего брокера не разобраться.
Гы смешно. Раннее мне ваш коллега писал:
Цитата
К сожалению в логах сервера нет никакой информации, которая помогла бы разобраться в проблеме, т.к отключение происходит на клиентском месте.
Надо делать так, как надо. А как не надо - делать не надо.
В 7.12 в файл справки QLUA.chm запихали не относящиеся к QLUA файлы, из-за чего он сильно распух и при поиске по словам выдаёт кучу ненужной информации.
Надо делать так, как надо. А как не надо - делать не надо.
Тут в 9:06 сервер не был обнаружен, а позже QUIK тупо "завис" на этапе "Идёт подключение к серверу". Т.е., терминал работает, но сам подключаться не хочет.
Цитата
babylon73 написал: Если вручную разорвать соединение и переподключиться, то терминал вдруг начинает работать
+
Надо делать так, как надо. А как не надо - делать не надо.
1. Каким образом происходит обновление графиков при смене (идентификатора) сессии? Путём дозаписи в конец? 2. Если у брокера произошёл сбой, и часть графика за какой-то период не отображается, а затем он положил на сервер корректные данные, как получить корректный график, не потеряв при этом накопленную историю свыше 3000 свечей, которой нет на сервере?
Надо делать так, как надо. А как не надо - делать не надо.
Andrei2016 написал: 2) Сервер QUIK сразу же отправляет запись, пришедшую с биржи, пользователю в соответствии с имеющимся в биржевой записи параметром client_code - по ВСЕМ кодам uid рабочих мест клиента, зарегистрированных у данного брокера. Для обычных - не корпоративных - пользователей такой uid обычно один, в связи с тем, что немногие пользователи - физические лица работают сразу с двумя и более рабочими местами. Но для корпоративных клиентов брокера наличие нескольких рабочих мест и, соответственно, нескольких uid - дело обычное.
Здравствуйте, по первому пункту верно. По второму есть уточнения. Если у пользователя два разных UID, то он получит ответ только на одном UID.
OnOrder и OnTrade будут отправлены всем пользователям, у которых есть права на просмотр заявок / сделок для данного кода клиента.
Скрытый текст
Т.е., не только пользователь с конкретным UID. Это может быть брокер, ваш персональный менеджер или другой сотрудник брокерской компании.
Надо делать так, как надо. А как не надо - делать не надо.
Подтверждаю проблема есть. От разрешения экрана это не зависит. Egor Zaytsev, как вы проверяете? Вот таблица после создания, заголовок убран, высота и ширина окна уменьшены до размеров таблицы (обратите внимание!).
Эта же таблица после перезапуска QUIK:
Надо делать так, как надо. А как не надо - делать не надо.
s_mike@rambler.ru написал: проверка длины таблицы на каждой обезличенной сделке не бомбит терминал?
А у вас бомбит? Проверка длины таблицы - менее 1 мкс, данный код никак не сказывается на загрузке процессом info.exe
Цитата
swerg написал: "Передавать в function OnAllTrade(alltrade) признак 'перезаказано заново' " (т.е. в тот вызов OnAllTrade, который случился первым после нажатия кнопки "перезаказать" - должен передаться признак "всё поехало заново")
В такой реализации нет никакого смысла: вы будете также проверять флаг при каждом вызове OnAllTrade.
Надо делать так, как надо. А как не надо - делать не надо.
Алексей написал: 1. Будет ли нагружать систему многократный вызов CreateDataSource (каждый для своего экземпляра класса, обсчитывающего конкретный индикатор) в плане расхода памяти, или же QUIK кеширует идентичные запросы CreateDataSource, возвращая каждый раз ссылку на одну и ту же таблицу свечек?
Цитата
Sergey Gorokhov написал: Идентичные вызовы CreateDataSource не должны приводить к нагрузкам или увеличению трафика
Увы, но это не так: Под каждый вызов CreateDataSource (пусть даже для идентичных бумаги/таймфрейма/параметра) выделяется свой объём памяти.
Надо делать так, как надо. А как не надо - делать не надо.
Egor Zaytsev написал: Мы уже зарегистрировали такое пожелание от пользователя A.T.
Код
Если стоит галка "Рыночная" и галка "Исходя из собственных" , то поле
ввода цены должно становится Disabled (серое, неактивное), и поэтому
вписать в спешке туда цену физически невозможно (чего не сделано на
данный момент ! ) и при этом, если в объемах вписано число большее, чем
это рассчитано "исходя из собственных" , то выставляется рыночная цена и с
объемом не более рассчитанного, а НЕ того, что вписано, даже если плечо
позволяет.
Egor Zaytsev, Здесь какая-то "каша"... Какое отношение галка "Исходя из собственных" имеет к рыночной цене не понятно. И что вы там зарегистрировали остаётся только догадываться. Работа параметра "Исходя из собственных средств" должна быть единой: либо как сейчас, либо, действительно, уменьшать объём, чтобы закупать только на свои. А рыночная цена тут не при чём.
Надо делать так, как надо. А как не надо - делать не надо.
Время изменения стакана получаемого через OnQuotes, OnQuotes - есть ли возможность параллельно с чтением стакана, получить точное время торгового сервера, когда он возник/изменился
PFelix написал: сделки прошли позже, если соответствующие калбеки OnAllTrade пришли позже очередного OnQuotes
Всё просто: подключитесь в середине торговой сессии к терминалу и понаблюдайте за ТОС (при выключенной галке "Получать информацию по обезличенным сделкам с текущего момента") и стаканом. Думаю, вы сами всё поймёте.
Надо делать так, как надо. А как не надо - делать не надо.
Да потому что, редактирование таблицы не должно сбрасывать инструменты для заказа обезличенных сделок, раннее выбранные через настройку "Поток обезличенных сделок…" Как ещё объяснить-то? Я указал список инструментов, по которым желаю получать обезличенные сделки, в т.ч. в скриптах. Потом открываю ТОС, указываю там один инструмент для визуального наблюдения... И бац, настройка сбрасывается, и в терминал прекращают поступать раннее заказанные инструменты.
Надо делать так, как надо. А как не надо - делать не надо.
Sergey Gorokhov написал: Лучше, сделать отдельную функцию, специально для настройки.
Цитата
Sergey Gorokhov написал: На галку "Исходя только из собственных средств", разве не о ней идет речь?
Вы предлагаете, если требуется в скрипте посчитать max лотов без плеча, то включить галку через скрипт. Потом если надо будет посчитать с плечом, то выключить галку, которая в свою очередь, влияет на ручную торговлю. Вы считаете это логичным?
Надо делать так, как надо. А как не надо - делать не надо.
Функция CalcBuySell() возвращает значение в зависимости от установленной настройки "Исходя только из собственных средств", т.е. ведёт себя непредсказуемо. Предлагаю добавить в функцию опциональный параметр, аналогичный этой настройке.
Надо делать так, как надо. А как не надо - делать не надо.
swerg написал: А "Исходя из собственных средств" - это про другое. Если вы указали объём - то он и будет использован. Не указывайте объем, просто нажмите на кнопку, где посчитан максимум лотов - и вот тогда параметры заявки будут такие, что рассчитаются "исходя из собственных средств" (если галка такая стоит).
То, как настройка работает сейчас - нормально. Менять не нужно.
Надо делать так, как надо. А как не надо - делать не надо.