swerg (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 25 След.
callback OnAllTrade, поля exchange_code & exec_market
 
Ну вот вам и ответ ;)
В луа же нет волшебства, информации там не больше, чем в терминале
callback OnAllTrade, поля exchange_code & exec_market
 
А терминал в своей таблице соответствующие параметры показывает?
[BUG] CreateDataSource не заказывает обезличенные сделки
 
Что увивительно: вы подробно и многословно излагает ваши домыслы и предположения, а также оценки. В то же время ваши "баг репорты" (ну вам так кажется, что это баг репорты, судя по оформлению) крайне скудны и даже бесполезны именно из-за этой скудности; т.е. явно видно, что это слив эмоций, о чем я и пишу.
Я же, в свою очередь, хотел бы пробудить вас к конструктиву, ибо лишь конструктив способен изменить мир. И именно изменение мира мне бы хотелось видеть.
Да, я бы хотел пробудить вас к большему конструктив.

Ну а уж приносить конструктив в ваши сообщения для всеобщего блага или продолжать лишь бессмысленный слив эмоций - это ваше решение, это ваша жизнь; наполнять её смыслом или нет - решать вам.
[BUG] CreateDataSource не заказывает обезличенные сделки
 
Я ж и говорю
Ответ вам не нужен, да и вопроса нет
Используете форум для слива эмоций
Вот бы понять как так выходит
[BUG] CreateDataSource не заказывает обезличенные сделки
 
Что за список удаления? Какой именно скрипт? Какова последовательность действий+не поеять
Эмоции, как обычнo, впереди.
повторный Init() без OnDestroy() в индикаторе, При смене инструмента графика в Lua индикаторе перечитывается файл без предварительного срабатывания OnDestroy()
 
Цитата
Владимир написал:
Я всё-таки пробежался по сообщениям службы техподдержки.
Слова же "Ваше пожелание было реализовано в версии X.X.X терминала QUIK" встретились лишь 6 раз.

Гугл не согласен:

Цитата
Результатов: примерно 53 (0,28 сек.)
CreateDataSourse при разорванном соединении
 
Точно - никак. Лишь по косвенным признакам.
Quik_9.1.0 не загружается
 
Цитата
Старатель написал:
Про CQ01954637 тоже месяцами врали, что не воспроизводится и про CQ01939238 и мн. др... Потом признались, что проблема действительно есть.

Я таки сомневаюсь что "врали". В самом деле не воспроизводилось. Потом удалось нащупать условия.
Часто пользователю кажется, что "так всегда", а по факту у него - комплекс неких частных условий. Причем возможно даже массовых, но отличающихся от тех, в каких живут разработчики по массе разных причин (очевидно, например, что разработчики не гоняют QUIK месяцами не закрывая; наоборот, постоянно перезапускают для проверки новодела).

Впрочем, это не объясняет не поправляемых годами признанных (т.е. воспроизведенных) проблем.
Добавить функции QLUA "Поверх всех окон" и "Показывать на всех"
 
Цитата
Незнайка написал:
тем боле что QUIK с библиотеками работает не стабильно.

Неправда ваша.
Нехватка видеопамяти
 
Цитата
Владимир написал:
Так свечи считаются НА КЛИЕНТЕ?! И месячные тоже?!

В пределах текущей торговой сессии.
Предыдущие (в том числе, когда эта сессия становится уже прошлой) подгружаются готовые с сервера.

Цитата
Владимир написал:
Это же ужам какой-то, доставать свечи из графика!

Руки выпрями, придурок.
Подскажите как отправлять инфу из QUIK в телеграм?
 
В гугле забанили? тьма ж ссылок разных
Вот, например: https://quik2dde.ru/viewtopic.php?id=307
Еще один вопрос про потоки
 
Цитата
Владимир написал:
Ну ведь растопчу и проглочу, как это уже не раз бывало.   У нас просто разные весовые категории

Дурач0к, тебя просто обходят как какашку, чтобы не заляпаться.
А ты тупой башкой фантазируешь, что кого-то растоптал своим поносом.
Перемещение заявки 2 транзакциями
 
