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

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

Страницы: Пред. 1 ... 6 7 8 9 10 11 12 13 14 15 16 ... 25 След.
Изменения в работе с колбеками LUA в новой версии
 
Цитата
_sk_ написал:
Не придётся. А тема показывает, насколько У СТРАХА ГЛАЗА ВЕЛИКИ.
Да вообще капец.
Я даже удивляюсь как смогли из ничего раздуть столько, вторая страница уже идёт.
Вот же точно нечем людям заняться.
Lua-таблицы. Интерфейс. Управление свойствами lua-таблиц., Как тонко настроить lua-таблицу? Механизмы взаимодействия пользователя с lua-таблицами.
 
Цитата
Александр М написал:
Это же Ваши слова, у Вас обязан быть этот список с приоритетами. Выложите его здесь или в любом другом разделе, прикрепите сверху и все сразу увидят, что Вы там рассматриваете и ничего ли по дороге не потерялось.  

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

Гнилое это дело в main()  (т.е. отдельном потоке) работать с визуальными элементами. Добром не заканчивается (это из общих соображений).
Хотя квиковцы с вызовом методв создания визуальных элементов из main() как бы справились, но не верю я, что там все надежно сделано.
Это так, общие мысли по поводу процитированного.

Цитата
Владимир написал:
Обсудим, господа?

Вопрос должен оформляться просто:
- полный код, который каждый может скопировать и запустить/проверить/поэкспериментировать, иллюстрирующий проблему (но желательно код наименьшего объема при этом)
- описание что ожидается
- описание как на самом деле
- вопрос "как сделать ожидаемое?"

Тогда, быть может, кто-то разберётся и ответит.

А все эти амбулы-шмамбулы - это вы для книжек своих поберегите, может их кто и прочитает. Но в вопросы такого плана никто вникать не будет.

Для полноценного интерфейса проще взять внешнюю библиотеку. Например такую. Не всё там просто и гладко, но хотя бы возможностей в самом деле много.
Обсудим диалог на Lua?
 
Цитата
nikolz написал:
рекомендую для общего понимания.
https://www.ibm.com/developerworks/ru/library/l-embed-lua/

IBM, про Lua, по-русски, 2009 год  :shock:
Вы существенно расширили границы моего познания этого мира.
Добавление Индикаторов.
 
Что говорит автор?
Изменения в работе с колбеками LUA в новой версии
 
Цитата
Александр написал:
В метатрейдере скрипт работает в отдельном потоке. В метатрейдере скрипт работает пока пользователь его не завершил или не возникла ошибка.

Спасибо, вы рассказали то, что я никак не мог найти в документации, да и просто в интернетах.

Цитата
Александр написал:
В квике скрипт выполняется

А как работает QLua - я знаю отлично :)
https://quik2dde.ru/viewtopic.php?id=16
Изменения в работе с колбеками LUA в новой версии
 
Ладно, хрен с ним с этим троллем.
Я на самом деле никак не могу получить ответ на свой вопрос, который давно меня заботит.
Ну вот как это сделано в метатрейдере, в других терминалах? нигде ж нет никакого main(). Есть по сути просто скрипт с колбеками (да? я не ошибаюсь?)
И вот когда в этих системах прекращается вызов этих колбеков?? я никак не могу этот момент найти, или ищу плохо.
Или там после запуска скрипта вызов из него колбеков никогда не прекращается?
Расскажите, а
Изменения в работе с колбеками LUA в новой версии
 
Цитата
Владимир написал:
НЕ БЫВАЕТ "модели без main()"! При запуске скрипта ЧТО-ТО должно начать выполняться. Вот это "что-то" и есть main, хоть горшком её назови.

Чушь.
Берем скрипт и начинаем из него дергать колбеки по мере поступления событий.
Никакой main() для этого не нужен. И ничего "что-то" выполнять постоянно для этого тоже не требуется.
Изменения в работе с колбеками LUA в новой версии
 
