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

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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 28 След.
перехват ошибки
 
Ошибки в колбеках (не только OnCalculate) не останавливают работу скриптов, так и было задумано?
Не завершается main после остановки скрипта
 
Цитата
Nikolay Pavlov написал:
скрипт висел 5 секунд на строчке SetCell(t_id, 1, 1, tostring(r ))
Так и должно быть?
QUIK 7.25.1.3. Условное форматирование таблиц., Желательно, для ячеек выставить по умолчанию "Нет цвета"
 
Я думал "Нет цвета" означает не перекрашивать в белый (или любой другой) цвет.
Это не так? Что же тогда?
QUIK 7.25.1.3. Условное форматирование таблиц., Желательно, для ячеек выставить по умолчанию "Нет цвета"
 
Если условное форматирование применено ко всей строке, то настройка "Нет цвета" не работает.
Не завершается main после остановки скрипта
 
Nikolay Pavlov, если вы тестируете на Pentium 100, то, возможно, так и есть.
На современных компьютерах время работы функции f() менее 65 мс
Не завершается main после остановки скрипта
 
Под "не завершается должным образом" имеется ввиду невыполнение последнего оператора message('Exit') после нажатия кнопки "Остановить"
Где посмотреть описание на флаг в транзакции?
 
?
depo_limit.currentbal в лотах на демо
 
Цитата
Zoya Skvorcova написал:
Мы рассмотрели Ваше пожелание. По итогам его анализа сообщаем Вам,     что реализация пожелания признана потенциально целесообразной. Если     по результатам дальнейшего анализа, включающего юридические аспекты,     анализ на непротиворечивость с общей политикой компании, никаких     возражений не возникнет, мы постараемся включить Ваше пожелание в     план доработок при выпуске одной из следующих версий нашего ПО.
Цитата
Stanislav Tvorogov написал:
Данная настройка выполняется со стороны сервера QUIK. Получить ее значение из рабочего места QUIK через QLUA на данный момент, к сожалению, нельзя. При реализации ранее зарегистрированного пожелания ответ будет предоставлен в данной ветке форума.
Здравствуйте.
Удалось что-нибудь сделать?
Не завершается main после остановки скрипта
 
Код
local run = true

local function f()
  for i = 1, 2000000 do
    local a = 1 + 2 * 3 / 4
  end
  return run
end

function main()
  local t_id = AllocTable()
  AddColumn(t_id, 1, "", true, QTABLE_DOUBLE_TYPE, 20)
  CreateWindow(t_id)
  InsertRow(t_id, -1)
  while run do
    local r = f()
    SetCell(t_id, 1, 1, tostring(r))
    sleep(1)
  end
  message('Exit')
end

function OnStop()
  run = nil
  message('OnStop')
  return 5000
end
Почему после остановки скрипта main не завершается (чаще всего) должным образом?
Критерий исполнения заявки OnTrade
 
Цитата
Sergey Gorokhov написал:
Еще есть параметр ext_order_status, в котором значение 2 соответствует частичному исполнению.
В QUIK 8 параметр ext_order_status всегда равен 0. Это нормально?

Возможна ли ситуация, когда при снятии частично исполненной заявки параметр flag обновится раньше balance?
Где посмотреть описание на флаг в транзакции?
 
Цитата
Sergey Gorokhov написал:
«2097152» – на ввод заявки
Что такое "на ввод заявки"? Имеется ввиду ACTION "NEW_ORDER" или что-то другое?
Для ACTION "KILL_ORDER" или "MOVE_ORDERS" флаг должен отличаться?
InsertRow
 
Код
InsertRow(1, 1)
InsertRow
 
В документации написано:
Цитата
Функция возвращает номер добавленной строки при успешном выполнении, иначе – «-1».
По факту в случае ошибки возвращается 0
Перенос лимитной заявки, Перенос лимитной заявки на фондовой секции!?
 
Цитата
Виктор Волков написал:
запоминать эти заявки и выставлять заново
Такой функционал можно реализовать через Lua-скрипт
setmetatable
 
Код
t = setmetatable({vol = 0,
  ins ert = function(self, pos, value)
    if not value then
      pos, value = #self + 1, pos
    end
    self.vol = self.vol + value
    table.ins ert(self, pos, value)
  end,
  remove = function(self, pos)
    self.vol = self.vol - self[pos]
    table.remove(self, pos)
  end
}, {__newindex = function(self, key, value)
    self.vol = self.vol + val ue
    rawset(self, key, val ue)
  end})
Вроде, работает:
Код
t[1] = 3
t:insert(2, 2)
t:insert(3, 5)
t:remove(2)
setmetatable
 