Цитата
Андрей написал:
Или вы про колбек OnMoneyLimit? Я не измерял насколько он раньше, чем 1й onTransReply, но экспериментально видел, что за 50мс отправлять создание не получается.
Изначально речь не шла про "быстро". Речь шла про "ненадежно". Именно в этом разрезе я вам и пишу.
И т.к. нужна надежность - то хоть OnMoneyLimit, лимиты по нему меняются, как изменились лимиты - точно можно ставить заявку новую.
А может и OnOrder попробовать. Еще раз подчеркну: речь про надежность, а не про "быстрее".

А если надо быстрее - долбить на все эти события, где-то да пройдет "побыстрее".
Перемещение заявки 2 транзакциями
 
Цитата
Андрей написал:
В идеале предлагаю реализовать эмуляцию типа транзакции MOVE_ORDERS в системе QUIK, раз этого нет в биржевом интерфейсе.

Есть такой модель "алгоритмической торговли"
https://arqatech.com/ru/products/quik/modules/infrastructure-solutions/algorithmic-trading-module/

В описании move не вижу, но, думаю, по желанию заказчика смогут добавить для вас такую штуку.

Цитата
Андрей написал:
Это можно реализовать куда оптимальнее на вашей стороне, чем 2 транзакциями как сейчас.

Вы так пишете, как-будто это можно сделать как-то иначе, нежели 2-мя транзакциями на биржу.
Перемещение заявки 2 транзакциями
 
Цитата
Андрей написал:
Событийная модель и приводит к тому, что создание ордера требует паузы в 100-300мс после снятия.

После какого конкретно события 100-300мс?
(нет события "снятие заявки"; есть отправка транзакции, получения ответа на транзакцию, изменение состояния заявки, изменение состояние лимитов; давайте уже выражаться более точно, для лучшего понимания; "кто ясно мыслит <-> тот ясно излагает")

Цитата
Андрей написал:
как обеспечить функционал, аналогичный MOVE_ORDERS срочного рынка. Почему там это есть, а здесь нет?
Потому что такой функционал предоставляет секция срочного рынка.
Пишите ваши пожелания на биржу, здесь про доработки биржевого ядра писать бесполезно.

Цитата
Андрей написал:
Тогда я не совсем понимаю, чего ждет сервер QUIK от биржы на клиентский KILL_ORDER.

Сервер QUIK ждет ответа на эту транзакцию. Впрочем, этот ответ ему до лампочки, он его просто транслирует на клиента.
А после, по другому каналу (дада, мир устроен сложнее, чем вам кажется), биржа отправляет информацию об изменении статуса заявки на "снято", в результате чего сервер QUIK уже разблокирует деньги на лимитах.
Одна беда: если не ошибаюсь, сначала изменение заявки рассылается, а уж потом разблокируются лимиты, но это не точно. Впрочем, пока до клиента по сети доедет сигнал об изменении состояния заявки - скорее всего на сервере лимиты уже будут разблокированы; именно поэтому я и предложил именно на это событие реагировать; не понял только из ваших рассуждений: вы попробовали такой вариант?

Цитата
Андрей написал:
Я никак не могу отправить изменение ордера за 20мс, хотя очевидно, что лимиты позволяют.

Возможно надо просто смириться с мыслью, что в рамках обычного клиента QUIK желаемые скорости недостижимы. И надо посмотреть какие еще есть варианты роботизированных подключений; а варианты эти есть.
И что значит "лимиты позволяют"? Не торгуйте на всю котлету, если хочется чудес, торгуйте на пол-котлеты, тогда второй половины будет хватать на все эти move.

Цитата
Андрей написал:
Но без доплат )

Прикольный ты чувак :)
Quik_9.1.0 не загружается
 
Цитата
Старатель написал:
За много лет менялись компы, ОС, ЦП, ПЗУ, ОЗУ... Неизменным осталось только отсутствие таймаута ожидания при установке связи с сервером.

Фиговатый канал связи?
Особенно проблемы с демо очень удивляют.
Пусть форма заявки показывает, когда операция будет с плечом
 
В настройках можно указать "рассчитывать максимум только на собственные средства".
Перемещение заявки 2 транзакциями
 
Цитата
Андрей написал:
Проблема в том, что между этими транзакциями приходится ждать сколько-то много мс, иначе создание еще не понимает, что перед этим отправлена транзакция снятия.

