Он сказал, 'си', она пискнула, "луа, луа", он прошипел, 'шарп'
Луакнутые и сишарпнутые братья объясните убогому можно ли скрестить бульдога с носорогом при помощи LuaInterface или NLua, чисто теоретически я никаких проблем не вижу, но может уже кто уже наткнутся на «подводные камни»
Нашел тут хороший сайт quikluacsharp.ru/... Там меня напугали с аж с двумя плюсами…
QLUA тем и хорош, что позволяет в LUA реализовать интерфейс взаимодействия с биржей (выставление, снятие заявок, получение истории из примерно 3000 свечей, и т.д.), а «движок» стратегии упаковать в C++ и приаттачить dll
Scorpio, верно, можно и целиком на LUA, но я суеверно придерживаюсь убеждения, что машинный код работает быстрее, чем транслятор LUA. В домашних условиях это не даёт преимущества, но всё же…
Евгений Гуревич, Евгений все в конце концов будет машинным кодом..., но пока до этого дойдет, срипт сначала будет гусеницей и только потом бабочкой… Так как quik нам поставляет только гусениц, то какая нахер разница…
//=== Реализация функций, вызываемых из LUA ====================================================================//
static int forLua_TestFunc(lua_State *L)// Возвращает заданный текст
{
lua_pushstring(L, «Привет из C/C++»);
return(1);
}
//=== Регистрация реализованных в dll функций, чтобы они стали «видимы» для Lua ================================//
static struct luaL_reg ls_lib[] = {
{ «TestFunc», forLua_TestFunc }, // из скрипта Lua эту функцию можно будет вызывать так: QluaCSharpConnector.TestFunc(); здесь можно указать любое другое название
{ NULL, NULL }
};
//=== Регистрация названия библиотеки, видимого в скрипте Lua ==================================================//
extern «C» LUALIB_API int luaopen_QluaCSharpConnector(lua_State *L) {
luaL_openlib(L, «QluaCSharpConnector», ls_lib, 0);
return 0;
}
Тут ещё инициализация. Если не разбираться в интерфейсе, то лучше импортировать С++ DLL из примера, далее в этой же DLL импортировать свои функции из C# библиотеки.
"Он сказал - поехали, он взмахнул рукой,
Словно вдоль по Питерской, Питерской
Пронёсся над Землёй.
Словно вдоль по Питерской, Питерской
Пронёсся над Землёй.
Знаете, каким он парнем был,
Как поля родные он любил.
В той степной дали первый старт с Земли,
Был признаньем ей в любви.
Он сказал - поехали, он взмахнул рукой,
Словно вдоль по Питерской, Питерской
Пронёсся над Землёй.
Словно вдоль по Питерской, Питерской
Пронёсся над Землёй."<br><br>https://www.youtube.com/watch?v=sMeOrfu6f8U
Мужики, я еще праздную, потому добрый… Профессионально пишу на .net уже много лет. Сравнивать возможности с# c lua просто несерьезно — вещи несравнимые, посему нужна оболочка...
Я не уверен, что прослойка из с++ API лучше, чем LuaInterface(NLua)… Хочу, чтобы мне доказали обратное...
Кстати, еще один довод в пользу c# в том, что я хотел бы к скриптам прикрутить нормальный UI на wpf, а также альтернативный вариант построения графиков… Например, сейчас в Квике нельзя использовать свечи типа range, кластерные свечи и т.п.
И я не хочу «коннектор», который использует другое приложения. Хочу, чтобы «точкой входа» был скрипт...
Сергей Гаврилов, А вы знаете, что скрипт работает в разных потоках и эти потоки не основные. Поэтому прикручивая UI на с# к lua скрипту вы можете получить массу глюков. Форма то будет крутиться не в основном потоке квика.
Так что лучше передавать данные из квика в свое собственное приложение.
Можно писать приложения на с#, для этого есть несколько вариантов:
1. Создать таблицу экспортов в dll на c#. Но есть одно, но — передача параметров в lua api происходит по типу с. Это надо учесть. Утилиту github.com/Jonxxx/ExportDll можно переделать тут.
а так почитать эту тему jonxxx.me/13-metatrader/15-eksport-funktsij-iz-net-dll-c-dllexport-net-framework-v-metatrader
Там есть моя утилита, но она конвертацию параметров делает по умолчанию stdcall (https://yadi.sk/d/E1x2KDeLjniVB)
2. Написать переходник на с++, как собственно делается в разного рода LuaInterface. В этом переходнике создавать классы на с# и вызывать нужные функции.
Может и не помочь. Тут куча ведь неизвестных. Квик написан на си++ и полностью нативное приложение. GUI вы собираетесь писать на c# и wpf да еще не в контексте основного потока. Lua Api приспособлен больше для нативных языков. Если вы не знакомы с Lua Api, разберитесь как с ним взаимодействовать на си++. А потом на си++ вызывайте классы из си# с вашими формами на wpf напрямую.
Газета «Коммерсант» выпустила тематическое приложение о страховом рынке
Много интересных материалов для тех, кто работает в отрасли и тех, кто так или иначе с ней связан. Полагаем, публикации могут быть интересны и нашим инвесторами. Для удобства подготовили краткие...
В стратегии, которую мы представили рынку в 2023 году, одним из главных приоритетов было развитие собственных решений. Они более прибыльные для компании, а еще и обеспечивают нашу, технологическую...
Российские металлурги завершают год относительно неплохо на фоне прочих отраслей. Несмотря на санкционное давление и усложнение логистики компании сумели нарастить экспорт. Перспективы...
petruhinss, Душой надо быть не в чем-то лудоманском, а в нормальных вещах, иначе будет очередная трагедия. А в фонде нужно просто пахать, если это выбрано работой.
Когда я вижу дальние офз почти с доходностью как в ключе, с таким мизерным спредом то становится печально. Чтоб наш рынок вышел за 3000 и выше, ему потребуется ооочень долго сидеть на низах и провалив...
Международные резервы Росси показали исторический максимум 19 декабря 2025г: $752,6 млрд (+23,4% г/г; +3,2% м/м)
Международные резервы Российской Федерации
Объявлено * $ млрд => Курс ЦБ РФ ...
Международные резервы Росси показали исторический максимум 19 декабря 2025г: $752,6 млрд (+23,4% г/г; +3,2% м/м)
Международные резервы Российской Федерации
Объявлено * $ млрд => Курс ЦБ РФ...
Дмитрий, Их не волнует окупаемость, они пилят бабки через свои мегастройки, и делают это не первый год и не последний. Лучшее что можно сделать, это не покупать этот мусор.
Международные резервы Росси показали исторический максимум 19 декабря 2025г: $752,6 млрд (+23,4% г/г; +3,2% м/м)
Международные резервы Российской Федерации
Объявлено * $ млрд => Курс ЦБ РФ...
QLUA тем и хорош, что позволяет в LUA реализовать интерфейс взаимодействия с биржей (выставление, снятие заявок, получение истории из примерно 3000 свечей, и т.д.), а «движок» стратегии упаковать в C++ и приаттачить dll
это все равно что сказать, что «бегемот больше гиппопотама.»
Это два практически идентичных по синтаксису языка С++ и С#.
С# в алго применяется чаще, к нему больше библиотек прилагается чем к С++.
Это не в укор LUA. LUA это более высокоуровневый язык, ближе к скриптам…
Взял от сюда
quikluacsharp.ru/qlua-c-cpp-csharp/konnektor-dll-quik-qlua-lua-c/
и от сюда
quikluacsharp.ru/qlua-c-cpp-csharp/obmen-dannymi-mezhdu-dll-c-c-i-prilozheniem-c/
jonxxx.me/13-metatrader/15-eksport-funktsij-iz-net-dll-c-dllexport-net-framework-v-metatrader
Ошибка C:\Users\Sergey\AppData\Local\Temp\tmp9569\Synapse.CSLua.il(66): error: syntax error at token '.method' in: .method public hidebysig specialname rtspecialname Synapse.CSLua
oxozle.com/2014/07/02/kak-izmenit-yazyk-dlya-ne-unicode-programm-v-windows-8
Я не уверен, что прослойка из с++ API лучше, чем LuaInterface(NLua)… Хочу, чтобы мне доказали обратное...
Большой опыт — существенная причина. Вперёд!
И я не хочу «коннектор», который использует другое приложения. Хочу, чтобы «точкой входа» был скрипт...
Так что лучше передавать данные из квика в свое собственное приложение.
Можно писать приложения на с#, для этого есть несколько вариантов:
1. Создать таблицу экспортов в dll на c#. Но есть одно, но — передача параметров в lua api происходит по типу с. Это надо учесть. Утилиту github.com/Jonxxx/ExportDll можно переделать тут.
а так почитать эту тему jonxxx.me/13-metatrader/15-eksport-funktsij-iz-net-dll-c-dllexport-net-framework-v-metatrader
Там есть моя утилита, но она конвертацию параметров делает по умолчанию stdcall (https://yadi.sk/d/E1x2KDeLjniVB)
2. Написать переходник на с++, как собственно делается в разного рода LuaInterface. В этом переходнике создавать классы на с# и вызывать нужные функции.
Это сделать легче всего и меньше будет проблем.Может и не помочь. Тут куча ведь неизвестных. Квик написан на си++ и полностью нативное приложение. GUI вы собираетесь писать на c# и wpf да еще не в контексте основного потока. Lua Api приспособлен больше для нативных языков. Если вы не знакомы с Lua Api, разберитесь как с ним взаимодействовать на си++. А потом на си++ вызывайте классы из си# с вашими формами на wpf напрямую.