Цитата
swerg,  
Цитата
Об этом и мой вопрос: как скрипту себя остановить? как сказать "я устал, я ухожу, не дергайте больше мои колбеки" без наличия main()?
Так сказали же, вроде: по OnStop сбросить все заказанные обработчики и отдать управление в main.

Внимательнее вопрос стоит прочитать.
Модель другая: нет main() чтобы не было многопоточности, есть только обработчики.
OnStop - это если пользователь остановить захотел.
А если скрипт сам захотел остановиться - откуда OnStop возьмётся?!
Вопрос был: как в модели без main() скрипту самого себя остановить? как это сделано в других имеющихся системах торг. терминалов (не фантазийных), кто знает?
Изменения в работе с колбеками LUA в новой версии
 
Цитата
TGB написал:При останове любого скрипта порождается событие <OnStop>, которое
Об этом и мой вопрос: как скрипту себя остановить? как сказать "я устал, я ухожу, не дергайте больше мои колбеки" без наличия main() ?
Изменения в работе с колбеками LUA в новой версии
 
Вообще говоря морока с main() была в QUIK внедрена по глупости считаю.
В каком потоке обрабатывать колбеки - это отдельный разговор, непосредственно к main() не имеющий отношения.
Но с main() квиковцы внедрили такую логику: колбеки вызываются до тех пор, пока не произошел выход из main(). Как вышли (добровольно, замечу!) из main() - так вызов колбеков прекращается.

И вот на какой вопрос я при этом не нахожу ответа. Если бы не было main() - каким образом останавливать обработку колбеков, когда автор скрипта уже не хочет чтобы колбеки вызывались? ну вот в самом деле, нельзя же все время для всех скриптов вызывать колбеки. Или можно?
Как этот момент решается на других платформах, кто-будь может рассказать? я вот сколько на метатрейдер смотрел - так и не смог найти ответ на вопрос: когда же "колбеки" из скриптов в нём перестают вызываться?
Изменения в работе с колбеками LUA в новой версии
 
Свежие мечтатели к нам подключились, похоже :)) Которые еще не знают истории про "пожелание зарегистрировано".

Цитата
Александр написал:
lua5.1 + jit

Многопоточности в jit нет, в этом беда. А модель API для qlua сделали в QUIK многопоточной по самой идее, так что jit, похоже, нам с вами не светит никогда. Грусть.
Одновременная работа двух Торговых систем с одним инструментом, подкиньте идей
 
Цитата
Nikolay написал:
Владимир, это же написано в документации к расширению языка от разработчика

Как уже всем известно, документацию Владимир не читает? так что смысла давать на неё ссылки - нет, увы. Разве что только ушат помоев получите в ответ (уже получили, как видите).
Одновременная работа двух Торговых систем с одним инструментом, подкиньте идей
 
Цитата
Олег написал:
Цитата
Владимир написал:
Я не понимаю, что такое "торговая система"
Скрипт Lua

:shock: Неожиданно. Вольное применение терминологии - это здорово, конечно, но как же вас понять-то тогда??

Т.е. у вас 2 разных Lua-вкрипта торгуют одним и тем же инструментом на одном классе, так? ну и ведите в каждом из них свою позицию по куплям / продажам. При надобности пишите в два разных файла, в каждом скрипте в свой файл.
Но до добра это всё не доведёт, по-моему. Один скрипт покупает, другой тут же продаёт - в чем финансовый результат таких прикольных действий?
Изменения в работе с колбеками LUA в новой версии
 
Да не будет там изменений, что вы так переживаете. С чего вдруг?
Изменят техническую реализацию - вот и все. Сути никак не поменяет
Одновременная работа двух Торговых систем с одним инструментом, подкиньте идей
 
Не понятно в чем проблема-то у вас?
Брокер специально для вас сделал волшебство: как-будто вы продаете / покупаете один актив в разных системах. Готовый арбитраж.
(На самом деле юридически, конечно же, это разные активы, разных торговых площадок, и брокер на разных площадках депонирует для вас эти разные по сути активы, однако для удобства в терминале неттирует для вас позиции по разных площадкам, как-будто это один и тот же актив.)