Вроде бы тут как раз должна пригодиться событийная модель QLua: отправлять вторую транзакцию по изменению состояния первой заявки на "снята".

Цитата
Андрей написал:
1) Сделать вторую версию ф-ции sendTransaction, которая пропускает "проверку достаточности средств на сервере", идет сразу на биржу.

Заявки с разными ценами, так что средств от первой заявки может не хватить на вторую, так что проверка достаточности средств необходима.

Цитата
Андрей написал:
Ведь ваша проверка на сервере Quik - это как пре(дварительный)фильтр. Без него ничего страшного тоже не произойдет

Произойдёт. Потому как сервер QUIK в данном случае - единственная проверка достаточности средств в случае фондового рынка.
С точки зрения биржи (для фондового рынка) все операции выполняются на счете брокера, на весь лимит брокера.

Цитата
Андрей написал:
Без него ничего страшного тоже не произойдет - получим отказ от биржи в реплае.

Либо первая заявка "сыграет" за это время - что делать со второй?
Или сессия торговая закроется - что делать со второй заявкой? а в первой?

Однозначно "правильно" ответить на эти вопросы не представляется возможным, каждый видит приемлемый для себя вариант.

Так что только самостоятельно, ручками в своём роботе каждому придётся решать эту задачку. Сообразно своему видению правильных путей разрешения краевых сценариев.
Ошибка без указания строки в коде
 
Цитата
Let_it_go написал:
Ого, спасибо! Дельный совет.
Помогло?
Ошибка без указания строки в коде
 
Цитата
Let_it_go написал:
обычный код
я ничего необычного с ним не делал

Главное никому этот код не показывайте!

PS
номера строк в сообщениях об ошибках формирует интерпретатор  Lua. QUIK тут ни при чем, QUIK вам не поможет.
можете проверить ваш код на каком-нибудь online-Lua - результат будет тот же, я уверен (ошибка без номера строки).
Нехватка видеопамяти
 
Цитата
s_mike@rambler.ru написал:
Когда задают вопрос про версию, это означает, что никто даже и не пошевелился, чтобы найти ошибку.  Она проявляется на любой версии
ккогда спрашивают код скрипта, это означает, что никто даже не почесался прочитать первые три сообщения ветки
когда спрашивают скриншот окна сообщения, это значит, что никто  даже не пробовал поискать в текстах терминала  слово "видеопамяти "
Даниил, вам спихнули эту проблему, потому что все равно никто не решить не может?

Здесь вы совершенно неправы.
То, что кому-то кажется "да у меня в каждом скрипте так" на самом деле означает лишь то, что человек этот каким-то определённым образом пишет скрипты. Но делает всегда именно так, поэтому "в каждом скрипте...". Но, важно! не в "любом", а в "каждом моём".
Далее. Если кто-то воспроизведёт примерно подходящую по описанию ошибку - скорее всего это будет совсем другая ошибка, а не та, с которой сталкиваетесь вы. Т.е. вашу проблему - уж точно не починят.
Именно поэтому спрашивают всегда конкретный проблемный код. А не обще-абстрактные рассуждения. На любом абсолютно программистском форуме.

Если есть конкретный проблемный код - с ним всегда здесь разбираются. Как минимум убеждаются, что с ним в самом деле есть проблема. Это видно по сообщениям поддержки.
Другое дело, что не всегда, скажем мягко, в итоге проблему чинят - это да, это так.
Но не приводить проблемный код - это вообще  крайне странный подход к общению. Или вам просто эмоции слить?
Проблема с открытием ссылки, Не получается открыть ссылку
 
Цитата
houz написал:
Закрывайте тему  
Вы нашли способ решения? или ошибку в коде?
Так поделитесь с нами.
Любой API, который позволит вытаскивать данные в свои приложения
 
Так используйте любой формат передачи данных. Из самописных модулей Lua вам доступно абсолютно все.
Какая технология не прошлый век, кстати?
Нехватка видеопамяти
 
На самом деле требуется рисование прямоугольников произвольного цвета заливки по заданным координатам на графиках из скриптов (по времени)
Когда уже сделаете?

Кстати, как по мнению пользователей должны задаваться горизонтальные координаты? по времени? по пикселам? по интервалам времени? или как?
Получение данных из стакана, Subscribe_Level_II_Quotes
 
