Он сказал, 'си', она пискнула, "луа, луа", он прошипел, 'шарп'
Луакнутые и сишарпнутые братья объясните убогому можно ли скрестить бульдога с носорогом при помощи 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 напрямую.
Средняя доходность ВДО на 16.12 составила, по нашим расчетам, 28,7% (под ВДО понимаем розничные выпуски облигаций с кредитными рейтингами не выше BBB). В абсолютном значении и в сравнении...
«Цифровое золото» прорвало верхнюю границу восходящего треугольника на уровне 94 500 и сейчас тестирует пробитую горизонталь, формируя серию коротких свечей типа «доджи». Учитывая относительно...
Стратегия 2026 по рынку акций от Mozgovik Research: трудный год, но, возможно, последний год низких цен
Сегодня у меня первый день официального отпуска. За окном темная звездная ночь, яркая белая луна, +24С и шум волн Андаманского моря. Неудачный перелет и джетлаг приводят к бессоннице, поэтому я...
Владимир Омск ***,
… Звезда — Убийца… !!***… новые Пиковые… Котировки ..!!! === Вот Вам и… Православный -...«Сочельник »! ***… Клоунам — мирового рынка… Весь прогноз ..!!! — Религиозные События ...
Ещё один результат глобального потепления
Исторический спад спроса на скотч, виски, коньяк и текилу привел к тому, что производители алкогольных напитков оказались в «озере» нераспроданных спиртных ...
DNN, так если они платят весь 2025 год, по кварталам 60, то какой смысл писать 70 и 40., итоговые по любому заплатят также 60.
А вот далее возможно 50 и потом 40
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 напрямую.