Но что хотите вы - не понятно.
Хотите вести и видеть раздельные позиции по каждой торг. системе?
Уточните у брокера, вдруг он умеет отключать это волшебство неттирования.
Предложение к разработчикам
 
Цитата
_sk_ написал:
Да откуда же вы такие берётесь?  :unamused:  

Вот тоже самое хочется сказать.
Похоже, очередной выпуск на пенсию состоялся. Варились в собственном соку 40 лет да так, что протухли уже.
Предложение к разработчикам
 
Вот именно за использование в программах "чуть посложнее" и отрывать.
Предложение к разработчикам
 
Цитата
Владимир написал:
Только вот нюансик: goto и нужен именно для того, чтобы входить внутрь блоков if!

Руки оторвать по самые ноги таким программистам, кому пришла в голову  столь дурацкая затея.
Время ММВБ, Servertime не предлагать
 
Цитата
Mikhail
А статус сессии биржа транслирует?

Конечно. Все значения параметров, какие вы видите в QUIK - транслируют биржи. QUIK лишь транспорт.

Цитата
Mikhail
PS. При остановках торгов внутри дня для раздвижки планок статусы показывают, мол торговля ведется.

Надо на оба параметра смотреть.
Торги идут только при единственной комбинации этих параметров. При любой другой нормальные торги не идут.
Время ММВБ, Servertime не предлагать
 
Заявки не могут"улетать вникуда".
Они либо выставляются, либо нет.
Можно проанализоровать, если заявки не выставились - выставить снова.

А еще есть параметр "Статус сессии" или типа такого, если в хотите попасть ровно поближе к началу сессии. Поставьте на него колбек - и как откроется - пулите заявки.
Там может быть два параметра "статус сессии" и ,"период сессии" или что-то такое, посмотрите как они выставляются в нужный вам момент времени.
Вопросы Новичка
 
Можно из одного терминала подключаться к разным брокерам (не одновременно, конечно). Ну если это вдруг удобно будет.
https://iquik.info/2012/03/20/iquik-how-to-connect-to-different-brokers-account/
Информация для обычного терминала тоже полностью подходит.
Вопросы Новичка
 
https://arqatech.com/ru/support/demo/

Ну и у брокеров тоже есть, обратитесь к вашему брокеру
Предложение к разработчикам
 
Цитата
Nikolay написал:
А зачем "рекомендованное", если есть книга от автора языка.
Купите или "купите" уже книгу Роберту Иерузалимски "Программирование на языке lua", если уж на сайте языка никак не получается.

Объем знаний по собственно языку Lua - это лишь десятая часть того, что необходимо знать для написания сколь-нибудь качественных роботов в QUIK.
Так что книжка по Lua - это прикольно, но я подразумеваю, что она (или аналогичное по собственно языку) автором уже усвоено, и дальше наконец-то начинается самое интересное. Ну я надеюсь, что усвоено, хотя как показывает эта ветка...
Как определить используемую версию версию синтаксиса lua в терминале ?
 
Цитата
Андрей написал:
Dll это не исполняемый файл интерпретатора. Скорее всего ЛУА зашит в код.

Соберите exe-шник и будет вам "исполняемый файл", использующий для работы qlua.dll или Lua53.dll в зависимости от версии терминала.
https://github.com/swerg/qlua-exe
Предложение к разработчикам
 
Цитата
Владимир написал:
Это говорил не Александр, а я.

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

На мос биржу - конечно нет.

Для тестов можно использовать т.н. "игровой сервер". Движение цен там нереальное, да еще и зацикленное, зато работает 24 часа в сутки, отработать механику собственно выставления заявок вполне можно.
Предложение к разработчикам
 
Цитата
Maksimus написал:
Скачать справочник по LUA с оф.сайта, там не справка,а просто пару строк о каждой функции написано,и что и как делать,вообще не понятно!!!