Цитата
s_mike@rambler.ru написал:
пересчитывать итоги каждый раз при попытке извлечь значение по ключ vol
Думаю, будет накладно в общем случае, т.к. надо будет при каждом обращении к vol пробегать по всем элементам таблицы. Хотелось бы более элегантного решения.
setmetatable
 
При добавлении в таблицу сделал:
Код
t = setmetatable({vol = 0}, {__newindex = function(self, key, value)
  self.vol = self.vol + value
end})
t[1] = 3
t[2] = 2
t[3] = 5
print(t.vol)  --> 10
Но не нашёл метаметода при удалении элемента.
setmetatable
 
Код
local t = {vol = 0}
table.insert(t, 1, 3)  -->  t.vol = 3
table.insert(t, 2, 2)  -->  t.vol = 5
table.insert(t, 3, 5)  -->  t.vol = 10
table.remove(t, 2)     -->  t.vol = 8

Можно сделать через метатаблицу, чтобы при добавлении/удалении элемента в таблице в vol автоматически изменялась сумма всех индексных элементов?
Обезличенные сделки, Слетают настройки списков инструментов для заказа обезличенных сделок
 
Давайте подумаем вместе.
Вот настроен список классов для получения обезличенных сделок. В терминале крутятся скрипты, работающие со сделками.
И тут "нерадивому" пользователю вдруг вздумалось зачем-то открыть ТОС и вывести в неё только один инструмент из класса. И бац, терминал перестаёт получать сделки по всем остальным инструментам из этого класса. Как следствие, некорректно работают скрипты.
Вы считаете нормальная логика? И как вы предлагаете работать? Опять лезть в настройки, выставлять фильтры, перекачивать данные, перезапускать скрипты?
Обезличенные сделки, Слетают настройки списков инструментов для заказа обезличенных сделок
 
Предвосхищая вопросы: одна ТОС должна быть открыта всегда, если необходимо работать со сделками из скриптов. В неё может быть добавлен один любой инструмент, не важно какой, главное, чтобы была открыта сама таблица.
При открытии/закрытии других таблиц ТОС происходит #3
Обезличенные сделки, Слетают настройки списков инструментов для заказа обезличенных сделок
 
Обезличенные сделки, Слетают настройки списков инструментов для заказа обезличенных сделок
 
Egor Zaytsev, вы внимательно прочитали, что я написал? Не увидел ответа на свой вопрос.
Вот есть у нас настройки для заказа обезличенных сделок:

Создаём новую таблицу обезличенных сделок, в которую хотим получать только один инструмент. Пусть это будет Si-9.19 в классе FORTS.

Конкретно, в эту таблицу один инструмент. В сам терминал же, по прежнему, сделки должны поступать по всем инструментам выбранных классов согласно первоначальным настройкам.
После создания таблицы настройки для заказа обезличенных сделок сбрасываются, включается фильтр в классе FORST
Таблица всех сделок
 
Egor Zaytsev,
Цитата
Старатель написал:
При перезаказе данных в течение торговой сессии по обезличенным сделкам
Ключевые слова здесь "в течение". Если вы тестируете на демо, да ещё когда торги не активны, то, очевидно, что не воспроизводится. Запустите на боевом QUIK в момент высокой активности торгов, чтобы сделки поступали в терминал непрерывно.
Что касается других площадок, я не проверял.
Обезличенные сделки, Слетают настройки списков инструментов для заказа обезличенных сделок
 
Старая проблема.
Настроен список инструментов для получения информации по обезличенным сделкам.
К примеру, получаем сделки по классу FORTS, фильтр инструментов не включен.
Открываем новую таблицу ТВС и указываем только один инструмент из класса FORTS для вывода в эту таблицу. В результате настройки сбрасываются, сделки по остальным инструментам прекращают поступать.

Надо исправить: при открытии новой таблицы список инструментов не должен изменяться в сторону уменьшения.
Таблица всех сделок
 
Хочу вернуться к данной теме.
При перезаказе данных в течение торговой сессии по обезличенным сделкам (кнопка "Получить заново данные по обезличенным сделкам", настройка "Получать информацию по всем обезличенным сделкам с текущего момента" отключена) нарушается порядок следования сделок в хранилище.


В таблице параметр index - это индекс строки, получаемой функцией
Код
SearchItems('all_trades', 0, getNumberOf('all_trades')-1, function(class_code,sec_code) return sec_code == 'SiU9' and class_code == 'SPBFUT' end, 'class_code,sec_code')

Перезаказ был осуществлен примерно в 12:04. Как видно, первые несколько строк идут с этим временем, далее хронология начинается с начала веченей сессии.
На мой взгляд, это косяк, надо исправить.
А то приходится закрывать QUIK и вручную удалять файл alltrade.dat, чтобы восстановить порядок следования сделок.
Данные из стакана котировок
 