[QUOTE]ddonny написал:
и например, если делаю так:

function OnInit()
--Subscribe_Level_II_Quotes(CLASS_CODE_OPT, TICKER_OPT)  --переменные инициализируются данными, после второго запуска скрипта
LEVEL2_BID_COUNT = getQuoteLevel2(CLASS_CODE_OPT, TICKER_OPT).bid_count
LEVEL2_OFFER_COUNT = getQuoteLevel2(CLASS_CODE_OPT, TICKER_OPT).offer_count
end
[QUOTE]

Данные не мгновенно же появляются.
Subscribe_Level_II_Quotes <-- происходит подписка, данные приедут позже (причем только после выхода из обработчика Lua! это надо учитывать)

[QUOTE]ddonny написал:
LEVEL2_BID_COUNT = getQuoteLevel2(CLASS_CODE_OPT, TICKER_OPT).bid_count
LEVEL2_OFFER_COUNT = getQuoteLevel2(CLASS_CODE_OPT, TICKER_OPT).offer_count
[QUOTE]

1) Нет смысла делать это OnInit().
"размер" стакана - меняется. Надо брать количество каждый раз, когда идет обращение к стакану.

2) Данные, как сказано выше, появятся не раньше, чем произойдёт выход из обработчика (в данном случае - OnInit()). Это особенность работы QLua.

3) Так будет лучше во многих смыслах:

local quote = getQuoteLevel2(CLASS_CODE_OPT, TICKER_OPT)
quote.offer_count
quote.bid_count
quote.offer[1].quantity
и т.д.
[BUG] QUIK самовольно меняет код клиента
 
Цитата
Старатель написал:
В результате вместо того, чтобы выдать ошибку, что у пользователя нет прав для работы с отключенным кодом клиента, QUIK стал молча подменять его на другой.
Т.е., скрипт отправляет транзакцию с CLIENT_CODE = client2//brokerref, а заявка приходит с client_code = client1, brokerref = client1//client2//brokerref
Это косяк.

Ну это такой момент, который пошел от пользовательского интерфейса QUIK.
Если подключен только 1 логин (вернее один "код клиента") - то этот код автоматически подставляется, чтобы пользователя не грузить и "было удобно". В общем-то логично, согласитесь. И для подавляющего большинства пользователей (я думаю для всех) это удобно, думаю и с этим вы согласитесь.

Отправка транзакций через QLua в этом месте не отличается. Все волшебство (которое, оказывается, еще и на сервере) просто работает.

Я примерно понимаю ваше негодование, вы надеялись, что транзакции не проедут и ошибок торговли не будет. Однако в самом деле зачем такое поведение исправлять. Оно явно устраивает подавляющее большинство пользователей, которые имеют только 1 код клиента и этим кодом даже не заморачиваются ни при ручной подаче заявок, ни пир торговле через скрипт.
Работа функций OnStop() и SetCell(), Подвисает скрипт
 
Цитата
Roman Azarov написал:
swerg, добрый день!

Цитата
swerg написал:
1. В документацию включить список функций, которые нельзя вызывать из OnStop() по каким-либо причинам, как нарушающие корректность выполнения программ Lua или работу терминала.
2. После этого у вас будет список функций с ограничением по функционалу. Очевидно, далее следует работать над уменьшением размера этого списка, т.е. надо добавлением возможности всё же вызывать функции из этого списка из OnStop() (c постепенным удалением таковых функций из данного неприятного списка).
Просьба уточнить, о каких конкретно функциях, вызываемых из OnStop(), идет речь?
Быть может, мы не так поняли, но речь вроде бы шла про блокировку основного потока функцией OnStop() (как и описано в документации).

Речь о функциях, которые нельзя вызывать из OnStop.
Расширенное инфо в сплывающей подсказки к свечам.
 
Своё окно графика замутить.
Тиковый график QuikJunior и рабочего Quik
 
Цитата
BlaZed написал:
Терминалы QuikJunior и Quik это одно и то же или все таки есть отличия?

Можно же взять и сравнить файлы для одинаковых версий.
Одно и тоже, абсолютно.
Прочесть таблицу новости через LUA
 
