В общем, значение слипа надо ставить минимум 1, тогда ничего не виснет. А выбирать адекватное значение уже в зависимости от требований конкретно вашей стратегии.
написал: Другими словами, конструкция без слипа, типа такой
Код
function main ()
a = 0
is_run = true
while is_run do
a = a + 1
end
end
может легко повешать квик.
Нет. Если процессор одноядерный - да, это будет заметно в скорости общей работы. Если процессор многоядерный (а это нынче стандарт де-факто) - то никто ничего даже не заметит, кроме термометра на процессоре.
Попробуйте, запустите Ryzen 5 3500x на 6 ядер, квик скопытился после запуска
Эвента на изменение таблицы "Клиентский портфель"
Пользователь
Сообщений: Регистрация: 20.12.2020
03.02.2021 19:42:11
Цитата
Михаил Филимонов написал: и последний вопрос. Я никогда не использую функцию sleep, но в скриптах LUA, как я понял, это необходимость
В конструкции
function OnStop() is_run = false end
function main() while is_run do sleep(??????) end end
Какое значение в sleep(??) лучше ставить, чтобы скрипт работал как можно быстрее
sleep необходим чтобы дополнительный поток квика не загрузил ядро процессора наглухо.
Другими словами, конструкция без слипа, типа такой
Код
function main()
a=0
is_run = true
while is_run do
a=a+1
end
end
может легко повешать квик.
А значение выбирается исходя из разумности и целесообразности для конкретно вашей стратегии торговли.
Для кого-то раз в час нормально, а кому-то 10 раз в секунду надо проверять.
Естественно, чем меньше значение тем меньше задержка. 1 значение = 1/1000 секунды
Что происходит утром?
Пользователь
Сообщений: Регистрация: 20.12.2020
01.02.2021 19:02:39
Цитата
КВИК на виртуалке не имеет постоянного доступа к ноутбуку. Я вышел с виртуалки, и связь с ноутбуком пропала. Но я рассчитываю, что считанные данные останутся в памяти.
Я правильно понимаю что...
Квик на виртуалке, вы закрыли вечером виртуалку, виртуальная машина задампилась, и вы надеятесь, что когда утром включите виртуальную машину, то скрипт продолжит работу с того момента на котором закрыли виртуалку?
Ладно, поиграем в Нострдамуса. Пока VM была выключена, связь с сервером, естественно, оборвалась по таймауту, а в скрипте стоит какая-нибудь проверка на наличие подключения типа onConnect() и при отсутствии подключения что-нибудь там сбрасывается в дефолтные значения и т.д и т.п.
PS: Есть еще вариант, что скрипты при таком "издевательстве" и правда перезапустятся. Эту теорию, думаю, сами можете без проблем проверить простеньким скриптом, который крутится в вечном цикле и при старте выводит какое-нибудь сообщение.
Что происходит утром?
Пользователь
Сообщений: Регистрация: 20.12.2020
01.02.2021 15:54:59
Цитата
Уточните пожалуйста что происходит утром в плане: -работы main -существования переменных и таблиц скрипта.
Что запрограммировано, то и происходит. Ничем принципиальным утро от другого времени не отличается.
Не видя кода только можно гадать, что у вас там запрограммировано.
Смотрите почему у вас main повторно запускается, и как скрипт обрабатывает потерю связи, короче код смотрите.
Фильтрация сообщений, Надоели ненужные сообщения
Пользователь
Сообщений: Регистрация: 20.12.2020
01.02.2021 11:27:35
Добрый день. Постоянно в окно сообщений валятся ненужные сообщения от биржи. Например такие: "[FORTS] Уважаемые клиенты, если цена останется на текущем уровне в течение 3 минут, то торги фьючерсами SLV будут приостановлены для 1-ого расширения верхней границы диапазона оценки ценового коридора и рыночных рисков"
А мне вот на фьючерс SLV вообще плевать, не торгую им и не собираюсь.
Причем не одно-два сообщения приходят, а в определенные моменты по 30-40 за 10 минут вываливаются. Полностью отключить сообщения не предлагайте, ибо иногда и правда что-нибудь полезное приходит. Но вот этот "официальный спам" надоел.
Можно ли реализовать фильтрацию сообщений, по типу подписок? Чтобы можно было бы указать по каким инструментам меня интересуют сообщения, а по каким нет.
Другими словами, чтобы биржа/брокер при отправке сообщения соотносили бы ее к определенному типу/инструменту, а со стороны клиента можно бы было выбирать какие сообщения видеть, а какие нет.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
Пользователь
Сообщений: Регистрация: 20.12.2020
31.01.2021 15:41:43
TGB, вроде много пишите, а вот не цепляет и все. Просто вот читаю и понимаю, что вроде что-то может быть даже и нужное, но вот зачем оно мне и какие преимущества даст совершенно не понятно.
Вы хоть как-то заинтересуйте аудиторию то. Видео с обзором своей разработки снимите что ли, да на какой нибудь ютуб залейте. И покажите, мол с помощью данной разработки можно делать то-то и то-то чего на квике не реализовать, и чтобы это был не сферический конь в вакууме, а что-либо реально нужное людям.
Короче, грамотный рекламщик вам нужен, если хотите в массы свой софт пустить.
Остановка (зависание)
Пользователь
Сообщений: Регистрация: 20.12.2020
28.01.2021 19:59:05
Цитата
Евгений написал: Кнопки свернуть, закрыть, восстановить. Нажатие мышкой один раз и держать не отпуская. Если отпустить на кнопке клавишу то выполнится действие. Это так и должно быть, это стандартное поведение?
Это стандартное поведение клика мышкой в ОС
ищу инвестора для сотрудничества, закончил разработку робота для интрадей
Пользователь
Сообщений: Регистрация: 20.12.2020
28.01.2021 18:53:17
Цитата
swerg написал: Два пользователя с одним ни ком?! "А что, так можно было?!"
Комиссия торговой системы - это комиссия квик? Можно где-то почитать, как она вычисляется?
Это комиссия Московской биржи. Смотреть в параметрах интересующего инструмента, комиссия незначительно меняется каждый день. Например по фьючу SiH1 смотреть тут
Выскакивает ворнинг "Compare string with number", А его не должно быть, по идее!
Пользователь
Сообщений: Регистрация: 20.12.2020
24.01.2021 18:57:59
Так вы код то покажите нормально. Сравнение которое вы указали где в коде расположено? Телепаты в отпуске
PS: SERVERTIME в нерабочее время биржи может показывать все что угодно. Для определения времени уж лучше os.date() использовать
не актуальный TRADINGSTATUS
Пользователь
Сообщений: Регистрация: 20.12.2020
21.01.2021 08:31:17
вместо TRADINGSTATUS используйте STATUS
Quik 8.11 Не сохраняются настройки в новой таблице Получение данных - Котировки
Пользователь
Сообщений: Регистрация: 20.12.2020
20.01.2021 18:29:33
Наблюдаю аналогичную проблему
Настройки->Программа->Получение данных->Котировки Галочка стоит "По выбранным классам" Выбираю нужный мне класс, ставлю фильтр на инструменты и параметры, тыкаю сохранить. Если сейчас просто перезапустить терминал, то после перезапуска сохранения не будет.
Однако нашел способ обойти этот косяк. После сохранения отключаемся и заново подключаемся к серверу, теперь если перезапустить терминал, все сохранится. Такое ощущение, что настройки котировок сохраняются в момент подключения к серверу брокера.
QUIK 8.11.0.66, брокер Открытие
ParamRequest и getParamEx2, Как получить актуальные данные через getParamEx2?
Пользователь
Сообщений: Регистрация: 20.12.2020
20.01.2021 17:41:06
Как временное решение, перезапуск квика с параметром "-clear", тогда кеш будет чистый, и определить что данные еще не загружены легко. Например для числовых значений getParamEx2 будет возвращать всегда 0 А адекватное на мой взгляд решение должно быть таким: При заказе подписки ParamRequest должен не просто слать запрос на подписку на сервер, а еще и получать в ответ от сервера актуальные данные и кидать их в кеш ТТТ При отмене подписки на параметр в кеш ТТТ должен заноситься nil
Ошибка в работе lua скрипта в quik 8.8.4.3
Пользователь
Сообщений: Регистрация: 20.12.2020
13.01.2021 16:46:30
Цитата
foobar написал: Ничего не накручивал, скрипт писался под 8.1, я с тех пор его не трогал, работает и работает. И 5.1 dll в директории Квика есть. Обновлю, конечно, как вспомню как я компилировал dll, это 3 года назад было.
Интересно и непонятно. А в окне доступных скриптов, около кнопки запуска стрелка вниз есть, если на нее нажать, какие варианты запуска у вас показывает? И запустится ли скрипт, если выбрать "Запустить в Lua 5.3.5" или "Запустить в Lua 5.4.1"?
Ошибка в работе lua скрипта в quik 8.8.4.3
Пользователь
Сообщений: Регистрация: 20.12.2020
13.01.2021 10:51:44
Цитата
foobar написал: Кстати, lua 5.1 поддерживается Квиком. У меня работают написанные под lua 5.1 скрипты в 8.11.0.66
В версии QUIK 8.11.0.66 поддерживаются lua 5.3.5 и 5.4.1 Lua 5.1 выпилили из квика (хотя и не до конца, библиотеку почему-то оставили)
Другой вопрос, что если скрипт написанный для lua 5.1 не скомпилирован, то он вполне может работать в новых версиях lua, если изменения языка не коснулись логики конкретно вашего скрипта.
Ошибка в работе lua скрипта в quik 8.8.4.3
Пользователь
Сообщений: Регистрация: 20.12.2020
12.01.2021 19:27:40
Цитата
Максим написал: Купил робот-сканера, сделал все как рассказывает автор на инструкции, но при запуске скрипта выдаёт ошибку: C:\ClassesC\class.luac: version mismatch in precompiled chunk. Автор на видео пользуется версией квика, начинающейся на цифру 7.. у меня уже 8.8.4.3.. скорее всего, скрипт написан тоже на старую версию квика. Что в подобной ситуации можно предпринять? Какие есть варианты решения проблемы? В языке Lua являюсь нубом).
Правильный вариант уже подсказали, это попросить автора дать робота под актуальную версию lua Если робот представлен скриптом без dll`ек, то можно попытаться декомпилировать скрипт, погуглите про утилитку luadec.exe
Что то мне подсказывает, что с типизацией могут быть проблемы. Попробуйте
Код
if(tonumber(x1)>tonumber(x2))then
else
end
Я новичок, мне нужно знать как отправлять заявку по текущей цене(купля).
Пользователь
Сообщений: Регистрация: 20.12.2020
07.01.2021 11:59:48
Так у вас скрипт сразу же после запуски пытается купить, но OnQuote еще не получил price_buy Вот и получается, что отправляете транзакцию с пустой ценой
Уберите всплывание окна QUIK на передний план в момент загрузки
Пользователь
Сообщений: Регистрация: 20.12.2020
29.12.2020 16:05:39
Цитата
Александр написал: Действительно, имеется такая проблема, дело не в тормознутости квика, у меня тоже выскакивает окно ввода логина - пароля на передний план, поверх всех окон, даже если будеш смотреть какие - нибудь новости. Окно авторизации вскочит поверх всех окон, что очень неудобно.
Во первых. Если отвалился у вас quik, естественно, об этом необходимо узнать, и чем быстрее, тем лучше. Вы же в нем деньги зарабатываете, ну или просераете. Так что всплывание окна логина не передний план, это более чем логично и правильно.
Во вторых. На нормальном железе и чистой системе quik летает. У меня четыре-пять секунд до окна логина грузится, более чем приемлемо.
Ну и в третьих. Как можно на одном компе и квик рабочий держать и другими делами заниматься? Надо же понимать риски. Всякие вирусы еще не хватало подцепить, да или просто система глюкнет не во время, и из-за этого сделку просрете. Отдельный комп, чистая обновленная система и квик.
ищу инвестора для сотрудничества, закончил разработку робота для интрадей
Пользователь
Сообщений: Регистрация: 20.12.2020
26.12.2020 17:07:46
Проверка стратегии по истории, и реальная торговля две очень большие разницы.
Сам тоже роботом торгую, так вот, если по истории смотреть уже давно миллиардером бы стал, но мечты бьются об суровую реальность. То гэп словил, то ликвидности не хватило, то цена показывает такие кульбиты, которых раньше не было. Так что сначала в боевых условиях погоняй хотя бы с полгодика.
Вопросы Новичка
Пользователь
Сообщений: Регистрация: 20.12.2020
21.12.2020 20:50:20
Цитата
Афонькин написал: продолжаем с вопросам (главное что бы мои вопросы не оказались без ответа - а посмотрев на мои вопросы-ответы ( типа сам написал сам ответил или напортачил с синтаксисом ) никто и не захочет помогать)
Вопрос № 4
Ситуация : сделан индикатор, расширенте файла . lua . в файле есть и Settings и Init() и function OnCalculate(Index) файл находиться в папке - C:\GPB-i-Trade QUIK_x64\LuaIndicators всё по книге - а Quik его не видит ! До этого был опыт - и все прошло нормально. Работало норм. Хотя, теперь удалив этот файл - он все равно виден в списке индикаторов Вообщем, не могу понять логику появления/исчезания индикатора. Может есть хитрость ?
При наличии синтаксических ошибок индикатор в списке виден не будет А вот чтобы удаленный индикатор оставался виден в списке, такого не встречал.
Как вариант может у вас несколько терминалов и вы не в нужный терминал файл индикатора кладете/удаляете?
Инструменты технического анализа, Доступ и Lua
Пользователь
Сообщений: Регистрация: 20.12.2020
20.12.2020 18:53:22
Цитата
Владимир написал: , А это уж как кому заблагорассудится. Лично я плюю на них на всех с высокой колокольни. ::
Подозреваю, что вопрос был в том, как достучаться до индикаторов из скрипта
os.date() утечка памяти или нет?, при использовании os.date() память потребляемая скриптом растет
Пользователь
Сообщений: Регистрация: 20.12.2020
20.12.2020 18:35:37
Цитата
написал: Ну а что же удивляет?
Но время работы os.date резервируется буфер в памяти. Когда таких вызовов много, вы можете увидеть изменение занимаемой скриптом памяти даже глазами.
Сборщик мусора все эти огрызки памяти освобождает одним проходом.
Именно это и удивляет. То что резервируется буфер в памяти это понятно, непонятно, то что этот буфер функция сама не освобождает после отработки и приходится ждать сборщика мусора.
Если считаете что это нормальная работа функции с памятью, то приведите хотя бы пару примеров таких же "голодных" на память функций в lua. Я вот единственную такую нашел.
os.date() утечка памяти или нет?, при использовании os.date() память потребляемая скриптом растет
Пользователь
Сообщений: Регистрация: 20.12.2020
20.12.2020 16:12:29
Добрый день.
Заметил, что при использовании в скриптах функции os.date() память потребляемая скриптом (смотрю в окне Доступные скрипты) растет до определенного предела, через некоторое время память возвращается к первоначальному объему.
Пример скрипта
Код
is_run=true
function main()
while is_run do
os.date()
sleep(100)
end
end
function OnStop()
is_run=false
end
Почему подозреваю именно утечку? 1) Память увеличивается при обновлении данных функцией. Пример: os.date("%H%M%S") увеличение потребляемой памяти раз в секунду, os.date("%H%M") тут уже раз в минуту. 2) Проблема именно с данной функцией. Например если вместо os.date() использовать os.time(), то потребляемая память не увеличивается. 3) После определенного предела, память очищается до первоначального состояния. Как будто срабатывает сборщик мусора.
Используемая версия quik 8.9.0.107, на более старых версиях наблюдал такую же картину.