Он сказал, 'си', она пискнула, "луа, луа", он прошипел, 'шарп'
Луакнутые и сишарпнутые братья объясните убогому можно ли скрестить бульдога с носорогом при помощи 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 напрямую.
Бекас, вопрос перечитай свой -ты просил разобраться во фоатерах, к которым привязана структурка.
Если вопрос в том, чтобы разобраться в структурке — берёшь отимистичный, негативный и базовые с...
Лютый Комерсант, думаю, что ближайшие отчёты будут чуть хуже предыдущих. Очень удивлюсь, если будем расти на этом. По-прежнему ожидаю медленное сползание на 220. Приведут туда рано или поздно.
mrpink, это неофициальный канал в Телеге. Там «особо важные люди» слегка е.б.анутые. Админ идёт у них на поводу. Часть дебилов было послано найух из-за тупых высказываний, которые по моей просьбе н...
Я захожу сюда периодически, как будто поглядеть в аквариум как мелкие рыбки мечутся, обсуждают чего-то в периоде квартала или даже месяца. Для меня это какое-то шоу. Оказывается, «смотреть сверху» выз...
G A, Вы пишите, что «Конкретные условия сотрудничества с адвокатами могут быть обсуждены по результатам окончательного формирования группы лиц.»
То есть, условия сотрудничества с адвокатами ещё н...
Николай Иванов,
Проблема в том, что они на*** не нужны там никакие «корпорации» и прочие жыдоэскроу.
В нулевых мне мои 150квадратов на 10сотках в пригороде (тогдашней целине с болотом) вышл...
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 напрямую.