ftp://ftp.quik.ru/public/updates/
В архиве терминала с каждой версией разработчики выкладывают документацию по применению Lua в QUIK, в описанием, примерами. Для кого? Для чего? Чтоб не осталось в стороне...
Есть, конечно, разные претензии к этой документации, но она таки есть.

Ну или почитайте здесь:
https://quik2dde.ru/viewtopic.php?id=16

Цитата
Maksimus написал:
И самое главное,беру скрипт из справки,запускаю его,и он чудесным образом выдает ошибку!

Тут бы пример не помешал. Иначе пустозвонство получается.

Цитата
Maksimus написал:
Если б сбер использовал MT4,MT5, никогда бы не стал изучать этот язык!!!

А вот кстати, в самом деле: где Метатрейдер 5? где этот убийца Квика?? ну в самом деле, не понимаю.
Предложение к разработчикам
 
Цитата
Александр, Я умею и читать документацию

https://lua.org.ru/contents_ru.html
Официальная документация, даже на русском.
Пункт 3.3.4 – Управляющие конструкции, где написано про goto

Вывод, увы, прост и печален: документацию вы читать не умеете.
Не могу инстолировать LuaCOM под Lua 5.3.5 64-бит
 
Есть рабочая сборка luacom для x64/Lua5.3
Напишите swerg@swerg.ru если требуется
Работа main() при наличии 1 ядра
 
Цитата
Христиан написал:
как будет работать main() в отдельном потоке при наличии только 1 ядра? Все ли будет работать или нужно минимум 2. Поправьте если я чего-то не понимаю, спасибо

Да, все будет работать.
Как именно - зависит от вашего скрипта.
Если у вас main просыпается раз в 100 мс и просто проверяет не нажата ли кнопка "стоп", посл чего снова уходит в sleep(100) - то не проблема.
Если же у вас main постоянно работает не засыпая на sleep и загружает полностью одно ядро - то, увы, общая скорость работы терминала в такой схеме заметно просядет, т.к. терминал будет делить единственное ядро с постоянно загруженным потоком main.
Работа main() при наличии 1 ядра
 
Цитата
TGB написал:
Я думаю, что разработчики QUIK это, наверное, понимают и не подавляют параллелизм выполнения таких функций ( а они есть).
Разработчики QUIK, очевидно, не могут сделать что-то другое, кроме как использовать блокировки, встроенные в Lua. А блокировки там сделаны так, что никакого "умного" блокирования не производят. В самом деле: как интерпретатору Lua различать хранение локальных и не локальных переменных? в обычных компиляторах с локальными переменными в разных потоках все просто, ибо они размещаются на стеке - волшебно выделяемом / освобождаемом ресурсе, но Lua-переменные - штуки более сложные, плюс с управляемым временем жизни через сборщик мусора. Так что увы, волшебства никто делать не будет.
Работа main() при наличии 1 ядра
 
Цитата
TGB написал:
В нативном коде Lua лок пустая операция во всех функциях C-API.
И поэтому "нативный", как вы его назвали, код Lua не предназначен для многопоточного выполнения.Хотите многопоточности - необходимо прописать реализацию функции lua_lock, что в QLua, очевидно, и сделано.
Роботы всякие и прочие глупости
 
Цитата
swerg написал:
Собственно о том как понять актуальные данные или нет приходят в Lua-скрипт (и терминал) - и состоит вопрос этой ветки.

Если сформулировать чуть точнее, то, видимо, нужен признак: те данные, которые сейчас получил терминал (и Lua-скрипт) - это последние полученные (и отправленные) сервером на данный момент данные, или мы получаем "исторические данные", которые сервер по каким-то причинам решил заново послать на терминал.
Роботы всякие и прочие глупости
 
Цитата
Владимир написал:
НЕ МОЖЕТ быть такого способа! НЕ МОЖЕТ! В ПРИНЦИПЕ не может! А "рекомендованный лучшими собаководами" я тоже давал (в другой ветке). Цитирую: "Квик как-то получает данные, которые лично я намерен считать априори достоверными и не контролировать это дело вообще никак. Луа получает эти данные от Квика".