Цитата
Олег написал:
Цитата
swerg написал:
Не должно быть никакой привязки к визуальной таблице
Не нравятся мне безапелляционные сообщения подобного рода. Если Вы так пишите - аргументируйте.

Каковы ваши цели?
И где аргументация с вашей стороны?
Есть ваше мнение общие рассуждения по поводу "решение должно быть быстро реализуемым", "удобным для большого количества пользователей QUIK". На речи депутатов похоже, общие слова "за мир во всем мире".

Что вам нужно аргументировать? то, что в скрипте должен быть контролируемый полностью доступ к данным? Считаю, что это очевидно.
Или быть может вас устраивает ситуация, когда сейчас чтобы получить свечей приходилось бы открывать графики, задавать на них какие-то "идентификаторы", лазить по меню и что-то нам настраивать чтобы в скрипте в итоге поехал поток данных? это удобно??
Очевидно же что нет.
Так что требуется аргументировать?

И, главное, с чего вы считаете, что я для вас что-то должен аргументировать?
Оптимизация использования памяти QUIK, Оптимизация использования памяти QUIK при работе с Таблицей обезличенных сделок
 
Цитата
Albert Eritsyan написал:
Просьба зарегистрировать пожелание предоставления пользователю возможности выбора путей сохранения этих файлов без глобальных изменений кода Quik.

Я так и не понял: что вам мешает перенести весь QUIK на нужный HDD?
И никакой опции не понадобится.
Оптимизация использования памяти QUIK, Оптимизация использования памяти QUIK при работе с Таблицей обезличенных сделок
 
Цитата
Albert Eritsyan написал:
Как то странно проецируется alltrade в RAM, при проецировании столько памяти в RAM не должно было выделиться, а должны были выделиться только под нужные страницы файлов.

Значит с точки зрения Windows именно столько и требуется выделить "под нужные страницы файлов".
"Проецирует" в память - операционка, не QUIK.
Отладка QUIK 8.13
 
Цитата
TGB написал:
  2) сравните размер кода Lua (~300 кб) с размером кода QLua (более 500 кб).

Вообще ни о чем не говорит.
Сильно зависит как от версии компилятора, от ключей компиляции, так и от режима линковки стандартной библиотеки.
Каталог luac-скрипта, выполняемого через dofile
 
Цитата
Незнайка написал:
Сомневаюсь, что это работает внутри откомпилированного скрипта.

т.е. даже пробовать не будете?
Оптимизация использования памяти QUIK, Оптимизация использования памяти QUIK при работе с Таблицей обезличенных сделок
 
Цитата
Albert Eritsyan написал:
Данная опция обеспечит возможность расположения этих файлов на HDD, в то время как программа сама будет находиться на SSD (чтобы не затирать SSD временными большими файлами).

Странное желание.
Основное время запуска QUIK (а только это время волнует пользователя) занимает как раз чтение файлов с накопленными данными.
Если у вас нет места на SSD - просто перенесите весь QUIK на HDD. Ну если вы готовы мириться с упавшей от этого скоростью запуска терминала.
Оптимизация использования памяти QUIK, Оптимизация использования памяти QUIK при работе с Таблицей обезличенных сделок
 
Ограничьте объем получаемых данных в вашем терминале QUIK.
https://www.finam.ru/education/likbez/kak-snizit-potreblyaemyiy-trafik-v-terminale-quik-i-izbezhat-poteri-svyazi-s-serverom-20200304-14330/
https://forum.quik.ru/forum1/topic840/

Дада, снижение траффика - это как раз путь уменьшения размера служебных файлов.
А если вы считаете, что все, что вы получаете, вам требуется - то тогда и служебные файлы будут вот такими, да.
Прочесть таблицу новости через LUA
 
Не должно быть никакой привязки к визуальной таблице
Должен быть чисто программный интерфейс на манер CreateDataSouce c последующим вызовом call-back функции на каждую новость.
И API перебора всех уже имеющихся новостей.
Работа функций OnStop() и SetCell(), Подвисает скрипт
 
Цитата
Roman Azarov написал:
Как уже было сказано ранее, такова реализация работы OnStop() на текущий момент, это не является ошибкой.

Ограничения, не указанные в документации - есть ошибка.

Цитата
Roman Azarov написал:
Просьба более подробно описать, как Вы хотели бы видеть логику работы функции в данном месте. Готовы зарегистрировать пожелание на доработку.