Сначала заявка на бирже проверяется на возможность исполнения, лишь затем не исполненные заявки попадают в очередь - т.н. стакан торгов.
Поделитесь, кто как отслеживает факт "готовности свечи"?
 
Николай Камынин,
offtopic
Показывать последнее значение, точность отображения
 
Некоторых? Ой ли?
Что будем делать?
Показывать последнее значение, точность отображения
 
Для примера взял один из стандартных, какой именно - не помню, не суть
Показывать последнее значение, точность отображения
 
Любой индикатор
Поделитесь, кто как отслеживает факт "готовности свечи"?
 
Цитата
Николай Камынин написал:
синхронизируйте время компа по атомным часам.свеча закрывается всегда точно по указанному кванту времени и выдается "задним числом"т е цена закрытия свечи (close) это цена последней сделки время которой не больше времени закрытия свечи.т е как пропикало закрыть свечу - лови подарок от сервера.можешь не ждать а вычислить сам - можешь даже обогнать.

Что даст вам такой фокус, если в начале нового интервала на вашем "синхронизированном" компе сервер пришлёт данные, относящиеся к предыдущему интервалу времени?
Априори нельзя точно сказать, когда закрылась свеча, пока не откроется новая.
Причём данные разных потоков не синхронизированы. Т.е., если терминал, например, получил обезличенную сделку с нового интервала, это ещё не значит, что на графике свеча закрылась. Более того, в QUIK обезличенные сделки с одной торговой площадки могут обогнать сделки с другой площадки.
Не проверял, но подозреваю, что на графиках та же история. Поскольку данные графиков формируются на стороне сервера по обезличенным сделкам, то теоретически возможен вариант, когда на одном графике (одной торговой площадки) ещё продолжает формироваться старая свеча, а на другом графике (другой торговой площадки) - уже открылась новая свеча.
Потоковая безопасность в QLua - документация и реальность
 
Интересно, что в обработчике OnInit или BODY код, помещенный в ssort, также работает быстрее, хотя main на этом этапе ещё не включается в работу.
Интерактивная работа с QLua
 
QUIK 7.23.1.4
Скрипт-то запускается, но сразу же останавливается.
cwrite ничего не кажет.
Выходит по условию
Код
if stop or c == nil or string_match(c, "^%s*quit%s*$") then
Потоковая безопасность в QLua - документация и реальность
 
Цитата
kroki написал:
Вообще производительность Lua при заданных макросах  lua_lock() / lua_unlock()  просто ужасная, почти на каждом шагу освобождение и захват блокировки.
Здесь я обращал на это внимание.

Цитата
kroki написал:
Поэтому у себя обернул все критические callbacks в  table.ssort() , чтобы не было постоянной борьбы за блокировку с  main().
Цитата
kroki написал:
Но можно использовать для создания "критических секций", то есть вызова произвольних функций при удерживаемой блокировке:
Код
   table.ssort ({  0 ,  0  },  function ()
    -- код здесь выполняется под блокировкой 
    return   true 
 end )
Интересная идея. Возьму на вооружение.
Код, действительно, внутри ssort выполняется быстрее. Но все же в два раза дольше, чем в чистом Lua.

Цитата
kroki написал:
хотя "потоки" - это настояшие потоки операционной системы, в каждый момент времени интерпретатор Lua работает только в одном потоке, параллельной работы интерпретаторов нет.

У разработчиков на этот счет другое мнение:

Цитата
Sergey Gorokhov написал:
Цитата
Старатель написал:
Вопрос разработчикам: верно ли, что в QUIK, как таковой, многопоточности нет?
В QUIK есть многопоточность
Цитата
Старатель написал:
Да, есть два потока: основной и main. Но в каждый момент времени работают команды только из одного потока. Просто происходит переключение между потоками на уровне ОС.
так обрабатывается ситуация при одновременном доступе к одному ресурсу
Показывать последнее значение, точность отображения
 
Где настройка точности отображения последнего значения на графике?
Скрытый текст
Несчастное окно
 
Окно "Доступные скрипты":
  1. Не позволяет изменить размер - надо исправить
  2. Кнопки не согласуются с кнопками в других окнах - слишком длинные, занимают лишнее место.
  3. Кнопка "Закрыть" вообще не нужна, опять же занимает широкую полосу внизу окна - есть крестик в правом углу для закрытия.
  4. Поле "Ошибки выполнения скрипта" можно сделать раскрывающимся, как, например, дополнительное поле в окне ввода заявок. С какой-нибудь индикацией, что скрипт завершился с ошибкой и в доп. поле есть что почитать ))
  5. В поле "Ошибки выполнения скрипта" выводить весь traceback по ошибке, как это делает Lua. Возможно?