Торговый робот выставляет заявки, ориентируясь на получаемые данные.
Причем заявки выставляются на биржу в момент выставления их роботом, очевидно. В тот же самый момент для принятия решения робот опирается на те данные, которые он в это самый момент получает из терминала (а тот от сервера брокера, который тоже QUIK). И если данные окажутся не актуальными, то, очевидно, заявки на биржу будут выставлены совсем не те, которые ожидались разработчиком и алгоритмистом торгового робота.
Отсюда и возникает острая надобность отличать актуальные получаемые данные от неактуальных.

Собственно о том как понять актуальные данные или нет приходят в Lua-скрипт (и терминал) - и состоит вопрос этой ветки.
Очевидно, лишь разработчики могут подсказать ответ. Если ответа всё еще нет - то хотя бы донести до них в очередной раз простую штуку: такой признак очень требуется!!

Судя по написанному вами в этой ветке - вы таких роботов не разрабатывали и/или не эксплуатировали сколь-нибудь продолжительное время. О чем не я первый вам говорю, кстати. Именно поэтому - лелея последние остатки надежды на вашу адекватность - я так подробно вам написал всё это.
Дальше уже ваш выбор: продолжать ли вам общение в этой ветке и в каком тоне, господин "профессиональный алгоритмист".
Роботы всякие и прочие глупости
 
Цитата
Sergey Gorokhov написал:
Михаил, к чему это все? Мы же с Вами уже не один год общаемся и ровно этот вопрос совершенно точно уже обсуждали.ответ не поменялся, надежного способа нет, есть разные варианты которые могут дать более менее правдивую оценку актуальности данных.
Позволю себе ответить за Михаила на вопрос "к чему это все".
Всё это, очевидно, к тому, что, как вы верно написали, " уже не один год общаемся", но до сих пор "надежного способа нет". Хоть бы сколь-нибудь надёжного или, хотя бы, "рекомендованного лучшими собаководами" (с)
Отсюда и эмоции. И крайне странно не понимать такую простую взаимосвязь.
Не является приложением Win32
 
Цитата
Let_it_go написал:
смысл понятен - мне надо 32 битную, а тут 62. Но как с этим бороться, - не понимаю.

Скорее наоборот: вам нужна версия библиотеки x64 (причем для Lua 5.3), а у вас библиотека собрана под x32 платформу.
(я понимаю, что вы можете не согласиться с таким толкованием, читая сообщение об ошибке, однако такое сообщение следует отнести просто в разряд специфичного юмора программистов из одной не особо известной компании МикроСофт)

Что с этим делать?
Пути два:
1) Обратиться к автору библиотеки и попросить его собрать для вас вариант x64 для Lua 5.3
2а) Если вы знаете где взять исходники - обратиться к тому, кто понимает как сделать пункт 1)
2б) Самостоятельно проделать пункт 1)
Если исходников нет  - увы, ничего поделать нельзя.
При входе в сделку, цена отскакивает на 50 - 200 пунктов. Обман брокера?
 
Все графики биржевые (постфактум) - общедоступны.
Достаточно взять график из любого источника и убедится, что он именно так объективно менялся, как вы видели в терминале.
Если не так - тогда уже есть с чем предметно разбираться.

PS
Это стандартная история: пока я не поставил ставку - все менялось строго по моим прогнозам. Как я поставил ставку - все пошло не так! меня обманывают!!
Ну разумеется, именно так всё и было.
Пожелание по работе с окнами программы.
 
А еще в терминале есть такая клёвая супер-кнопочка с плюсом (на панельке "стандартная")

Её нажимаешь - открывается диалог со всеми доступными окнами, причем с окном фильтрации вверху. В фильтр вписываешь часть названия нужного окна - и вот оно, под руками оказывается.
Пожелание по работе с окнами программы.
 