Регистрируйте.
1. В документацию включить список функций, которые нельзя вызывать из OnStop() по каким-либо причинам, как нарушающие корректность выполнения программ Lua или работу терминала.
2. После этого у вас будет список функций с ограничением по функционалу. Очевидно, далее следует работать над уменьшением размера этого списка, т.е. надо добавлением возможности всё же вызывать функции из этого списка из OnStop() (c постепенным удалением таковых функций из данного неприятного списка).
Путь к скриптам Lua
 
Цитата
Sergey написал:
У меня есть основной скрипт и еще несколько дополнительных, которые основной подключает через requare. Все скрипты расположены в отдельной папке но не внутри директирии QUIK (так нужно).

Указывайте полный путь к скриптам, тогда они всегда будут находиться.
Как - см. выше
Trans2QUIK.dll подключение несколько Quik одновременно, Как подключиться к нескольким квикам сразу для получения сделок из них?
 
Цитата
Юрий написал:
а вот как указать какую именно библиотеку коннектить? Можете пример на C++ сделать ?

Схематично как-то так:

HMODULE lib1 = LoadLibrary("Trans2QUIK_1.dll");
TRANS2QUIK_CONNECT_1 = GetProcAddress(lib1, "TRANS2QUIK_CONNECT");
TRANS2QUIK_SEND_SYNC_TRANSACTION_1 = GetProcAddress(lib1, "TRANS2QUIK_SEND_SYNC_TRANSACTION");

HMODULE lib2 = LoadLibrary("Trans2QUIK_2.dll");
TRANS2QUIK_CONNECT_2 = GetProcAddress(lib2, "TRANS2QUIK_CONNECT");
TRANS2QUIK_SEND_SYNC_TRANSACTION_2 = GetProcAddress(lib2, "TRANS2QUIK_SEND_SYNC_TRANSACTION");

.....

TRANS2QUIK_CONNECT_1(....);
TRANS2QUIK_CONNECT_2(....);

TRANS2QUIK_SEND_SYNC_TRANSACTION_1(....);
TRANS2QUIK_SEND_SYNC_TRANSACTION_2(....);
Получение признака "Субординированный инструмент" в lua
 
Цитата
Anton написал:
а попозже к вам заброшу, если не против.

Всегда за.
Получение признака "Субординированный инструмент" в lua
 
Вот бы метод каким это сделано описать...
Trans2QUIK.dll подключение несколько Quik одновременно, Как подключиться к нескольким квикам сразу для получения сделок из них?
 
Я бы откопировал нужное количество Trans2QUIK.dll с разными именами или разными каталогами и подключал бы их динамически, указывая для каждого экземпляра свой путь до QUIK при вызове TRANS2QUIK_CONNECT
Получение признака "Субординированный инструмент" в lua
 
Цитата
Roman Azarov написал:
В текущей реализации, экспорт таблицы текущих торгов возможен только средствами DDE (не обязательно в Excel) и ODBC.
Можем зарегистрировать пожелание на возможность экспорта в текстовый файл. Регистрируем?

Зарегистрируйте другое пожелание.
Из ТТТ должен открываться таблица, отображающая соответствие названий параметров и их "формальное название".
Тогда каждый сам легко и наглядно сможет это соответствие увидеть без всяких DDE и экселов.
С обязательной возможностью копирования данных из такой таблицы!!! чтобы не приходилось перепечатывать названия параметров.

Вам в этом случае не придется поддерживать актуальность документации, просто отпадает надобность в документировании.
Работа функций OnStop() и SetCell(), Подвисает скрипт
 
Цитата
TGB написал:
1. Непонятно, почему таблицы QUIK обслуживаются в основном потоке обработки колбеков. В чем проблема сделать обслуживание таблиц QUIK в отдельном специальном для этого потоке?
Это как раз понятно: лезть в объекты интерфейса Windows и связанных с этим собственных структур данных из разных потоков - слишком сложная замута. Потому её всегда избегают.

Цитата
TGB написал:
а все работу по завершению скрипта пользователя выполнять в потоке main.
Сам себя поток прибить не может. Должен кто-то "извне".

