Создать окно -> Все типы окно -> Прочее -> Карман транзакций
Как получить "шаг цены" и "Стоимость шага цены"
Пользователь
Сообщений: Регистрация: 27.01.2017
13.08.2021 08:45:11
Цитата
spy написал: Подниму старую тему, т.к. вопрос по ней: при выставлении заявки нужно ли вручную приводить цену к шагу цены? Допустим, шаг цены инструмента 0,01 - выставится ли лимитная заявка с некратной ценой вроде 75,1234? И если да, то в какую сторону будет округлена фактическая цена?
Необходимо привести цену к шагу. Если это не делать при подаче транзакции будет получена ошибка.
Добавление столбцов в пользовательской таблице
Пользователь
Сообщений: Регистрация: 27.01.2017
11.08.2021 12:31:56
Цитата
Владимир написал: , Нафига дамп? Нафига хранить всю информацию в самой таблице? Хранить сколько-нибудь важные данные в таблицах Квика могут разве что камикадзе - нужно хранить в таблицах Lua. А таблицы Квика только для визуализации данных для юзера и обработки событий от него же.
Люди разные. У Вас привычка навязывать мнение, но это не значит, что нельзя делать по-другому. Впрочем, я отметил, что хранить в самой таблице - это не лучший вариант.
Добавление столбцов в пользовательской таблице
Пользователь
Сообщений: Регистрация: 27.01.2017
11.08.2021 10:44:27
Цитата
Можно ли переформировать без потери данных в таблице? Или нужно перезаполнять и соответствующую таблицу тоже?
Сделайте дамп таблицы в структуру и перезаполните ее. Такой механизм обычно нужен всегда, чтобы реализовать перезапуск скрипта без потери информации. Можете хранить всю информацию в самой таблице и тогда становится важным делать своевременный дамп или можете хранить всё в некой структуре в памяти, позволяющей восстанавливать состояние, что более предпочтительно.
Добавление столбцов в пользовательской таблице
Пользователь
Сообщений: Регистрация: 27.01.2017
10.08.2021 18:54:03
Столбцы добавляются до формирования окна. Это его структура, типы данных, ширина. После формирования окна столбец уже не добавить, необходимо переформировать окно.
Вывод пользовательских таблиц
Пользователь
Сообщений: Регистрация: 27.01.2017
08.08.2021 10:25:59
Нет, нельзя. Это понятно из документации
NUMBER InsertRow(NUMBER t_id, NUMBER key)
ключ строки - это число
Запуск скриптов lua
Пользователь
Сообщений: Регистрация: 27.01.2017
07.08.2021 13:05:58
Цитата
Владимир написал: Самый надёжный способ - не запускать ничего автоматом. Более того, когда я перезапускаю Квик (после какой-то страшной ошибки, когда он отвисает), мой скрипт стартует автоматом (поскольку не был остановлен перед выходом), и я его немедленно останавливаю, чтобы ничего не натворил. А потом спокойно запускаю, когда Квик обновит свои таблицы (на мой взгляд, он неприлично долго это делает), и в ТТТ что-то там начнёт мельтешить - торговля пошла.. Я бы вообще запретил автомат. Вы сами ищете приключений на свою задницу, господа. Это У ВАС "ку-ку система получается". Впрочем, деньги ваши - развлекайтесь...
Если у Вас задача быть постоянно "привязанным" к терминалу, то можете действовать и так. Но многие запускают скрипт на VPS и смотрят, что происходит раз в день, а то и реже, когда скрипт пришлет какое-то оповещение. Поэтому скрипт должен успешно стартовать вместе с терминалом, а также корректно работать если терминал не выключается вовсе.
Отладка QUIK 9.1
Пользователь
Сообщений: Регистрация: 27.01.2017
07.08.2021 08:49:31
Цитата
У меня несколько другая ситуация. Есть lua-скрипт, который стартует вместе запуском программы quik и создает окно-таблицу. Если, после авторизации, quik показывает диалог с запросом замены истекающего фьючерса на новый и ответ на него утвердительный, то происходит "как-бы переоткрытие" видимых в этот момент таблиц. Их окна закрываются и тут же открываются вновь. А окно-таблица созданная lua-скриптом тоже закрывается, но вновь уже не отрывается. Из менеджера окон пропадает, хотя сам lua-скрипт работает. Приходится его останавливать и запускать по новой. Ведь так быть не должно?
Вам надо создать метод контролирующий наличие окна. Если его нет, и это не команда пользователя по его закрытию, то переоткрыть и перезаполнить его. Должно ли быть так или нет - сложный вопрос. Окна терминала переоткрываются, т.к. они в его оконной модели и он их контролирует. А окно скрипта нет. Терминал не знает о его составе и наполнении.
Прочесть таблицу новости через LUA
Пользователь
Сообщений: Регистрация: 27.01.2017
04.08.2021 15:03:33
Цитата
Владимир написал: , ЧАВО?! Во-первых, В МОИХ базах данных, как правило, ОДНА таблица (неоднородных кортежей). :: Во-вторых, какое отношение имеет открытие таблицы к визуализации? ТТТ - это ХРАНЕНИЕ данных в терминале, а никакая не "визуализация". И доступ к ней как раз "ракообразный", через getParamEx, а не getItem, скажем. Разумного объяснения сему факту лично я найти не могу. Привязка же доступа к графикам - это КРЕТИНИЗМ! АДНАЗНАЧНА!
... ТТТ - это ХРАНЕНИЕ данных в терминале ... оставлю без комментариев
"Во-вторых, какое отношение имеет открытие таблицы к визуализации?" Вы таблицу зачем открываете? Смотреть глазами? Не надо смотреть, то зачем открывать. А если смотреть, то какие претензии к термину "визуализация".
Доступ к данным параметров корректный. Обычный запрос на получение данных key-value по ключу параметра.
Прочесть таблицу новости через LUA
Пользователь
Сообщений: Регистрация: 27.01.2017
04.08.2021 11:43:39
Пример: База данных. в ней много таблиц. Пока не откроешь таблицу, т.е. визуализируешь данные, прочитать из таблицы ничего нельзя. Очевидно, что так это не работает.
ТТТ - это визуализация данных в терминале. Но ее можно и не открывать, т.к. key-value, связанный с этой "таблицей", находится в памяти и доступен для чтения через публичные методы. Поэтому есть необходимость реализации методов для всех, так называемых "таблиц" Квика.
Привязка же к графикам - это просто один из методов, считывания информации с этого графика, со всеми вытекающими проблемами. И зачастую, используется не для получения данных баров (свечек).
Каталог luac-скрипта, выполняемого через dofile
Пользователь
Сообщений: Регистрация: 27.01.2017
03.08.2021 08:42:26
Не будет работать если при компиляции убрана отладочная информация флагом -s. Что, обычно, всегда и делается.
Тиковый график QuikJunior и рабочего Quik
Пользователь
Сообщений: Регистрация: 27.01.2017
30.07.2021 12:26:39
Если я правильно помню, демо данные срочного рынка транслирует биржа.
Вопрос по индикатору.
Пользователь
Сообщений: Регистрация: 27.01.2017
16.07.2021 16:04:07
Необходимо еще учитывать то, что при старте терминала индикаторы не могут инициализироваться одновременно. Текущий запустился первый, а два других, с которых данные считываются - еще нет. Или в другой последовательности.
Отладка QUIK 9.1
Пользователь
Сообщений: Регистрация: 27.01.2017
15.07.2021 17:00:01
Еще бы ссылку на изменения и исправления в версии.Я что-то не могу найти на сайте.
Debug function name
Пользователь
Сообщений: Регистрация: 27.01.2017
12.07.2021 17:49:01
Я по ошибкам вывожу строку текста через debug.getinfo(2), а в assert есть имя функции, аргумента, чтобы в тексте ошибки было имя. Часто этого достаточно для понимания что и где. Правда если скомпилировать без отладочной информации, что всегда и делается, то информация теряется. Для этого, как раз в assert имя функции и прописывается. Если же это для каких-то логических целей, то лучше не через debug.getinfo решать вопрос, конечно.
Самый лучший Telegram bot на lua
Пользователь
Сообщений: Регистрация: 27.01.2017
02.07.2021 09:50:43
Добрый день.
Нет, были реализованы только отправка и получение.
Написание автономного бота
Пользователь
Сообщений: Регистрация: 27.01.2017
01.07.2021 13:49:22
Постоянный спор. Вот это "Грубо, узнать когда количество загруженных строк в таблице будет равно количеству на сервере в том состоянии которое есть в данный момент." было бы полезно. Получать событие когда количество строк в таблицах futures_client_limits, money_limits, depo_limits на сервере и клиенте стали разные и обратно одинаковые. Правда само число строк мало о чем говорит, если только это не очистка и заполнение.
Соответствие Кодов клиента и Торговых счетов, Определение соответствия Кодов клиента и Торговых счетов
Пользователь
Сообщений: Регистрация: 27.01.2017
23.06.2021 10:00:17
Если считать, что Фирма - это некий код брокера, от имени которого выполняются поручения, то маловероятно. Но это, конечно, больше вопрос к брокеру.
Получение признака "Субординированный инструмент" в lua
Пользователь
Сообщений: Регистрация: 27.01.2017
16.06.2021 17:01:46
Кажется, гораздо проще было бы добавить в руководство описание полей и поддерживать его актуальность. Что вполне естественно. Впрочем, такие пожелания были неоднократно.
простейший робот на Луа, Где взять простейший работающий робот на Луа в качестве заготовки?
Пользователь
Сообщений: Регистрация: 27.01.2017
10.06.2021 21:03:26
Раньше, лет 5 назад, было трудно найти примеры. Хотя уже тогда были варианты:
Также можно просто найти в Яндекск набрав "робот lua Квик"
Найдутся варианты демонстраторы, если отфильтровать рекламные предложения. Также поищите на GitHub там много примеров кода.
Вопрос: Как получить номер лимитной заявки при исполнении стопа
Пользователь
Сообщений: Регистрация: 27.01.2017
06.06.2021 13:12:11
По полю filled_qty
Вопрос: Как получить номер лимитной заявки при исполнении стопа
Пользователь
Сообщений: Регистрация: 27.01.2017
05.06.2021 14:59:52
Лимитный ордер по активированному стоп-ордеру у брокера отправляется в ядро биржи, если он прошел проверку. Номер зарегистрированного лимитного ордера, хранится в поле linkedorder таблицы stop-orders:
linkedorder
NUMBER
Номер заявки в торговой системе, зарегистрированной по наступлению условия стоп-цены
При этом признак активации (исполнен) стоп-ордера - это всего лишь признак того, что наступило одно из условий, заданное при постановке стоп-ордера. При этом, если лимитный ордер не проходит проверку, то он не будет зарегистрирован, при это стоп-ордер "исполнен". Для контроля этого есть дополнительные флаги стоп-ордера. Также может возникнуть ситуация, когда лимитный ордер установлен, но не исполнен. Т.е. заданы слишком мягкие отступы, при постановке стоп-ордера. При этом стоп-ордер опять "исполнен".
Поэтому при смене статуса стоп-ордера, необходимо убедиться, что лимитный ордер был отправлен и он исполнен. Иначе необходимо предпринять защитные действия: закрыть руками, снять "зависший" лимитный ордер и т.д.
Самый лучший Telegram bot на lua
Пользователь
Сообщений: Регистрация: 27.01.2017
03.06.2021 09:37:32
Странно, что Вы задает вопрос здесь, а не на форуме размещения или ГитХабе, где этот проект тоже есть. А сто касается уведомлений, то решения есть похожие по смыслу
[ Закрыто] Опять ошибка получения кол-ва ордеров скриптом
Пользователь
Сообщений: Регистрация: 27.01.2017
31.05.2021 14:33:54
Если Вы хотите решить проблему, то Вам надо предоставить информацию. Проблема же у Вас. Можете напрямую обратиться в техподдержку. У Вас запросят информацию для воспроизведения, т.к. того что Вы предоставил явно недостаточно. Вы обратились на форум, где по доброй воле разработчики могут ответить, в могут и не ответить.
Код, что Вы предоставили, дает мало информации, поэтому вывод дополнительной информации дал бы больше возможностей понять в чем проблема. Я сталкивался с особенностями работы функций get... поэтому стараюсь при анализе понимать, что сохранено в таблице к которой эта функция обращается. Собственно unit_test этой функции так и надо написать, сравнить возвращаемое значение с эталонным в таблице.
Вы же просто пишите - функция не работает. Разработчики ответят: проверили - работает.
[ Закрыто] Опять ошибка получения кол-ва ордеров скриптом
Пользователь
Сообщений: Регистрация: 27.01.2017
29.05.2021 16:07:55
Потому что на демо сервере лимит = 0. А в реале у меня годами работаю свои скрипты. Где как используются функции getDepoEx, getFuturesHolding, так и без них. Чаще без них, но это не важно. И в сообщение я тоже указывал на похожее поведение.
[ Закрыто] Опять ошибка получения кол-ва ордеров скриптом
Пользователь
Сообщений: Регистрация: 27.01.2017
29.05.2021 15:50:39
В Ваших сообщениях №28, 32, 35, 45 первое выводимое значение mLots не 0, впрочем, это не важно.
Я Вас ни в чем не обвиняю, даже не пытаюсь. Просто взял Ваш код и запустил на тестовом сервере. Не надо искать скрытых смыслов в сообщениях.Вот что я запустил:
Код
SEC_CODE = 'SBER'
CLASS_CODE = 'QJSIM'
ACCOUNT = 'NL0011100043'
CLIENT_CODE = '11609'
FIRM_ID = 'NC0011100000'
LIMIT_KIND = 0
mLots = 0
L=0
function main()
while true do
local tblMinLot = getParamEx(CLASS_CODE, SEC_CODE, "LOTSIZE")
local tblTotalLot = getDepoEx(FIRM_ID, CLIENT_CODE, SEC_CODE, ACCOUNT ,LIMIT_KIND)
if tblMinLot==nil then MinLot=0 else MinLot=tonumber(tblMinLot.param_value) end
if tblTotalLot==nil then TotalLots=0 else TotalLots=tonumber(tblTotalLot.currentbal) end
x= TotalLots
L = TotalLots / MinLot
-- впвапвп
if( mLots~=TotalLots ) then
message(SEC_CODE.." TotalLots "..tostring(TotalLots).." mLots "..tostring(mLots).." x "..tostring(x),3 )
mLots=TotalLots
end
sleep(1000)
end
end
Убраны переменные, не влияющие на вывод сообщений. На демо-сервере, на данный момент торгуется только несколько инструментов.
Впрочем, ждите ответов от разарботчиков.
[ Закрыто] Опять ошибка получения кол-ва ордеров скриптом
Пользователь
Сообщений: Регистрация: 27.01.2017
29.05.2021 15:00:06
Ок. Смотрим на Ваш код.
Я даже специально перенес его в редактор и привел к нормальному виду. Даже запустил на тестовом сервере ARQA
Нет такого поведения - это раз. Не при подключении к серверу, ни при отсутствии оного.
Второе, даже просто глядя на код, возникает вопрос: почему у Вас первое сообщение содержит mLots не 0?
При инициализации значение переменной = 0. После первого сообщения произойдет присвоение некому значению, отличному от 0. У меня так и выводится одно единственное сообщение, и более ничего.
SBER TotalLots 10.0 mLots 0 x 10.0
Как и должно быть mLots = 0.
Либо Вы приводите не все сообщения, либо не полный код. Но даже если у Вас это происходит, то на тестовом сервере нет.
[ Закрыто] Опять ошибка получения кол-ва ордеров скриптом
Пользователь
Сообщений: Регистрация: 27.01.2017
29.05.2021 12:39:53
Я уже все предложил. У меня достаточно запущенных скриптов содержащих близкие по смыслу строки. Когда возникала такого рода проблема, она исследовалась всесторонне: получалось содержание колбеков, содержание таблиц и т.д. И, в конечном итоге, проблема решалась с брокером, транслирующим данные.
А глядя на эти сообщения, где не ясно что это за бумага, какой брокер, версия терминала, разработчик, "конечно", сможет сразу определить проблему.
[ Закрыто] Опять ошибка получения кол-ва ордеров скриптом
Пользователь
Сообщений: Регистрация: 27.01.2017
29.05.2021 10:24:14
Да, чаще всего это проблема трансляции данных или их интерпретации. А если Вы увидите, что есть проблема в данных, то далее ее можно будет классифицировать: технологические изменения данных при трансляции, проблема в данных, поступающих от брокера и т.д.
Далее можно уже предполагать кто виноват (или не виноват): брокер, серверная часть терминала у брокера, сам терминал.
А просто сказать - вот есть проблема. Как ее воспроизвести? Ваш код будет работать корректно на тестовом контуре разработчика терминала. И что в итоге?
[ Закрыто] Опять ошибка получения кол-ва ордеров скриптом
Пользователь
Сообщений: Регистрация: 27.01.2017
29.05.2021 09:24:18
Смысл в том, что в таблице есть много полей. Когда у Вас меняется позиция, зачастую это связано с изменением других полей. Вы и увидите или не увидите эти изменения. Как минимум больше информации для анализа.
В конечном итоге, разработчик терминала не отвечает за транслируемую информацию.
[ Закрыто] Опять ошибка получения кол-ва ордеров скриптом
Пользователь
Сообщений: Регистрация: 27.01.2017
28.05.2021 19:10:21
Я все же советую сделать цикл по строкам таблицы depo_limits и вывести все ее поля в такие моменты, чтобы было понятно что в ней меняется.
Данные транслирует биржа, терминал просто получает и предоставляет информацию.
[ Закрыто] Опять ошибка получения кол-ва ордеров скриптом
Пользователь
Сообщений: Регистрация: 27.01.2017
28.05.2021 18:20:41
Ну по поводу значений возвращаемых именно функциями, а не простым перебором таблицы была тема Вы вывели бы все значения из таблицы и было бы видно для каких сочетаний параметров происходят изменения.
[ Закрыто] Опять ошибка получения кол-ва ордеров скриптом
Пользователь
Сообщений: Регистрация: 27.01.2017
28.05.2021 17:10:43
limit_kind NUMBER Срок расчётов.
Возможные значения: положительные целые числа, начиная с «0», соответствующие срокам расчётов из таблицы «Позиции по инструментам»: «0» – T0, «1» – T1, «2» – T2 и т.д.
Для получения значений параметров таблицы «Клиентский портфель» для клиентов срочного рынка без единой денежной позиции необходимо указать в качестве «client_code» – торговый счет на срочном рынке, а в качестве «limit_kind» – 0.
Вы для своего инструмента уточните срок расчетов, тот и задайте.
Можете также вывести из таблицы depo_limits все строки и посмотреть значения. Позиция для Т2 и Т0 - это могут быть разные значения.
[ Закрыто] Опять ошибка получения кол-ва ордеров скриптом
Пользователь
Сообщений: Регистрация: 27.01.2017
28.05.2021 16:51:20
А зачем у Вас Limit_kind = 365?
[ Закрыто] Опять ошибка получения кол-ва ордеров скриптом
Пользователь
Сообщений: Регистрация: 27.01.2017
28.05.2021 14:26:15
Руководство по языку qLua говорит нам: result STRING Результат выполнения операции.
Возможные значения: «0» – ошибка;
«1» – параметр найден Можно, конечно, интерпретировать по разному, но, по факту, раз не равно "1", то какой-бы ни был результат в param_value, параметр не найден или не получен. Либо надо провести дополнительную проверку на корректность ввода параметров инструмента, либо не пытаться угадать что этот 0 будет значить.
[ Закрыто] Опять ошибка получения кол-ва ордеров скриптом
Пользователь
Сообщений: Регистрация: 27.01.2017
28.05.2021 13:58:44
Не очень понята проблема. Вам никто не мешает прежде чем получать данные, проверить, что эти данные есть. Т.к. getParamEx возращает таблицу, то легко проверить есть ли данные, сравнив поле result этой таблицы с литералом '1'. Если не равно "1", то данных нет, по какой-то причине. Вы их можете привести к 0, через tonumber(...) or 0, но этот 0 будет иметь смысл - данных нет.
Получать объемы сделок
Пользователь
Сообщений: Регистрация: 27.01.2017
16.04.2021 10:48:26
Да вроде таких примеров на просторах достаточно. Собственно просто читать поток сделок и что-то с ним делать.
Вот, для примера
Уточнение принципа работы OnParam, RequestParams и GetParamEx2
Пользователь
Сообщений: Регистрация: 27.01.2017
31.03.2021 22:32:08
Я бы уточнила так:
Хотелось бы иметь возможность осуществлять подписку на колбек по изменению одного (или списка параметров) из ТТТ. Возможно для этого лучше сделать отдельный метод, чтобы не менять существующую функциональность. По приходу колбека иметь в качестве одного аргументов имя параметра, изменение которого вызвало колбек.
Впрочем, такие пожелания уже были.
На демо счете прошла кросс заявка.
Пользователь
Сообщений: Регистрация: 27.01.2017
26.03.2021 19:36:16
Демо счет, Quik 8.13.0.106
Установлен лимитный ордер. Совершена ручная сделка, исполнившая этот ордер. В таблице сделок номер сделки задублирован.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
Пользователь
Сообщений: Регистрация: 27.01.2017
26.03.2021 12:04:52
Владимир, не забывайте, что данный форум это не просто общение, но и какое-никакое средство коммуникации с разработчиками терминала. Задаешь вопрос, ожидаешь получить ответ от них, а не комментарии, что это никому не надо.
На форуме есть ветка для произвольного общения.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
Пользователь
Сообщений: Регистрация: 27.01.2017
26.03.2021 11:34:55
Владимир, проблема не в том как Вы пишите, а в том что пишите. Я в сети тоже с 94 года. Всегда были разговоры по существу или общий балаган. Выражайте свое мнение, на здоровье. Но не надо его навязывать. Для простых разговоров есть другие форумы. Вы пишите какое-то решение для себя. Но есть другие люди, которые имеют свое мнение на то, что им надо. Не про то как это написать, а именно что надо. Вам не надо, другим надо. Они просят, значит надо сделать. Поэтому и возникаю проблемы при решении таких задач. Просто Вы с ними пока еще не столкнулись. Но это не значит, что их нет.
Событие получения данных всех таблиц и графиков после подключения к серверу
Пользователь
Сообщений: Регистрация: 27.01.2017
25.03.2021 21:36:39
Цитата
Я ведь всё описал по вашему алгоритму? ничего не упустил?
Почти. Этот маркер будет всего лишь триггером на запуск, инициализацию алгоритма. До него считаем, что данные некорректные и смысла на запуск нет вовсе.
При этом остаток данных будет получен уже по факту.
А вот если нет никаких ориентиров, то по той же логике запускаем скрипт, ориентируясь на данные в кеше. Запускаем и... На основании чего будем заявки отправлять: на вчера 23:00, позавчера, сегодня час назад.
Собственно сейчас и приходится формировать алгоритм ожидания для получения потока CreateDataSource, ожидая когда время последнего бара с учетом периода будет больше времени последней сделки. Иначе данные не доехали.
При этом потоки данных, имеющие время в своем составе хоть как-то позволяют организовать оценочное ожидание и проверку (скажем заказ обезличенных сделок так долго поступает, что без ожидания можно подумать, что и потока нет), а вот данные не имеющие его уже никак. А то ведь бывает уже торговая сессия идет, а открытые позиции терминал еще не получил И думай - может сделки прошли и позиция закрылась. Но сделок нет. А может они тоже еще не загрузились.
QUIK не отправляет заявку, в которой цена представлена переменной
Пользователь
Сообщений: Регистрация: 27.01.2017
24.03.2021 20:30:16
А причем здесь сервер? Сервер дает что попросили. getParamEx из кеша теримнала данные вернет, если они есть. А если их заказали с сервера, то они будут обновляться в кеш.
А что программа должна делать, если с сервера не получен ответ. Она просто возвращает в поле result возвращаемой таблицы = "0", что условно и соответствует ошибке получения данных. Это он как раз и говорит - ничего нет. А message - это средство оповещения.
Дебаг - это либо вывод в лог отладочной информации с level = debug. Либо использовать PrintDbgStr. При этом код должен содержать ассерты на входящие данные, чтобы сразу и понять где ошибка.
QUIK не отправляет заявку, в которой цена представлена переменной
Пользователь
Сообщений: Регистрация: 27.01.2017
24.03.2021 19:57:27
Питон тоже самое, только тяжелее, медленнее и со своими проблемами.
Что касается клиент серверного взаимодействия, то вне зависимости от языка, прежде чем проводить операции с данными, полученными с сервера, из принято проверять. Они могут быть не получены, они могут быть некорректными. В вашем примере Вы сразу пытаетесь привести значение к числу, не убедившись, что они есть. Если вернется что-то не то, tonumber вернет nil. А далее Вы с этим будете арифметические действия выполнять.
Событие получения данных всех таблиц и графиков после подключения к серверу
Пользователь
Сообщений: Регистрация: 27.01.2017
18.03.2021 23:21:26
Первичные данные всегда актуальны на какой-то конкретный момент времени в прошлом и очень редко актуальны в течение какого-либо длительного периода.
Да, актуальность потока данных не контролируется. Но вот на момент заказа вполне (это ведь точная отметка по оси времени). Сколько данных - столько, давай их все и все что будет еще. По приходу данных на момент запроса - сигнал (для каждого момента до точки заказа колбек мне не нужен), а далее включай колбек для новых (после точки заказа). Т.е. пошли уже данные потоком. А вот если мне сыпать колбеки на каждый момент в прошлом (до точки заказа), то, конечно, смысла нет. Если только не будет отдельного сигнала о достижении данных на момент заказа.
Также вполне может быть сценарий получения данных просто до момента заказа. Скажем - дай, что есть сейчас, на момент прихода заказа. Будущее не интересно. Чем не актуальные данные. Захочу новые - закажу еще.
Событие получения данных всех таблиц и графиков после подключения к серверу
Пользователь
Сообщений: Регистрация: 27.01.2017
18.03.2021 21:17:24
Цитата
Артем написал: ,это уже реализовано - OnParam и т.п. При ответе сервера приходит колбек. Нет ответа - нет и колбека.
А я разве сказал, что нет. Вопрос получения данных и их актуальности на этом форуме уже много лет обсуждается. OnParam - это всего лишь какая-то реализация, предложенная разработчиками.
Событие получения данных всех таблиц и графиков после подключения к серверу
Пользователь
Сообщений: Регистрация: 27.01.2017
18.03.2021 21:08:32
Цитата
"Всё" никогда не бывает загружено.
Конечно. Но если говорить о пакетах данных - заказал пакет: получен, не получен.
Даже бесконечный поток реального времени, если разделить на дискретные пакеты, уже позволяет контролировать загрузки пакетов. Иначе один пакет сбойный - толку от такого потока, если это критически важный поток данных.
Событие получения данных всех таблиц и графиков после подключения к серверу
Пользователь
Сообщений: Регистрация: 27.01.2017
18.03.2021 19:13:39
Владимир, при клиент-серверном взаимодействии таймерное ожидание никаких гарантий не дает. Необходимо либо иметь метод в API дающий ответ, что все загружено, либо колбек по факту события загрузки.
Событие получения данных всех таблиц и графиков после подключения к серверу
Пользователь
Сообщений: Регистрация: 27.01.2017
18.03.2021 16:59:02
Владимир, предлагаю Вам присоединиться к форуму mfd.ru или smart-lab.ru. Думаю там Вы найдете благодарную публику. На первом форуме очень любят "Гуру". Здесь, все же, хотелось бы видеть комментарии по существу, без литературных вставок.
Вы написали СЕБЕ скрипт - и ладно. Поучать других малополезное занятие. Когда решите написать скрипт кому-то еще (вдруг случится такое чудо), то, вполне возможно, столкнетесь с тем, что очень у многих пользователей терминал настроен не так как у Вас, брокер другой и он работает не так как ваш. А Ваш скрипт не учитывает это.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
Пользователь
Сообщений: Регистрация: 27.01.2017
16.03.2021 13:13:54
Цитата
Лично у меня нет слов в нормативной лексике!
Продолжайте в том же духе оформлять свой код - не то еще будет.
Никаких проблем с подачей транзакции и поиском ответов, если он пришел, нет. А то что Вы не знаете что такое счет депо только подтверждает, что предметная область Вами не усвоена.