Запуск скриптов lua
 
До сих пор нет надёжного решения обсуждаемой проблемы.
Предлагаю добавить событие QTABLE_CLOSETERMINAL для функции SetTableNotificationCallback, срабатывающее при закрытии таблицы в результате закрытия терминала.
Тогда можно будет не останавливать скрипты при закрытии терминала, если они должны автоматом стартовать.
OnClose не всегда спасает, т.к. между колбэком на закрытие таблицы и событием OnClose может пройти много времени.
Модуль опционной аналитики, Кривой расчёт прибылей/убытков
 
info.exe 7.14.1.7
StratVolat.dll 2.1.61.1
Неверно отображается прибыль при цене БА, равной страйку, на момент экспирации.
И как не меняй масштаб, добиться шага цены 100, чтобы страйк попал на одно из делений на шкале, невозможно.
Сбор за транзакции
 
Кроме того, есть ещё сбор за ошибочные транзакции. Это когда транзакция отклоняется по тем или иным причинам. Например, не хватило средств для новой заявки или была попытка снять/переставить заявку после её исполнения.
Цитата
Let_it_go написал:
sbor=0.1*(orders*2-comiss*40)
Выше правильно написали: вам нужно считать не количество заявок, а количество транзакций: поставил заявку - одна транзакция, снял - другая транзакция, move - ещё одна транзакция.
Из http://www.moex.com/a3825 не понятно, учитывает ли методология расчёта ошибочные транзакции в общем количестве неэффективных транзакций.
65000 свечей
 
Цитата
font написал:
Как в этом случае проверять достоверность накопленных данных при сбоях?

font, вы не поверите, но брокер также не может проверить достоверность данных.
И случается, что при сбоях брокер транслирует некорректные данные, пока не укажешь ему на это.
Createdatasource error list
 
Цитата
s_mike@rambler.ru написал:
Я чего-то не понимаю?
Нет бумаги с таким кодом.
Различаются графики в QUIK и экспорт с Финама
 
Цитата
Русский написал:
Скорее всего, Финам даёт котировки по закрытию свечи
Финам даёт и так и так. Это у меня просто при экспорте галочка в браузере перескочила на "время окончания свечи".
Так что вопрос снимается.
Различаются графики в QUIK и экспорт с Финама
 
У кого-нибудь есть свежая история торгов непосредственно с биржи?
А то не совпадают данные из QUIK с экспортом с Финама
Скрытый текст

Как видно на скриншоте идёт смещение на одну минуту.
И такая беда по многим бумагам, которые проверил.
Оборот "Таблицы заявок", Есть ли автоматический подсчет?
 
Можно написать скрипт на Lua
QUIK не может установить соединение с сервером.
 
Добавлю: ночью комп находится в режиме сна.
QUIK не может установить соединение с сервером.
 
Zoya Skvorcova,
не работает (вернее иногда не работает) именно автоподключение после рестарта сервера. Вручную подключается без проблем.
Проблема не в конкретном брокере: она наблюдается как на бою, так и на демо. И судя по всему не только у меня.
Наблюдается с ещё "лохматой" 6-й версии.

Цитата
Zoya Skvorcova написал:
Нужно смотреть что со стороны сервера происходит.  Без логов Вашего брокера не разобраться.
Гы смешно. Раннее мне ваш коллега писал:
Цитата
К сожалению в логах сервера нет никакой информации, которая помогла бы разобраться в проблеме, т.к отключение происходит
на клиентском месте.
Последняя доступная версия QUIK
 
В 7.12 в файл справки QLUA.chm запихали не относящиеся к QLUA файлы, из-за чего он сильно распух и при поиске по словам выдаёт кучу ненужной информации.
История торгов
 
Цитата
swerg написал:
хотя, если просто заменять данными с сервера, а то, чего нет на сервере - просто не трогать...
Вот вот, по F5, например, перезаказать график с сервера, заменив/дописав при этом только те данные, что есть на сервере.
QUIK не может установить соединение с сервером.
 
Тут в 9:06 сервер не был обнаружен, а позже QUIK тупо "завис" на этапе "Идёт подключение к серверу". Т.е., терминал работает, но сам подключаться не хочет.

Цитата
babylon73 написал:
Если вручную разорвать соединение и переподключиться, то терминал вдруг начинает работать
+
QUIK не может установить соединение с сервером.
 
У меня одного если QUIK работает несколько дней, то иногда после перезагрузки сервера, клиент не может установить соединение с сервером?
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 28 След.
Наверх