Цитата
TGB написал:
2. Зачем завершение скрипта пользователя выполняется в потоке обработки колбеков?
Не совсем так.
Очевидно, что написан обычный стандартный код (который выполняется в основном потоке):
Код
вызвать OnStop()
подождать завершения потока main() или таймера на 5 сек   <<-- вот тут проблема
if сработал таймер -> прибить поток для main()


Т.к. идет просто ожидание без процессинга очереди сообщений Windows и прочих действий - то и получаем, что и терминал в это время висит, и функции, которые через основной поток выполняются, не рабтают.

Это бы развязать, конечно. "Но эт вряд ли".
Отрисовка графиков нестандартных TimeFrame
 
Может у кого-то есть готовый пример? или кто-то готовым решением готов за деньги поделиться?
Отрисовка графиков нестандартных TimeFrame
 
Положим как-то мы сформировали свечи для нестандартных TimeFrame
Вопрос: есть ли возможность как-то их отрисовать штатными средствами QUIK, через Lua-индикаторы, например?
Я не сумел придумать как это сделать. Ведь на графиках, на которые накладываются индикаторы, есть возможность выбирать только стандартные TimeFrame.
Но может есть какие-то другие варианты?
Работа функций OnStop() и SetCell(), Подвисает скрипт
 
Цитата
Andrey Bezrukov написал:
Описываемое Вами поведение, формально, не является проблемой или ошибкой в работе lua-скриптов в терминале.

Это несоответствие описанного в документации поведения программы, в значит - ошибка.
Плюс,  конечно, совершенно кривая и топорная реализация ожидания завершения main(), когда  (из документации)
Цитата
"РМ QUIK может некоторое время находиться в «подвисшем» состоянии"

Итак, открываем документацию, файл "Использование Lua в Рабочем месте QUIK.pdf".

На картинке "Событийная модель" после OnStop мы видим фразу:
Цитата
"Прекращение вызова обработчиков событий терминала QUIK".

Однако далее в тексте мы видим другое объяснение:
Цитата
"Также необходимо иметь в виду, что функция OnStop() выполняется в основном потоке РМ QUIK, и,
так как в момент ожидания завершения скрипта (5 секунд) он занимает основной поток РМ QUIK, то
другие обработчики событий уже не вызываются
, а само РМ QUIK может некоторое время
находиться в «подвисшем» состоянии."

Т.е. это уже не "мы сознательно сделали так, чтобы обработчики не вызывались", а "ну, блин, ну так во вышло, что по случайному стечению обстоятельств из-за имеющейся реализации обработчики вызываться перестают". Между "мы сознательно так сделали" и "ну вот так вот получилось" - есть большая разница.

Окей, я продолжаю далее следовать рекомендациям из того же описания (официального).
Чуть ранее:
Цитата
Возможные подходы написания скриптов Lua для плагина QLua в Рабочем месте QUIK
....
2. Вся необходимая логика описывается в функции с предопределенным именем main().

Супер. Такой подход нам и демонстрирует автор изначального сообщения этой темы. Он все делает в main(). Использует лишь один обработчик, связанный с интерфейсом пользователя OnStop(), т.к. надо же скрипту сообщить "остановись, хватит". Ибо иного пути нам не предоставлено.

И тут вдруг выясняется, что в этом описанном в документации подходе есть "особенности", когда часть функций попросту не работают в каких-то ситуациях! Как это так??
Это явная ошибка, которую необходимо исправить.
Да, обработчики событий не должны вызываться после OnStop, в этом есть логика, да и это явно описано в документации. Но другие-то функции взаимодействия с терминалом почему не должны работать?? потому что "так получилось"? Нет уж, это не есть обоснование; это лишь признание кривоватой реализации данного места, которая, очевидно, является ошибкой и должна быть исправлена.
Написание автономного бота
 
Mixa, пойми главное: ты можешь сейчас здесь спорить до посинения хоть два года - ничего не изменится. (см. комментарий про 10 лет)
Пока сам не сделаешь как тебе надо, опираясь лишь на те средства, какие есть.

На что потратить следующие два года твоей жизни - решать тебе.
Поиск по таблицам
 
Чтобы получить общий список список классов (режимов торгов) и бумаг, надо использовать функции:
getClassesList
getClassInfo
getClassSecurities
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 25 След.
Наверх