Владимир написал: Sergey Gorokhov, SP- строка (массив) на три числа, а - сложное, разветвлённое дерево объектов с разнообразной информацией по тикерам, отследить которое не представляется возможным. В частности, этот код выполняется в "большом" прерывании, инициализация - в main, визуализация результатов - малом,обновление - в разных местах.
В виде КОДА а не слов.
Цитата
Владимир написал: Sergey Gorokhov, Сергей, я 40 лет программистом, причём системщик, был даже когда-то в соавторы бортовой операционки включён. Поверьте, я кое-что смыслю в программировании. ::
Для того чтобы выложить "полную версию кода которая не работает" не надо быть программистом
Владимир, У Вас есть понимание что фраза "полная версия кода которая не работает." означает что в коде должно быть всё для того чтобы его можно было запустить и получить ошибку?
Владимир написал: Там алгоритмически сложный код, в котором любой запутается, а тут простейшее действие, выделенное мною после "ругательств" интерпретатора на арифметику.
1) Поверьте, поддержку это совсем не пугает 2) Вы понимаете что без отслеживания значений в "a" и "SP" разобраться в причинах не представляется возможным? 3) Можно повторить пробелму на отдельном, более компактном коде. 4) Если не хотите сотрудничать то увы ничем помочь не можем.
Владимир, Логично предположить что Вам надо привести свою версию кода которая не работает. ПОЛНУЮ версию кода, а не пару строк которые ничего не значат
Nikolay написал: Если у Вас в SP[a[i][1][1]] ничего нет, т.е. nil, то и будет ошибка.
он говорит что в SP[a[i][1][1]] что-то есть. иначе, вот это ..SP[2]); - вернуло бы nil, а оно возвращает "0: SP[2]=0" a[i][1][1]] равно 2, потому что message(i..": SP["..a[i][1][1].."]"); -- печатает "0: SP[2]"
Владимир написал: Александр, А зачем там вообще double? Код заявки - ЦЕЛОЕ число! Эксперимент показал, что его разрядности достаточно. Какому дебилу понадобилось объединить int и float в идиотский number, да ещё и на уровне исполнения использовать именно float? Мало других способов поймать приключения на свою задницу?
Просьба сдерживаться в выражениях иначе придется принять меры.
Владимир написал: ОЙ! Спасибо, конечно, Sergey Gorokhov , И повторяю пожелание: нельзя ли дать возможность редактировать свои комменты - скажем, в течение 5 минут?
К сожалению ядро форума не предоставляет такой возможности. В ближайшее время подобный функционал к добавлению не планируется.
Владимир написал: 1. Не работает раскраска ячеек: вызов SetCell меняет содержимое ячеек "автоматически", а вот на SetColor она пилюёт: всё остаётся чёрно-белым, а я бы хотел раскрасить таблицу как попугая: цвет - это тоже информация, и весьма наглядная.
Для анализа нужен пример кода, на котором воспроизводится проблема.
Цитата
Владимир написал: 2. Попытка динамически обновлять количество строк в таблице закончилась крахом. Я делал так:
Для анализа нужен пример кода, на котором воспроизводится проблема. Словесное описание во всех подобных вопросах только вносит смуту и порождает лишние вопросы. Проще - быстрее - надежней, привести пример кода на котором повторяется проблема (а не пару строк), тогда и решение Вы получите в разы быстрее.
Юрий Z написал: Данное API уже позволяет получать тики в обход qlua/qpile? Как знаю, оно уже давно значительно не обновлялось.
Нет не позволяет, но это же не делает его не "API для внешних программ" если Вам нужен аналог qlua/qpile то для этого уже есть FIX Client Connector но он платный.
Сергей написал: В случае, если lua скрипт, запускаемый через окно Доступные скрипты, будет содержать только одну строчку dofile("Адрес скрипта lua, который хотим запустить"), могут ли быть какие то странности в работе такого скрипта по сравнению с тем, если бы он был запущен напрямую?
Если скриптов будет несколько, то в них не должно быть функций с одинаковыми именами, в остальном не должно быть проблем.
Владимир, То что ситуация повторяется не всегда, совершенно не значит что мы сможем разобраться по отдельным строкам кода. Просьба привести полный пример кода на котором повторяется проблема, иначе разбор может затянуться на века.
Например, Вы знаете что функция tonumber может принимать два параметра, а не один, и если случайно передать туда что попало во второй параметр, то тоже будет nil? мы же не знаем что Вы туда передаете. ну "s" и что? а вдруг эта самая "s" и не "s" вовсе, а функция или еще что. Вот и получается что мы можем только гадать как у Вас там устроено, а Вы будете эти догадки отметать. И так по кругу пока воображения на догадки хватает.
вот и приведите эту последовательность. Или последовательности.
только желательно в общем виде. Я пытался многими способами и все равно время от времени получаю от людей, которые пользуются моими роботами логи, в которых видны невообразимые чудеса в вопросе получаемых роботами данных.
Как уже было сказано и еще раз повторим, надежного способа НЕТ. Нельзя надежно определить что данные актуальны в условиях непрерывно поступающих данных. Можно примерно оценить актуальность, сравнивая текущее время с временем на самих данных (тут уже могут быть разные варианты с синхронизацией часов и т.п.) Если Вы скажите, что это не надежно, то будете абсолютно правы, потому что как уже было сказано надежного способа НЕТ.
s_mike@rambler.ru, Михаил, к чему это все? Мы же с Вами уже не один год общаемся и ровно этот вопрос совершенно точно уже обсуждали. ответ не поменялся, надежного способа нет, есть разные варианты которые могут дать более менее правдивую оценку актуальности данных.
Nikolay, Тема про "math.tointeger" возникла из-за появления ".0", к большим числам она не относится. Автор хотел исследовать вопрос и ему было предложено такое решение для ознакомления
Цитата
Nikolay написал: С другой стороны, не очень понятно зачем вообще применять форматирование для чисел типа integer. tostring итак их выводит корректно. Если только вы не гарантируете тип integer для номера заявки. Но тогда это будет уже другой разговор
применять форматирование не нужно, в той же ветке сказано что tostring будет работать с большими числами, собственно Вы и сами это говорили.
По сути, с числами есть две проблемы, первая это появление ".0" у любых чисел, и эта проблема чинится предложенной функцией. Вторая это некорректное преобразование 19ти значных дробных чисел в строку и решения для нее нет. Но в практике, 19 ти значные числа есть только в номерах заявок/сделок, а для них нет никаких практических задач которые могли бы привести к преобразованию их в дробное число.
Kolossi, Да Вы правы, предложенный вариант с tradingphase не решает поставленной задачи. Согласно биржевому протоколу, в указанном параметре tradingphase нет отдельного признака для вечерней сессии, а значит и в QUIK Вы его никак увидеть не сможете.
Сергей написал: Правда, хелп QUIK'а (info.chm от 20.07.20) версии 8.8.4 (ftp.quik.ru//public/updates/8.8/quik_8.8.4_upd.zip от 21.08.20) все еще упорно говорит нам о том, что там decimal, да еще и с 15 знаками в целой части.
Это ошибка в документации приносим извинения. Документацию обязательно поправим
Старатель написал: Это указано и в 6, 7, 8.1 версиях. И там SetCell работает нормально с необязательным пятым параметром
Это ничего не значит Как уже было сказано в соответствии с документацией, последнего параметра не должно быть, а Вы его передаете. Значит формально функция SetCell выдает правильный результат. Если ранее работало по другому значит ранее работало не правильно.
Alexey, Откройте в терминале QUIK Таблицу Текущих Торгов и добавьте туда параметры Мин и макс возможной цены по классу TQBR Убедитесь что они там действительно есть и в них действительно есть числа, после чего повторите попытку запуска скрипта.
Юрий Балашов написал: Вы наверное описались, когда пишите, что "передать параметр номера заявки в виде ЧИСЛА нельзя" и имели ввиду что в виде СТРОКИ нельзя?
Да, это просто опечатка. В виде строки нельзя.
Цитата
Юрий Балашов написал: Не могли бы Вы дать ссылку как создать таблицу при помощи QPILE.
Это описано в документации на терминал QUIK, глава "Раздел 8. Алгоритмический язык QPILE"
Цитата
Юрий Балашов написал: Это секретные данные???MSSQL слишком специфичная база, не могли бы Вы сказать будет ли работать на базе Oracle 8?
Будет работать вообще на любой БД в которой есть подходящий тип данных. Сколько таких БД существует к сожалению затруднимся сказать, наверное очень много. И по этому мы не можем привести такой список.
Юрий Балашов написал: В соседнем обсуждении Вы пишите, что номер заявки передается как строковый, я попробовал, но Квик (версия 8.5) не дает возможности передать в базу данных строку "Номер" заявки как строковую переменную, только как числовую.
К сожалению произошла ошибка, через терминал QUIK при экспорте по ODBC передать параметр номера заявки в виде числа нельзя. Альтернативный вариант в виде использования QPILE таблиц, где указать строковое значение в виде номера заявки, далее эту таблицу сохранять по ODBC.
Цитата
Юрий Балашов написал: Вы можете сказать, на каких КОНКРЕТНО базах данных, желательно с версией базы, такая передача данных проверялась.
нет не можем. на MSSQL совершенно точно проблем не обнаружено, можете использовать ее.
Юрий Балашов написал: Да, проблема действительно в FB, Квик передает данные, но усеченные, не все 19 цифр. Поэтому и был вопрос, на какой базе данных тестировали передачу данных по ODBC?
на разных базах, но FB точно не проверялся.
Цитата
Юрий Балашов написал: На какой тип данных изменить, в самой базе у меня стоит DOUBLE PRECISION?
рекомендуем ознакомиться с документацией на FB и в ней найти нужный тип, который вмещает 19 символьные числа (если вообще там такой имеется).
Цитата
Юрий Балашов написал: Вдогонку, можно ли передать номер заявки как строковый?
По идее да, если в базе строковый тип данных, однако совершенно точно именно для FB мы сказать не можем. рекомендуем проверить это самостоятельно.
Юрий Балашов написал: Сегодня, при переходе на 19-тизначный номер заявки произошел сбой передачи данных по ODBC и соответственно робот встал :(. База на FB сервере, система Win7, Квик 8.5.2.11, Брокер - Кит_Финанс. Насколько я понимаю причина в том, что FB не поддерживает 19 знаков. На какую базу можно перейти? Надеюсь разработчики не отказались полностью от передачи данных по ODBC и тестировали ее хоть на какой-то базе?
Дополним, Если проблема действительно в FB то обновление терминала никак не поможет. ответ следует искать на форумах где обсуждается FB. Еще можно попробовать изменить тип данных в самой базе.
Юрий Балашов написал: Сегодня, при переходе на 19-тизначный номер заявки произошел сбой передачи данных по ODBC и соответственно робот встал :(. База на FB сервере, система Win7, Квик 8.5.2.11, Брокер - Кит_Финанс. Насколько я понимаю причина в том, что FB не поддерживает 19 знаков. На какую базу можно перейти? Надеюсь разработчики не отказались полностью от передачи данных по ODBC и тестировали ее хоть на какой-то базе?
Попробуйте обновиться до последней версии, сейчас это 8.8.4
Цитата
Юрий Балашов написал: Кстати, теперь номер заявки идет не по порядку выставления заявки, а по какому-то другому принципу. Например заявки по SiU0 имеет меньший номер чем GDU0, даже если она была выставлена намного позже. Так и было задумано или это какой-то сбой? И как теперь упорядочить таблицу заявок?
Это вопрос к бирже а не к нам, они так транслируют. Если вкратце, то на бирже произошло так называемое портицирование метчинга, в результате которого сделки нумеруются в зависимости от базового актива, а не от инструмента.
Здравствуйте, Проверьте визуально есть ли нужная строчка в таблице Позиции по клиентским счетам (фьючерсы) Если нужной строчки нет, то и значения не будут возвращаться
Старатель написал: На Junior будет этот вид транзакций?
на Junior нет биржевой фондовой секции и никогда не было, там работает наш эмулятор. так что у него нет ничего общего с ядром ТС, в том числе и транзакции перестановки заявок. Доработка в этом месте не планируется
СергейК, Еще раз если не понятно. Список изменений - один у всех, потому что у всех одинаковые терминалы, отличаются только настройки. Дистрибутивы на нашем сайте это дистрибутивы настроенные на наш демо контур. Из этого следует что читать списки изменений можно, а вот ставить дистрибутив джуниора в надежде подключиться к брокеру лучше не стоит.
Следует понимать что у каждого брокера свои настройки, в связи с чем, если поставите дистрибутив и попытаетесь подключиться к своему брокеру у Вас ничего не выйдет, пока не поменяете настройки на нужные. Так что не удивляйтесь.