Цитата
Gla написал:
Почему нет возможности вызвать это окно просто?
А зачем закрывать эту таблицу?
обычно настраиваешь терминал как удобно, с нужными таблицами - и пользуешься. И когда один раз настроил (да, изрядно помучившись со специфическим интерфейсом) - то уже более-менее забываешь про все эти странности и сложности с поиском окон, потому что они уже есть, настроенные как надо.
Индикация языка ввода
 
Цитата
Gla написал:
Некоторые пижоны делают еще и - символы не латиница - просто не вводятся в поле программно. Блокирована возможность.
По-моему это какие-то криворукие программисты, которые просто не могут не латинницу в пароле корректно переварить.
Так-то использование не латинницы в пароле вообще напрочь убивает возможность подбора пароля.
Индикация языка ввода
 
Windows же показывает раскладку в трее. Не? или хочется видеть поближе как в WebMoney?
Библиотека qvcl x64. Отрисовка интерфесов в восьмом квике
 
Есть qvcl для Win64
кому требуется срочно - пишите swerg@swerg.ru
запуск GUI на lua дистрибутиве отдельном от quik, qvcl gui на 32bit lua
 
Есть qvcl для Win64
кому требуется срочно - пишите swerg@swerg.ru
Как выполнить команду от имени серверной консоли через lua файл?, Как выполнить команду от имени серверной консоли через lua файл?
 
Не понятен вопрос.
Что такое "серверная консоль"? Вы хотите, чтобы программа запустилась на стороне сервера QUIK? или чего-то другого?

Если речь про запуск какой-то программы из Lua (на том же компьютере, где запущен терминал QUIK, разумеется) - то воспользуйтесь в Lua os.execute
Например:
os.execute("C:\\Windows\\System32\\calc.exe")

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

Попробуйте связаться с брокером и уточнить у него по чем для вас встанет для вас увеличение допустимого количества транзакций в секунду. Вдруг это будет обозримая цифра.
Ну либо придётся менять алгоритм, избавляюсь от простой идеи одновременного снятия буквально всех заявок. Наверняка ведь вашу торговую идею можно реализовать иначе, красивее и без внезапного снятия буквально всех выставленных заявок.
Проблема с выводом в пользовательскую таблицу
 
Цитата
e2e4 написал:
Далее окно диалога управления подвисает на 5 секунд. Откуда это время понятно, ожидание завершения потока функции main по умолчанию.
А мне не понятно откуда в этом коде возникает этот timeout
Вроде всё должно завершиться сразу и корректно, т.к. в OnStop есть IsRun = false
Чисто для прикола отлогируйте значение IsRun из main() и других мест, ну мало-ли какая мистика.

Пока похоже на косяки обработки обращения к пользовательским таблицам из main(), вроде про это были жалобы на форуме.
Скрипт прекращает работу, а не должен, Скрипт прекращает работу по непонятной причине, как ее выявить?
 
Sergey Gorokhov, скажите: я верно понимаю, что скрипт останавливается только в 2-х случаях:
1) Либо произошел корректный выход из main() -> тогда в окне скриптов не будет ошибки (и других сообщений)
2) Либо произошла какая-то (любая) ошибка  -> тогда в окне скриптов гарантированно будет отображена ошибка

Верно? других вариантов нет? Точно нет?

Если так, то Иван Ру будет достаточно добавить логирование условия выхода из цикла main() и всё станет понятно.
Как определить Код класса (CLASSCODE) по коду инструмента (SECCODE)?
 
Цитата
Anton написал:
Константин Рейм , вернете первый найденный класс.
Так в этом и состоит вопрос: как найти ОДИН подходящий класс. А не список.
И подход в сообщении Константин Рейм совершенно и единственно правильный: задать свой порядок приоритета для поиска класса среди общего списка, и уже основываясь на этом списке искать первый класс, куда входит инструмент, чтобы исключить "неподходящие" классы.
Страницы: Пред. 1 ... 6 7 8 9 10 11 12 13 14 15 16 ... 25 След.
Наверх