запуск GUI на lua дистрибутиве отдельном от quik, qvcl gui на 32bit lua
Пользователь
Сообщений: Регистрация: 21.03.2016
14.09.2020 23:24:38
У меня до сегодня был прекрасный интерфейс к роботу на библиотеке qvcl, но в связи с тем что сегодня все квики только 64bit а qvcl там не работает, то было принято решение запускать gui на 32bit Lua отдельном от quik.
Всё запустилось и основной необходимый мне функционал работает (кнопочки жмутся, данные шлются в квик через файл), но весь код который после инициализации окна ShowModal не запускается пока окно не закроется - я не могу обновлять данные в окне автоматически (вслед за обновлённым файлом настроек окна). Если окно инициировать по Show и после него ставить вечный цикл с синтетическим sleep на основе ping (в неквиковом lua функции sleep нет) то окно зависает. Есть у кого-нибудь идея, как, не закрывая окно, после его инициализации сделать цикл типа функции main в квиковом lua из которого можно было бы менять настройки окна?
Библиотека qvcl x64. Отрисовка интерфесов в восьмом квике
Пользователь
Сообщений: Регистрация: 21.03.2016
26.07.2020 20:08:30
Кто-нибудь смог запустить qvcl на восьмом квике? У меня обе версии выложенные здесь не подгружаются
Есть ещё vcl пятой версии на 64 бита, но она тоже не полетела
Вообще не понятно на чём интерфейс рисовать. Кто как вышел из этой ситуации? Отдельный от чтоль от квика софт писать и подключать по сокетам?
контроль исколнения многоконтрактовой заявки в quik 8.6
Пользователь
Сообщений: Регистрация: 21.03.2016
19.07.2020 11:43:50
Всем большое спасибо! Много полезного нашёл ещё здесь
контроль исколнения многоконтрактовой заявки в quik 8.6
Пользователь
Сообщений: Регистрация: 21.03.2016
18.07.2020 19:35:00
Уважаемые мэтры роботизированной торговли,
Очень давно мной был написан робот, но последняя версия квика на которой он адекватно работает это 6.17 - потом что-то обновили в серверной филармонии и OnTrade() в следующей версии квика при случившейся сделке вместо одного раза начал срабатывать два раза, поэтому до сего дня скрипт успешно крутится на quik 6.17, но всвязи с очередным подарком биржи гдрядёт неизбежный переезд на quik 8.6. Засим вопрос к многоуважаемой аудитории:
Как лучше всего контролировать процесс исполения заявки скажем на 20 контрактов? Я отправляю заявку под своим номером, по OnOrder() я получаю номер заявки в системе, дальше по OnTrade() будут сыпаться сделки по допустим одному контракту (и по предыдущему опыту подозреваю что при сделке на один контракт OnTrade() может срабатывать дважды) - как это всё контролировать? Есть идея вытавлять пулемётной очередью 20 заявок по одному контракту вместо одной заявки на 20 контрактов - но тут будет нюанс с ограничением биржи на 50 заявок в секунду, таких очередей в скунду может быть больше трёх.
Не подскажите как разрешить вопрос контроля исполнения многоконтрактной заявки наиболее интеллегентым методом? Заранее спасибо
написал: Subscribe_Level_II_Quotes("SPBFUT", "SiH0") я правильно использовал
Вроде правильно. Только подождать надо после подписки, не сразу getQuoteLevel2 дергать, а то заказанное еще не приехало скорей всего. Или в цикле со слипами подергать, пока не приедет, или в колбек OnQuote засунуть, там уж точно что-то приехало, раз колбек дернули.
разделюящий блок
while status == nil
sleep (10)
end
это ок, или в нём скрипт может зациклиться если перебои с инетом, итд? как-то по другому может лучше? Спасибо заранее!
проблемы с getQuoteLevel2
Пользователь
Сообщений: Регистрация: 21.03.2016
20.03.2020 21:00:54
аааааааа, спасибо!)) посмеялся. Бывает.
Subscribe_Level_II_Quotes("SPBFUT", "SiH0") я правильно использовал, или её как-то по другому используют?
проблемы с getQuoteLevel2
Пользователь
Сообщений: Регистрация: 21.03.2016
20.03.2020 20:38:56
local status = Subscribe_Level_II_Quotes("SPBFUT", "SiH0")
не нашёл где править сообщение, правильная последовательность строк:
local status = Subscribe_Level_II_Quotes("SPBFUT", "SiH0") local data = getQuoteLevel2("SPBFUT", "SiH0").bidmessage ("test " .. tostring(status) .. " " .. tostring(data))
проблемы с getQuoteLevel2
Пользователь
Сообщений: Регистрация: 21.03.2016
20.03.2020 20:36:15
Добрый день, есть скрипт который год не запускал. Что-то поменяли на сервере и он поломался, не знаете почему во второй строке в data получается nil? (первую строчку я добавил исходя из рекомендаций в одном из недавних топиков, но она не помогла)
local status = Subscribe_Level_II_Quotes("SPBFUT", "SiH0")local data = getQuoteLevel2("SPBFUT", "SiH0").bid message ("test " .. tostring(status) .. " " .. tostring(data))
getNumCandles() не видит индикатор при нереносе скрипта через ночь
Пользователь
Сообщений: Регистрация: 21.03.2016
13.02.2017 00:19:23
Цитата
написал:
все правильно, так и должно быть. В момент утренней инициализации графики в моменте пусты и соответственно индикаторов еще тоже нет. После чего графики отрисовываются и индикаторы начинают рассчитываться.
автор скрипта не предусмотрел эту ситуацию, укажите ему на нее.
не понимаю. Есть цикл:
local candles = getNumCandles(gazprom) while candles ==0 do sleep (1000) candles = getNumCandles(gazprom) end
почему в нём в 10:00:01 будет нулевое количество свечей? График живой, индикатор строится.
getNumCandles() не видит индикатор при нереносе скрипта через ночь
Пользователь
Сообщений: Регистрация: 21.03.2016
12.02.2017 23:04:54
Всем привет! Есть робот который должен работать круглосуточно без перезапусков по утрам. Сейчас с ним есть одна проблема: если квик не перезагружать утром, то getNumCandles() исправно работающий всю сессию выдаёт ноль в качестве количества свечек.
Что-то из серии:
local candles = getNumCandles(gazprom) while candles ==0 do sleep (1000) candles = getNumCandles(gazprom) end
- не помогает. Только перезапуск. Индикатор в это время на графике живой. Есть какие-нибудь советы?
P.S. иногда в процентах 10 случаев этой ошибки утром нет - робот спит ночью и утром в 10:00 продолжает работать
Не работают флаги ["Дата экспирации"] и ["Expiration date"] в SendTransaction
Не работают флаги ["Дата экспирации"] и ["Expiration date"] в SendTransaction
Пользователь
Сообщений: Регистрация: 21.03.2016
24.03.2016 00:27:46
Цитата
Владимир написал: Ответ есть в ветке от Егора. Дело в том что, установив Move order=Yes;Expiration date=20160323 заявка создается без этих параметров. Версии терминалов 7.1.0.371 и 7.0.4.10. Егор, можете прокомментировать???
а я именно так всё и делаю. Не работает...
Т.е. создаю tri файл (причём делал как английскую, так и русскую версию), беру от туда нужные поля, но дата действия заявки не работает. Было подозрение на региональные настройки Windows с кучей форматов YYMMDD, YYYYMMDD, YY.MM.DD, MM/DD/YYYY - попробовал менять, не помогло.
Вопрос к сожалению никак не отвечен пока. Как видно я не один такой, с проблемой даты лимитированых заявок
Не работают флаги ["Дата экспирации"] и ["Expiration date"] в SendTransaction
Пользователь
Сообщений: Регистрация: 21.03.2016
23.03.2016 12:37:40
в вопросе не написал второй флаг, исправляюсь: Это флаги Move order=Yes (в русской версии tri файла: Переносить заявку=Да) и Expiration date=20160613 (в русской версии tri файла: Дата экспирации=20160613)
Не работают флаги ["Дата экспирации"] и ["Expiration date"] в SendTransaction
Пользователь
Сообщений: Регистрация: 21.03.2016
23.03.2016 12:31:26
Для выставления лимитированных заявок с длинным сроком жизни я взял соответсвующие поля из tri файла подобной заявки. Это флаги Move order=Yes (в русской версии tri файла: Переносить заявку=Да)
Из этих двух полей при выставлении заявки через Lua работает только Move order (заявка переносится через вчерний клиринг, и умирает на следующий день). Поле Expiration date не работает :-( Дату я пытался выставлять как YYYYMMDD так и как YYMMDD. Не подскажите, в чём может быть причина?
Заявка сейчас успешно выставляется в такой форме. Работает всё, кроме последнего поля.
мне необходимо, чтобы заявки переносились через вечерний клиринг. Для этого я из tri файла подобной заявки взял поля Move order = "Yea" и Expiration date = 20160620". К сожалению эти поля имеют пробел в своём названии, и lua не хочет их переваривать. Как это можно вылечить?