Здравствуйте. Ткните меня пожалуйста в материал с описанием возможностей QLUA по выводу различных простых графических элементов (отрезок, вертикальная прямая, горизонтальная прямая, прямоугольник и др.) в окно графика какого - либо инструмента. Спасибо.
Здравствуйте, в QLUA, к сожалению, из графики только индикаторы можно создавать, можете про них почитать в справке QLUA.chm раздел "Индикаторы технического анализа"
Здравствуйте.
Пишу небольшую программку - помощника на С++ для Квика.
Подскажите пожалуйста, какие команды послать Квику, чтобы сделать активной нужную таблицу?
Наверное то же самое, нужно установит фокус на нужную таблицу, но вопрос, как это сделать?
Программные клики левой кнопкой на строках нужной таблицы проходят нормально, нужные строки выделяются как положено,
но при этом окно не становится активным и соответственно меню не меняется, что для меня крайне важно.
Очень прошу помощи.
Спасибо.
Здравствуйте! Тоже недавно мучился с подобной задачей, нужно было выкинуть все из кармана транзакций, в итоге пришел к решению отправлять окну 2 сообщения, чтобы его активировать:
Дмитрий, огромная БЛАГОДАРНОСТЬ Вам за эту информацию.
Как вы и советовали, применил связку из двух, рекомендованных Вами, сообщений и функция заработала!
Отдельное Спасибо за код DLL-ки, очень мне пригодится для руководства.
Очень точный ответ и вовремя.
Спасибо.
Дмитрий, Добрый День.
Моя программка работает, но часто вылавливает не обновлённое состояние меню Квика. Например если реально ткнуть мышкой в окно графика,
то меню заполняется командами актуальными для графика, после этого меню как бы виснет и не хочет обновлять своё содержимое пока реально (программный тык не помогает) не ткнёшь в него реальной мышкой.
Подскажите пожалуйста, Какое сообщение нужно послать в (или для) меню Квика, чтобы оно (меню)
приобрело своё новое состояние (обновилось) в связи с вновь выбранным (активированным) окном с таблицей?
Спасибо.
Дмитрий, здравствуйте.
Может дадите совет?
Где почитать, как снять информацию с листа квика (Имя класса: MultiList). Именно этот класс составил проблему.
Вариант написания робота (Lua), который собирает информацию и взаимодействует с моей программой, не подходит.
Программу пишу на С++.
Спасибо.
Вот, что он написал:
"Могу только посоветовать тому человеку использование функций WinAPI
FindWindowEx
далее, после того, как HWND окна MultiList будет найден - уже можно будет установить перехватчик сообщений посылаемых окну на свою оконную функцию где и будет анализ сообщений. После того, как действия будут выполнены - надо передать сообщение штатной функции окна.
Сам хук - можно установить функцией винапи SetWindowsHookEx
либо через
SetWindowLongPtr
с параметром
GWLP_WNDPROC
при этом - сохранив указатель на старую оконную функцию"
Спасибо.
MultiList нахожу без всяких сложностей.
Буду пробовать вылавливать сообщения листу, чтобы узнать как с ним общаться.
Покопал в интернете, MultiList - какая-то тайна за семью печатями, маловато информации.
Дмитрий, Спасибо Огромное.
Продолжение: "нет смысла искать MultiList в интернете.
Это внутренний QUIK-овский оконный класс. Как получать и изменять сообщения окна (в том числе и класса MultiList) - указано по приведённым ссылкам.
Чтобы отделить один мультилист от другого и выделить нужный HWND - можно смотреть (проверять в цикле с FindWindowEx) на заголовок окна (ф-ция WinAPI GetWindowText)"
Дмитрий, здравствуйте.
Может ли скрипт, по достижении ценой определённого уровня, приостановить работу другого скрипта,
потом при каких-то условиях, опять запустить его в работу?
По сути нужен скрипт управляющий работой другого скрипта.
Возможно это?
Прошу совета.
Спасибо.
Здравствуйте. Вопрос не мне, но...
В рамках одного терминала, используя StaticVar https://quik2dde.ru/viewtopic.php?id=61.
Скрипт, который должен приостановить свою работу, может опрашивать соответствующее поле на предмет "работать"/"покурить" и уходить в цикл, который будет ждать команды "работать".
Здравствуйте. Спасибо большое за информацию.
Но есть необходимость контролировать работу стороннего скрипта, который
не умеет останавливаться и по различным условиям запускаться в работу,
а изменить его не имею возможности, так как скрипт купленный.
Хочу написать скрипт, который бы управлял этим купленным скриптом.
Здравствуйте.
В таком случае все просто, вам нужно написать скрипт, который будет передавать в поле StaticVar команды, затем отдать этот скрипт вместе с купленным разработчику купленного скрипта и за отдельную плату он вам подключит StaticVar, объявит нужное пространство имен, сделает опрос ячейки памяти и ожидающий цикл.
Ну или переписать логику купленного скрипта, что несколько сложнее, но открывает больше возможностей для вас лично))
Уважаемый kalikazandr, Спасибо.
Переписывать купленный скрипт, не вариант.
Изменять купленный скрипт, не вариант.
Обращаться к разработчику купленного скрипта, не вариант.
Нужно написать скрипт, который будет управлять приостановкой(при условиях) и запуском в работу(при условиях) стороннего (купленного) скрипта.
Прошу совета.
Спасибо.
Чтож, в таком случае делаете скрипт, который будет сильно вас извещать при наступлении соответствующего события и выключать/включать купленный скрипт руками, как самый легкий путь. Либо попробовать используя w32.dll (с выше указанного форума) найти окно "доступные скрипты" и кнопки управления в этом окне. Задача не тривиальная, на мой взгляд проще переписать платного бота или получить исходники.
Тут напишу.
Нужна работа купленного робота (написан на QLUA) в заданном мною диапазоне цен (часть стратегии).
При выходе цены из диапазона купленный скрипт (робот) приостанавливаем, при заходе цены в диапазон запускаем.
Желательно, чтобы управляющий купленным роботом скрипт был написан на QLUA.
Спасибо.
Здравствуйте! Через WinAPI, наверное, можно это реализовать, т.е. программно нажимать кнопки "Запустить" и "Остановить" скрипт, но нужно будет поковыряться, чтобы до них добраться. Пример использования WinAPI есть в скрипте автоматической авторизации: https://quikluacsharp.ru/quik-qlua/qlua-lua-skript-avtomaticheskoj-avtorizatsii/
Если у вас есть вынесенные из квика окна, то эта функция закрывает первое попавшееся окно и все
Всем, привет!
пример новой реализации обмена данных между скриптами
https://quik2dde.ru/viewtopic.php?pid=2526#p2526
Здравствуйте. Ткните меня пожалуйста в материал с описанием возможностей QLUA по выводу различных простых графических элементов (отрезок, вертикальная прямая, горизонтальная прямая, прямоугольник и др.) в окно графика какого - либо инструмента. Спасибо.
Здравствуйте, в QLUA, к сожалению, из графики только индикаторы можно создавать, можете про них почитать в справке QLUA.chm раздел "Индикаторы технического анализа"
Понял. Спасибо.
Здравствуйте.
Пишу небольшую программку - помощника на С++ для Квика.
Подскажите пожалуйста, какие команды послать Квику, чтобы сделать активной нужную таблицу?
Наверное то же самое, нужно установит фокус на нужную таблицу, но вопрос, как это сделать?
Программные клики левой кнопкой на строках нужной таблицы проходят нормально, нужные строки выделяются как положено,
но при этом окно не становится активным и соответственно меню не меняется, что для меня крайне важно.
Очень прошу помощи.
Спасибо.
Здравствуйте! Тоже недавно мучился с подобной задачей, нужно было выкинуть все из кармана транзакций, в итоге пришел к решению отправлять окну 2 сообщения, чтобы его активировать:
Весь код DLL, вдруг пригодится:
Дмитрий, огромная БЛАГОДАРНОСТЬ Вам за эту информацию.
Как вы и советовали, применил связку из двух, рекомендованных Вами, сообщений и функция заработала!
Отдельное Спасибо за код DLL-ки, очень мне пригодится для руководства.
Очень точный ответ и вовремя.
Спасибо.
Всегда пожалуйста! 🙂
Дмитрий, Добрый День.
Моя программка работает, но часто вылавливает не обновлённое состояние меню Квика. Например если реально ткнуть мышкой в окно графика,
то меню заполняется командами актуальными для графика, после этого меню как бы виснет и не хочет обновлять своё содержимое пока реально (программный тык не помогает) не ткнёшь в него реальной мышкой.
Подскажите пожалуйста, Какое сообщение нужно послать в (или для) меню Квика, чтобы оно (меню)
приобрело своё новое состояние (обновилось) в связи с вновь выбранным (активированным) окном с таблицей?
Спасибо.
Честно говоря, я не сталкивался с такой задачей, потому, к сожалению, ничего не подскажу.
Ок. спасибо за ответ.
Дмитрий, здравствуйте.
Может дадите совет?
Где почитать, как снять информацию с листа квика (Имя класса: MultiList). Именно этот класс составил проблему.
Вариант написания робота (Lua), который собирает информацию и взаимодействует с моей программой, не подходит.
Программу пишу на С++.
Спасибо.
Здравствуйте! К сожалению, не могу ничего подсказать, не занимался таким.
Спасибо.
Не за что.
Есть один товарищ, который любит квик по косточкам разбирать, спрошу у него, может он Вам поможет.
Спасибо Огромное.
Вот, что он написал:
"Могу только посоветовать тому человеку использование функций WinAPI
FindWindowEx
далее, после того, как HWND окна MultiList будет найден - уже можно будет установить перехватчик сообщений посылаемых окну на свою оконную функцию где и будет анализ сообщений. После того, как действия будут выполнены - надо передать сообщение штатной функции окна.
Сам хук - можно установить функцией винапи SetWindowsHookEx
либо через
SetWindowLongPtr
с параметром
GWLP_WNDPROC
при этом - сохранив указатель на старую оконную функцию"
http://www.allasm.ru/urok_20.php
https://ru.wikipedia.org/wiki/Сабклассинг
Спасибо.
MultiList нахожу без всяких сложностей.
Буду пробовать вылавливать сообщения листу, чтобы узнать как с ним общаться.
Покопал в интернете, MultiList - какая-то тайна за семью печатями, маловато информации.
Дмитрий, Спасибо Огромное.
Всегда пожалуйста!
Продолжение: "нет смысла искать MultiList в интернете.
Это внутренний QUIK-овский оконный класс. Как получать и изменять сообщения окна (в том числе и класса MultiList) - указано по приведённым ссылкам.
Чтобы отделить один мультилист от другого и выделить нужный HWND - можно смотреть (проверять в цикле с FindWindowEx) на заголовок окна (ф-ция WinAPI GetWindowText)"
Дмитрий, HWND MultiList-а получаю без проблем.
А вот как из него содержимое строк вынимать(читать) не могу разобраться.
Спасибо.
Вот, что ответил на это специалист 🙂 : "большего сказать не могу. пусть сам дальше думает. простого метода нет."
Ок. Дмитрий.
Спасибо.
нет ничего проще: https://www.dropbox.com/s/oz29t9wxygryoxg/lua_multilist_binaries.zip?dl=0
Версия 8.6 неработает lua multilist хотел сделать поиск окна графика но при прогоне тестового скрипта окна не находит и ошибка в итератор цикла
кодировка из utf в win не работает или нет
Пошлите таблице комбинацию ctrl+insert и вуаля! таблица у Вас в буфере обмена. Ну что с буфером обмена делать я думаю Вы разберётесь
Если конечно это ещё актуально
Актуально. Большое СПАСИБО.
Буду разбираться.
Спасибо.
Всегда пожалуйста, если это мне 🙂
Это Вам. Спасибо.
Под последним вашим постом почему-то отсутствует кнопка "Ответить".
Поэтому сказал "Спасибо" немного в другом месте. 8-))
Дмитрий, здравствуйте.
Может ли скрипт, по достижении ценой определённого уровня, приостановить работу другого скрипта,
потом при каких-то условиях, опять запустить его в работу?
По сути нужен скрипт управляющий работой другого скрипта.
Возможно это?
Прошу совета.
Спасибо.
Здравствуйте. Вопрос не мне, но...
В рамках одного терминала, используя StaticVar https://quik2dde.ru/viewtopic.php?id=61.
Скрипт, который должен приостановить свою работу, может опрашивать соответствующее поле на предмет "работать"/"покурить" и уходить в цикл, который будет ждать команды "работать".
Здравствуйте. Спасибо большое за информацию.
Но есть необходимость контролировать работу стороннего скрипта, который
не умеет останавливаться и по различным условиям запускаться в работу,
а изменить его не имею возможности, так как скрипт купленный.
Хочу написать скрипт, который бы управлял этим купленным скриптом.
Здравствуйте.
В таком случае все просто, вам нужно написать скрипт, который будет передавать в поле StaticVar команды, затем отдать этот скрипт вместе с купленным разработчику купленного скрипта и за отдельную плату он вам подключит StaticVar, объявит нужное пространство имен, сделает опрос ячейки памяти и ожидающий цикл.
Ну или переписать логику купленного скрипта, что несколько сложнее, но открывает больше возможностей для вас лично))
Уважаемый kalikazandr, Спасибо.
Переписывать купленный скрипт, не вариант.
Изменять купленный скрипт, не вариант.
Обращаться к разработчику купленного скрипта, не вариант.
Нужно написать скрипт, который будет управлять приостановкой(при условиях) и запуском в работу(при условиях) стороннего (купленного) скрипта.
Прошу совета.
Спасибо.
Чтож, в таком случае делаете скрипт, который будет сильно вас извещать при наступлении соответствующего события и выключать/включать купленный скрипт руками, как самый легкий путь. Либо попробовать используя w32.dll (с выше указанного форума) найти окно "доступные скрипты" и кнопки управления в этом окне. Задача не тривиальная, на мой взгляд проще переписать платного бота или получить исходники.
Нужно написать скрипт, который будет управлять приостановкой(при условиях) и запуском в работу(при условиях) стороннего (купленного) скрипта.
Спасибо.
Прям хз, как вам помочь. Давайте спишемся kalikazandr@mail.ru
Попробуйте мне написать на почту подробнее.
Тут напишу.
Нужна работа купленного робота (написан на QLUA) в заданном мною диапазоне цен (часть стратегии).
При выходе цены из диапазона купленный скрипт (робот) приостанавливаем, при заходе цены в диапазон запускаем.
Желательно, чтобы управляющий купленным роботом скрипт был написан на QLUA.
Спасибо.
Здравствуйте! Через WinAPI, наверное, можно это реализовать, т.е. программно нажимать кнопки "Запустить" и "Остановить" скрипт, но нужно будет поковыряться, чтобы до них добраться. Пример использования WinAPI есть в скрипте автоматической авторизации: https://quikluacsharp.ru/quik-qlua/qlua-lua-skript-avtomaticheskoj-avtorizatsii/