Взаимодействие с LUA от външен софтуер

Страници един 2 Напред

За да публикувате отговор, трябва да влезете или да се регистрирате

Мнения 1 до 25 от 46

1 Тема от ubase 2013-02-11 22:11:05 (2013-02-11 22:37:38, редактирано от ubase)

  • ubase
  • Член
  • Неактивен
  • Регистриран: 2013-02-11
  • Публикации: 31

Тема: Взаимодействие с LUA от външен софтуер.

С Lua разработчиците Quick са очевидно прекалено умни. Не просто да излагате Quik API и да пишете на какъвто език или среда искате. Дали в Java или VBScript, но дори в същата Lua. И едва ли е възможно да се напише сложен MTS в Lua. Е, поне е много трудно.
Като цяло не познавам Луа и не ми се иска да го науча, но ще трябва да си взаимодействам с него.
Така че имаме MTS, написан на C # за терминал с пълен API. Животът ви принуждава постепенно да преминете към използването на Quick.
Тук и Луа пристигна навреме.
Първоначално възникна идеята да се напише интерфейс DLL и изглежда, че всички проблеми са решени.
Включително тук - Извикване на C ++ DLL от LUA взаимодействието на Lua с dll е добре описано. Но, за съжаление, само един начин - извикване на dll функции от Lua. И това решава само един проблем - експортиране на терминални събития чрез DLL в нашата програма.
Между другото, решението също не е много лесно, т.к. за събитието Lua, нашата програма вече трябва да генерира своето събитие и едва сега можем да получим данни.
Е, да кажем, че по някакъв начин сме решили този проблем. Но програмата трябва самостоятелно да изиска някои данни от терминала, например, да види приложението - как е там. И как?
Оптималното решение би било да включите скрипта Lua във вашата програма C # и да го стартирате от програмата и всички функции и променливи на Lua са достъпни за нас без ограничения. И тогава DLL изобщо не е необходим. lua_open (). и напред.
В стандартна среда това се случва в даден момент. Но QLUA всъщност не е LUA. И как да го стартирате в Quick?

2 Отговор от администратор 2013-02-11 23:05:40

  • администратор
  • Администратор
  • Неактивен
  • Регистриран: 2012-09-21
  • Публикации: 218

Re: Взаимодействие с LUA от външен софтуер.

Мисля, че трябва да се опитате да промените мирогледа.
Сега имате готов MTS, с който искате да управлявате терминал за търговия, като го използвате всъщност само като транспорт за получаване на данни и изпращане на транзакции на борсата.

Lua в QUIK предоставя мощен модел на събитие, при който самият терминал (или по-скоро събитията, възникващи на борсата) са контролни сигнали за MTS. Например не е нужно да проверявате „какво има с приложението“. Достатъчно е да напишете манипулатор OnOrder и той ще бъде извикан по време на поставянето, по време на изпълнението или оттеглянето на поръчката. Тези. не е необходимо да проверявате състоянието на приложението, достатъчно е да обработите сигнала за промяната в състоянието на това приложение, това е всичко.

Разбирам, че това изисква усилия за преработване на съществуващия MTS, освен това често изисква промяна в собствения възглед за архитектурата на изграждането на система. Но все пак съм убеден, че такъв модел на събитие отваря значително повече възможности и дава повече гъвкавост. Просто се опитайте да поставите "на преден план" не вашия MTS, който работи според определен строго детерминиран алгоритъм, а QUIK, който генерира различни сигнали за вас, които от своя страна вече обработвате в MTS на всеки език (а Lua е много добре тук), приемане на вземане на решения и извършване на каквито и да е действия: поставяне на нови поръчки, отмяна на тези с активни поръчки или просто изчакване на следващите сигнали.