QScalp работает с квиком через QscalpAgent.dll, которая грузится в QscalpAgent.lua. Обмен через SharedMemory. Пробуйте, если есть скил в программировании.
Для желающих писать плагин целиком на C++ библиотека доступа к QLUA API: https://github.com/elelel/qluacpp Реализовано не все, но при необходимости не сложно дописать доступ к нужным функциям.
El El написал: Для желающих писать плагин целиком на C++ библиотека доступа к QLUA API: https://github.com/elelel/qluacpp Реализовано не все, но при необходимости не сложно дописать доступ к нужным функциям.
было бы неплохо, если б там ещё и GUI было "прикручено", а так... желающие писать на С++ - по определению уже знают, как использовать LUA C API.
El El написал: Для желающих писать плагин целиком на C++ библиотека доступа к QLUA API: https://github.com/elelel/qluacpp Реализовано не все, но при необходимости не сложно дописать доступ к нужным функциям.
было бы неплохо, если б там ещё и GUI было "прикручено", а так... желающие писать на С++ - по определению уже знают, как использовать LUA C API.
GUI - вы имеете в виду API для работы с графиками и т.п.? Они не написаны, т.к. не использовались в моих проектах. Можно написать обертку и для них. Отличие от обычного использования LUA C - отсутствие необходимости знать про Lua. То есть, не надо думать как помещать параметры на стек, как обращаться к VM Lua, как читать данные. Единственное, что надо знать о Lua - уметь подклинковать библиотеку C Lua API и написать пару строк в заголовке основого cpp файла.
насчёт GUI - это всё мои мечты. т.к. законными средствами - нельзя создать библиотеку визуальных контролов для QLUA и QUIK-а. в плане самой Вашей библиотеки - думаю, многим она будет интересна в плане применения STL + LUA.
El El написал: Для желающих писать плагин целиком на C++ библиотека доступа к QLUA API: https://github.com/elelel/qluacpp Реализовано не все, но при необходимости не сложно дописать доступ к нужным функциям.
Вот что надо, только лучше чтобы команда Quik это написала! Почему это не написано?
El El написал: Для желающих писать плагин целиком на C++ библиотека доступа к QLUA API: https://github.com/elelel/qluacpp Реализовано не все, но при необходимости не сложно дописать доступ к нужным функциям.
Никак не хочет компилировать в Visual Studio, может есть (.sln) проект?
Ну хотя бы example и чтобы dll делал? У меня на VS 2015 проект и знаю как это либу прикрутить (это не помогло: пример плагина и пошаговая инструкция к нему, включая генерацию проекта под студию). Нужен .sln и ваш example dll компилируется.
mmonk1980 написал: Ну хотя бы example и чтобы dll делал? У меня на VS 2015 проект и знаю как это либу прикрутить (это не помогло: пример плагина и пошаговая инструкция к нему, включая генерацию проекта под студию). Нужен .sln и ваш example dll компилируется.
Возможно, я не понял,что вы имели в виду в предыдущем сообщении, особенно под "Нужен .sln и ваш example dll компилируется." Sln не генерируется cmake-ом? Или нужен только .sln от самой библиотеки qluacpp? Для этого нужно просто запустить cmake -G "Версия студии" -Dпараметры_с_путями_к_Lua c:\path\directory\to\qluacpp
Библиотека компилируется как обычная статическая библиотека для Visual Studio. Если нужна компиляция в динамическую, то скорей всего достаточно вставить в CMakeLists.txt от qluacpp в директиве add_library: "SHARED", не проверял. Если хотите создать библиотеку так, как было задумано, просто генерируете солюшн от qluacpp как сказано выше, потом добавляете этот проект с библиотекой в свой проект примерно как описано в обучалке от Microsoft как пользоваться Студией (последний раздел): https://msdn.microsoft.com/en-us/library/ms235627.aspxТеоретически если желание все делать от руки, должно работать именно так.
Я не могу на вашем компьютере набрать команду "cmake ... путь_где_создать_солюшн путь_куда_скачали_библиотеку". Создать проект под MSVS 2015 тоже не могу: у меня нет MSVS2015, да и я просто не помню как их создают там вручную. Не создавал их мышкой в Студии почти лет десять. Прислать сгенерированный тоже не могу: он генерируется с учетом путей на системе, на которой вызывается CMake, работать у вас не будет. Создавать от руки проект под каждую версию студии, плюс не под MS компиляторы, и распространять библиотеку так, я считаю шагом назад и уводить с современных средств генерации проектов тоже не хочу.
mmonk1980 написал: У вас example в файле README.md, выложить dll и проект .sln к нему...
Этот example был почищен и переведен в репозитарий qluacpp-tutorial, в который добавлен и проект CMake, генерирующий .sln ко всем Студиям. Одновременно он был убран из файла README.md, чтобы не путать пользователей. В этом же README.md указаны требования: CMake, Lua 5.1, C++11 компилятор. Эти требования означают, что данный софт надо иметь на своем компьютере и уметь им пользоваться. В том числе, невозможно пользоваться библиотекой, если не уметь генерировать CMake проект под выбранную среду по вкусу (например, .sln под Студию 2015) и невозможно пользоваться библиотекой, если не уметь подключать библиотеки в выбранной среде. Как сгенерировать .sln, указано выше. Как подключить библиотеки в Студию, тоже указано по ссылке на MSDN. В скомпилированной форме библиотека не распространяется: не хочу, чтоб ходили бинарники, которые потом перестают работать или чем-нибудь заражены. Кроме того, смысла в этом нет, если делаешь продукт сугубо для программистов. Файл .sln от библиотеки прикладывать невозможно по указанным выше причинам (не портабелен между компьютерами). Файл .sln от примера будет ссылаться на непортабельный .sln библиотеки, его надо от руки переделывать под каждую новую Студию и т.п.
Программисты разные бывают я например не cmake не пользуюсь и сразу ступор встаю как это делать. Обычно .sln идет c либой и example можно сразу проверить.
mmonk1980 написал: Программисты разные бывают я например не cmake не пользуюсь и сразу ступор встаю как это делать. Обычно .sln идет c либой и example можно сразу проверить.
Я тут к сожалению не смогу помочь, последние лет 10 я Студией пользуюсь только через CMake, причем как правило только тулзами командоной строки от нее, в основном для проверки собираемости проектов на разных компиляторах. Я вставю в ступор от кликанья по десяткам уровней вложенности окошек конфигурации Студии :) Раньше под Windows действительно любили распространять готовые sln проекты примеров, но теперь и версий Студий слишком много, и монополию на компиляцию под Win они потеряли. В случае же с этим примером и с этой библиотекой CMake глубоко изучать не нужно, все уже создано за пользователя. В примере пользователю нужно только запустить CMake из директории, куда генерировать проект и указать директорию, куда скачены файлы примера. Если нужно, как вы писали выше, подключить библиотеку уже к существующему не-CMake проекту в студии, нужно сделать то же самое, но скачав только qluacpp, и указав дополнительно всего-лишь две опции: путь к .h файлу от lua и путь к .lib файлу от lua.
El El написал: Если нужно, как вы писали выше, подключить библиотеку уже к существующему не-CMake проекту в студии, нужно сделать то же самое, но скачав только qluacpp, и указав дополнительно всего-лишь две опции: путь к .h файлу от lua и путь к .lib файлу от lua.
El El написал: Если нужно, как вы писали выше, подключить библиотеку уже к существующему не-CMake проекту в студии, нужно сделать то же самое, но скачав только qluacpp, и указав дополнительно всего-лишь две опции: путь к .h файлу от lua и путь к .lib файлу от lua.
Такое делал не помогает.
"Не помогает" - как конкретно? Что конкретно делали и какие именно ошибки? Лучше открыть issue на github, чтоб не напрягать читателей этого форума лишней информацией.
Скомпилировал библиотеку, даже запустил. my_main вызывается и все нормально, а вот OnAllTrade и OnQuote молчит, нечего не приходит! Что надо сделать что бы тоже работали?
void OnQuote(lua::state& l, const char* class_code, const char* sec_code) { // Print depth for currently opened depth windows (aka "level 2 quotes" qlua::extended_api q(l); if (class_code == qlua::classcode::TQBR::name()) { // Get quote info with normal API auto quote = q.getQuoteLevel2(class_code, sec_code); // Same with Extended API, with typechecked class code auto quote_tl = q.getQuoteLevel2<qlua::classcode::TQBR>(sec_code);
mmonk1980 написал: my_main вызывается и все нормально, а вот OnAllTrade и OnQuote молчит, нечего не приходит! Может QUIK в квик надо поставит и еще что?
Моя догадка: если вы раскоментируете строку, в которой пользователю сообщается, когда скрипт завершил работу, скорей всего увидите, что вы ждете вызовов, когда скрипт уже не работает. Если main уже не работает, то и весь скрипт не работает, см. родную документацию QLUA. А может, дело в другом. Лучше подробно описать, чего вы хотите добиться от плагина.
Мне нужно callback "Таблица всех сделок" и "Таблица текущих торгов" с разными инструментами. Что бы когда-они менялись C++ я принимал это. Как это сделать?
'qlua::api::getItem': no matching overloaded function found 'item_t qlua::api::getItem(const char *,const int) const': could not deduce template argument for 'item_t'
mmonk1980 написал: my_main вызывается и все нормально, а вот OnAllTrade и OnQuote молчит, нечего не приходит! Может QUIK в квик надо поставит и еще что?
'qlua::api::getItem': no matching overloaded function found 'item_t qlua::api::getItem(const char *,const int) const': could not deduce template argument for 'item_t'
видимо функция не реализована.
Все реализовано, у вас неправильный стейтмент с точки зрения С++
Возможно, сделать так можно, но я так никогда не делал, потому что это имеет мало смысла. Вопрос, можно ли так делать, общий для QLUA и не относится к qluacpp, ответ следует искать на форуме Lua в других топиках или задавать отдельно, если он не задан. Если нужны данные, которые впоследствии оказываются в таблице all_trades, их надо получать по OnAllTrades. Если зачем-то нужна информация, как они представлены в этой таблице, например соотносить с привязкой к номеру ряда, то, наверное, можно делать как у вас.