Вызовы getportfolio и file:write разнесите на 2 разных вызова Сейчас не понятно в каком именно из них проблема и какая
lua-mysql не компилируется под x64
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
12.07.2022 06:56:31
Проблема не в библиотеках, а в том, судя по сообщению ликёра, что проект 32 битный собираете Менять в свойствах проекта И не понятно как именно вы былдитк, вы это упорно не пишете
lua-mysql не компилируется под x64
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
11.07.2022 11:54:24
Похоже вы собираете под 32-битную платформу
lua-mysql не компилируется под x64
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
11.07.2022 09:35:16
Цитата
Александр написал: Может быть даже тряхну стариной и напишу что-нибудь на Си :-)
Готовые примеры в помощь
А, ну и потом Для сборки mysql надо найти подходящие библиотеки самого mysql Возможно в этом месте проблема
Вылетает QUIK Junior 9.7.0.14 при подключении отладчика Visual Studio 2022 17.0.5 С++
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
06.07.2022 08:08:14
Тупость и глупость. Кто захочет дебажить именно терминал - тот защиту обойдёт. Кто захочет вполне легально дебажить свою библиотеку для Lua - не сможет это сделать. Так какого хрена мешать легальный действиям и не особо мешать нелегальным? Все как наши законодатели делаете: соблюдать законы сложно, нарушать - легко. Верной дорогой!
Пустое значение trans_id в таблице сделок.
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
05.07.2022 10:53:16
99% что проблема именно в том, что вы написали. Никакого признака "вот теперь заполнено все" нет. С другой стороны заполненность trans_id и есть в вашем случае такой маркер.
Отладка QUIK 8.13
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
30.06.2022 18:50:05
Цитата
Владимир написал: Это САМ СКРИПТ формирует айдишки заявок!
Я ж сказал что ты не понимаешь разницу между транзакцией и заявкой. И даже когда я все подробно расписал - ты, дебила кусок, понять прочитанное не сумел.
Где найти таблицу индексов стакана
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
30.06.2022 16:19:44
Три раза перечитал. Ничего не понял Что требуется?
Отладка QUIK 8.13
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
30.06.2022 14:18:49
Уточни, в чем ахинея? Я написал как оно устроено. Ты несёшь поток хотелок. Так в чем ахинея, придурок?
Отладка QUIK 8.13
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
30.06.2022 13:01:28
Это не ошибка. Это результат произвольно го порядка поступления информации с биржи. И, соответственно, произвольного порядка наполнения данных в колбеках скрипта. Если от биржи информация о зарегистрированной заявке пришла раньше информации о случившемся сделке, что происходит в большинстве случаев, то в ontrade приходит сразу полная информация, включая указанный пользователем ID транзакции. Если информация о сделке пришла раньше информации и породившей её заявке, то стачала будет ontrade, в котором часть полей, данные в которые попадают с заявки, будут не заполнены. А после того как с биржи придёт информация о заявке, сервер квика сможет опознать заявку для уже известной ему сделки и вызовет ontrade уже с заполненной информацией в полях про заявку
Отладка QUIK 8.13
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
30.06.2022 12:08:22
От же тупень.... "ошибка нестабильная"
Отладка QUIK 8.13
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
30.06.2022 11:06:01
Я тебе рассказываю как оно на самом деле. Причём инфу эту ты не найдёшь нигде, она из очень глубокого многолетнего изучения. А ты вместо спасибо продолжаешь выпендриваться по-идиотски. Дурак и напыщеный идиот.
А сервер при том, что терминал лишь передаёт инфу на сервер и получает её с сервера. Терминал вообще не производит содержательного работы со сделкам и заявками. Впрочем, сервер 4вика тоже. Все биржа. И это абсолютно правильно, иначе барак полный выйдет.
Отладка QUIK 8.13
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
30.06.2022 09:53:06
Но вообще конечно смешно читать про такие наивные "открытия" пальцегнутого балбеса. Это сразу с головой выдаёт его реальный уровень.
Отладка QUIK 8.13
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
30.06.2022 09:37:32
Цитата
Владимир написал: Но, господа, это же МОЯ айдишка, это НА МЕНЯ возлагается обеспечение её уникальности, так какие могут быть нули? Откуда им взяться? И это на 146% ошибка именно ПО Квика - ни брокеру, ни бирже до моей айдишки нет никакого дела. Непорядок...
Нет, это ошибка скриптописателя, который не понимает. "прерывания", как вы их называете, приходят в любом порядке. Но это не болажь квика, а особенность работы биржевых API В том случае, если сервер квика получает об биржи информацию о сделке раньше чем информацию о зарегистрированный заявке, он сообщает вам о сделке вызовом ontrade, но про заявку он ещё не знает, биржа это ещё не сообщила. Соответственно и информацию поставленную вами на заявке он сообщить не может, у него сервера квик в этот момент ещё нет такой заявки, он про неё не знает Потом, когда с биржи приходит информация про зарегмюистрированную заявку, в скрипте вызывается снова ontrade, но уже с поставленной информацией о заявке,т.к.теперь появилась возможность все это связать, теперь сервар знает про заявку и сделку. Ещё в этот момент будет вызван onorder, конечно.
А то что вы отправляете - это транзакция а не заявка.
Уничтожаем фейки
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
27.06.2022 09:36:43
Хорошее исследование, особенно что касается понимания OnParam
Ошибка в коде справки?
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
27.06.2022 09:35:37
Вот бы вы сюда эюпроблемеый код скопировали, было бы проще понять
Закрытие контракта QUIK, LUA
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
27.06.2022 09:34:30
Вот бы вы сюда этот пример скопировали, было бы проще понять
В функции main для каждого инструмента запускается свой поток. Потоки берутся из пула.
Без иллюстрации кодом вот этого момента, сказать что-то предметное - невозможно. Ибо не понятно чем ваши потоки (где не работает) отличаются от потока main (где работает).
Сохранение результатов работы скрипта в файл
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
17.04.2022 17:31:54
Цитата
Владимир написал: О, Господи!.. Теперь уже и таблица стала "типом данных"?
Здесь бы местному дурачку сбегать , но это не поможет.
Изучаем Qlua., "hello world"
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
14.04.2022 05:51:02
Перевожу:
Сохранение результатов работы скрипта в файл
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
14.04.2022 05:44:47
Как-то все в одну кучу. 1. При работе в QLua надо четко различать два абсолютно разных термина "таблица": 1) Таблица как тип данных в программе Lua, т.е.
Код
а = {} -- здесь переменная a - таблица в терминах языка программирования Lua
a[1] = 5 -- так к ней можно обращаться в программе
2) Таблица как элемент визуального интерфейса, таблица, которую вы видите на экране, визуальная таблица с данными. [/CODE] a = AllocTable() -- здесь переменная a содержит в программе идентификатор визуально отображаемой таблицы в терминале QUIK -- дальше вы знаете как работать с такой таблицей, раз у вас она отображается[/CODE]
Теперь понимаете? вы в своём вопросе смешали в кучу две эти совершенно разные "концепции", называемые, к сожалению, одним термином "таблица".
Цитата
и в итоге: attempt to call a nil value (global 'SaveTable')
Потому что штатно нет в QLua функции SaveTable(t_id, SaveResalt) Вам надо найти реализацию нагугленной вами этой функции или написать ее самостоятельно. Замечу, что в данном случае будет идти речь про сохранение значений из "таблицы" в смысле 1), а никак не про визуальные!
Не могу заставить работать функцию Subscribe_Level_II_Quotes()
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
01.04.2022 08:55:50
Цитата
Вася написал: цикл убрать, то функция отрабатывает и отписки не происходит.
Как определили, что не происходит?
не все то золото, что блестит
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
28.03.2022 06:06:53
Цитата
Старатель написал: Но существует такая вещь, как маржинальная торговля. Есть бумаги разного типа: маржинальные/не маржинальные
А еще есть комиссия. Которая не всегда просто процент от суммы сделки.
Бесконечный цикл функции с заданным интервалом времени
Вы не можете заменить заявку ..., так как ее обработка еще не завершена.
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
21.02.2022 07:58:45
Цитата
Старатель написал: Так тут вопросов больше не брокеру, а к разработчику. Обработкой заявок занимается торговая система биржи. Какой смысл обрабатывать заявку, если пользователь хочет её снять? Это лишняя работа.
Заявка уже в обработке на бирже. По поводу кому какой вопрос - у разработчиков просто недостаточно информации, чтобы предметно ответить на ваш вопрос. Более того, у вас просто нет требуемой им информации. Но есть у брокера, потому и просят зайти через брокера.
Последовательность статусов лимитной заявки
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
21.02.2022 07:54:21
Все верно. Не ожидайте какого-либо последовательного изменения статусов. Заявка к вам может приехать в любом статусе, как сразу исполнена, так и частично исполнена, так и сразу снята.
Бесконечный цикл функции с заданным интервалом времени
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
21.02.2022 07:52:18
Володя, ты бы прежде чем дебилами разбрасываться, свой пример привёл в этой ветке. Идиот хренов.
Как грамотно сделать функцию OnStop() последней в теле скрипта?, Скудное описание функции обратного вызова OnStop() в официальной документации
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
07.02.2022 22:24:42
Цитата
Денис написал: Прежде всего, низкий Вам поклон за Ваш форум, если бы не он, я бы бросил изучать Lua ровно там же, где и начал.
Спасибо Вам на добром слове
Цитата
Например, в скрипте получены значения переменных и он должен просто их сложить. Все прекрасно до тех пор, пока не нажата кнопка "Остановить" - тут скрипт вылетает со словами "Не могу сложить а и б, потому что б равно nil. С какого перепугу, имеющая определенное значение переменная б, вдруг, его теряет после отработки функции OnStop?
Тут бы пример. Честно говоря не верится мне, что если OnStop() содержит только { Stopped = true; return 5; } то переменные, используемые только в main() внезапно становятся равными nil после этого. Ну а по примеру уже можно было бы и подсказать что там не так.
Как грамотно сделать функцию OnStop() последней в теле скрипта?, Скудное описание функции обратного вызова OnStop() в официальной документации
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
07.02.2022 19:32:38
2. Из OnStop() возвращаем 0 Зачем? принуждаем QUIK мгновенно по выходу из OnStop() прибиваь поток main() - чтобы что? чтобы не дать функции потока корректно доработать (хотя доработает она очень быстро в приведенном слуучае), т.к. взводим флаг Stopped Делаем всё, чтобы насильно прибить потоковую функцию, от нее ожидаемо повисают сопли незакрытых ресурсов, куски незафинализированных вызовов Lua. А после - удивительно! - оставшаяся часть софта начинает глючить (и я подозреваю, что QUIK эти 5..7 минут не просто сам по себе живет, наверняка выполняются другие Lua-скрипты)
Ну т.е. сделано все, чтобы ожидаемо получить глюки. Но зачем?? В чем ценность этой демонстрации?
Как грамотно сделать функцию OnStop() последней в теле скрипта?, Скудное описание функции обратного вызова OnStop() в официальной документации
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
07.02.2022 19:28:00
(это рука-лицо а не форум)
Как грамотно сделать функцию OnStop() последней в теле скрипта?, Скудное описание функции обратного вызова OnStop() в официальной документации
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
07.02.2022 19:27:33
По-моему, код в первом сообщении специально написан так, чтобы максимально пройтись по граблям.
1. Открываем файл в main(), а закрываем зачем-то в другом потоке в OnStop(). Это и само по себе некрасиво просто-напросто (открывать в одном месте, в закрывать в другом, совершенно не связанном ни визуально, ни логически), да еще и ожидаемое может приводить (и приводит) к появлению сообщения "attempt to use a closed file", механизм появления которого вполне понятен. (нет? уточните, мне не сложно, напишу, но потом, не буду это сообщение разбухать).2.
MySQL и кириллица
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
03.02.2022 07:36:14
Если записать в QLuа, потом прочитать в QLua и отобразить в quik через message данные - корректно отобразится? Если да - разбирайтесь с тем средством, каким вы просматривает базу , там проблема
Скрипт для перезапуска другого скрипта
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
10.01.2022 06:44:12
Цитата
Aleb написал: Подскажите, можно ли написать скрипт, который бы перезапускал первый скрипт допустим раз в день в определенное время.
Тут все умело постебались. Но ответ прост: возможности такой нет. Обратитесь к автору dll, пусть устранит проблему с потреблением памяти.
Как из скрипта открыть окно на нужной вкладке?
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
09.01.2022 09:04:51
Вот здесь все описано
как мне скомпилировать или достать luasql
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
09.01.2022 09:01:57
Цитата
но на выходе только mysql.dll, как получить luasql.mysql
Так вам и нужна mysql.dll Просто ее надо положить в папку luasql внутри quik, и тогда, по правилам библиотек Lua, возьмётся библиотека luasql/mysql.dll при загрузке require("luasql.mysql ")
Вопрос по написанию скрипта
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
08.12.2021 08:46:16
Да, предоставляет
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
08.12.2021 07:23:11
Не баг, а фича :D И вообще не до этих мелочей
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
Деградация от версии к версии определённо печалит. Хоть я и поставил бы под сомнение корректность некоторых полученных результатов (v(0) больше, чем v(10000000) ??). Но, похоже, в 9.3 точно случилось что-то.
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
написал: если вы просто возьмете Луа без привязки к квик - вызов среди десятков тысяч переменных тоже будет тормозить.
Пруф в студию.
Для экспериментов возьмем online lua Результаты выходят не очень стабильными, но все же проведя пару десятков экспериментов и выкинув пару экстремально отличающихся результатов, получил следующее время выполнения: 100 глобальных переменных - 1,4753 сек 100 тыс. глобальных переменных - 1,5608 сек
Да, разница не фантастически великая. Но какая-то явно есть. Разница много меньше, чем в ваших экспериментах внутри квика, это стоит отметить.
Тестовый код:
Скрытый текст
Код
local function v(n)
for i = n, 1,-1 do
_G["v"..i] = i % 100
end
end
v(100000) -- max 100000 by memory limit
local t = os.clock()
for i = 0, 50000000 do
v56 = v75
end
t = os.clock() - t
print(tostring(v56))
print("time:"..tostring(t))
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
03.12.2021 13:03:31
Только сейчас разглядел создание 50 тыс глобальных переменных Ну и чего вы хотите? функция в ЛУА - это просто глобальная переменная типа "функция". Чтобы функцию вызвать - ее надо найти, на это, очевидно, уходит время. Давайте десятки миллионов глобальных переменных создадим и будем требовать оптимизации. Зачем? кому интересен этот сценарий??
Уверен, если вы просто возьмете Луа без привязки к квик - вызов среди десятков тысяч переменных тоже будет тормозить. Т.е. это такое вполне понятное свойство интерптетатора Луа. Просто не надо заводить десятки тысяч глобальных переменных.
Так что в данном случае я согласен с первыми высказавшимися "флудерам". Завалить можно любую систему. Вот только не со всеми "завалами" есть смысл разбираться, ибо некоторые из них (как здесь) будут сугубо не жизненные.
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
03.12.2021 10:12:21
Я про приведённый скрипт. А если main убрать - станет лучше? В целом в самом деле не понятно по каким критериям вы говорите, что есть загрузка процессора. А совсем этот скрипт остановить - какая загрузка? А запустить скрипт какая загрузка? И сколько ядер у вас процессор, чтобы отмасштабировать цифры. Потому как "большая загрузка" - не понятная вводная. Надо бы знать что такое небольшая для вас и наоборот что большая, в цифрах. Чтобы масштаб проблемы был понятен.
Все-же скрипты с кольеками есть буквально у всех и как-то не особо слышно чтобы тормозил от колбеков так, что прям работать невозможно.
[BUG] Повышенная загрузка CPU при большом количестве функций в скрипте
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
03.12.2021 10:07:40
А если колбеки убрать станет лучше? И какие именно колбеки убрать, от убирания которых становится лучше?
Не всегда исполняется require в начале скрипта
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
03.12.2021 09:54:23
Нет, вы не описали "простой случай". Вы написали свои фантазии про неввполняющийся require. После и вовсе пустились в какие-то фантащийные рассуждения о причинах. Описывать же следует только факты. Т.е. последовательность ваших действий и наблюдаемые эффекты. Просто рекомендация для будущих сообщений
Не всегда исполняется require в начале скрипта
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
02.12.2021 17:36:05
Предлагаю просто вот это вот "переопределял глобальную системную ф-цию" вынести в отдельную функцию в модуле, а не в общем коде. И добавить вызов этой функции в вашем скрипте после require
Вообще ваше исходное сообщение очень путанное. лучше бы вы описали последовательность действий, приводящих в ошибке. Как я понял - при повторном запуске того же самого скрипта не не работает переопределение глобальных функций, описанное в подгружаемом через require модуле.