Блог им. _Konstantin_

Изучение TRANSAQ или QLua

Есть желание изучить TXmlConnector и QLua библиотеки для создания около рыночного проекта. Кто так же только думает об этом, но не нашел единомышленников, как говорится велком )) а т.к. перехожу на новый (для себя) язык программирования C#, то приветствуются к участию так же новички в программировании и желающие изучить тему кодинга и алготрейдинга на C# ))
★2
21 комментарий
Хотелось бы попробывать, но нужно уяснить.Конечная цель какая? Для чего?
Конечную цель на данном этапе обсуждать смысла нет, она у всех может быть в итоге разная, но в целом это создание коннектора(ов) для аналитических систем и торговых роботов.
На данном этапе пока интересует получение исторических данных и отправка торговых транзакций по одному из 2-х способов:
1. TRANSAQ <-> тестовая программа
2. QUIK <-> тестовая программа
Со способом подключения пока сам не определился, везде есть свои плюсы и минусы, но для масштабируемости в последующие проекты, вариант 2 вроде предпочтительнее, но нужно будет определяться совместно, что бы легче все освоить.
А вот после выполнения данной задачи, можно будет определятся с конечной целью, либо она будет общая либо разная ))
Для обсуждения можно переместиться в Skype (есть в контактах) или Telegram (@coder_ex)
Константин, Тема интересная, нужная но я к сожалению  в ней полный «0». Только присматриваюсь, как бы подступится.
Владимир Иванов, я на MQL пишу и немного на С++Qt, но по многим причинам решил уйти на C# поэтому для меня это так же новое )) если есть желание вместе писать и изучать C# то почему бы не начать ))
Ставьте VS, создадим общий git и начнем ))
Чтобы сделать второй вариант QUIK <-> программа, понадобится QLua  и С++, а потом уже С#. Так что начинайте с них.
avatar
как начать мы обсудим с тем, кто пристыкуется к теме, а плюсы я в принципе знаю, зачем же с них начинать ))
кстати данный вариант есть и без плюсов, где то в нете попадалась статья, там правда было условие для проекта — х86 и проект на английском в ОС из-за каких то там нестыковок при компилировании, но это ведь не проблема переключить ОС на вражий и чуждый нам как патриотам язык ))
Константин, Если соберетесь использовать quik lua, то в луа есть api. Его можно использовать на нативных языках, например на си++. Далее можно передавать данные в любое внешнее приложение по сети или pipes. Можно с танцами и бубном писать на си#. Для этого нужно в одну функцию встроить добавить флаг экспорта в формате cdecl. Для этого придется дикомпилировать написанную вами dll на с#, а потом ее собрать заново. Так же придется экспортировать библиотеки описания lua api на с#.  В общем не много геморройно. Так что лучше использовать с++ на стороне скрипта на луа. А на стороне робота c#. Но честно, говоря с# не лучшее решение для роботов.
avatar
_cdecl это декларация о вызовах, для C# можно использовать COM, и есть решения с QUIK использовать без плюсов напрямую в C#
насчет торговых роботов — я не собираюсь использовать HFT, поэтому мне пойдет и C#
Константин, 
_cdecl это декларация о вызовах, для C# можно использовать COM
cdecl — это декларация о вызовах, т. к. чтобы использовать lua api нужно экспортировать одну функцию из dll, а на c# этого нельзя сделать без диассеблирования и повторного компилирования.
есть решения с QUIK использовать без плюсов напрямую в C#
Возможно существуют через использования внешних модулей (dll). Но тогда вы ограничиваетесь только использованием lua скриптов. А lua язык скриптовый язык, поэтому скорость передачи будет меньше, чем при использовании lua api. У меня например реализована передача данных через сеть. Это быстрое решение. Но не такое, которое хотелось бы.
насчет торговых роботов — я не собираюсь использовать HFT, поэтому мне пойдет и C#
Проблема не HFT. А в том объеме данных, которые поступают с биржи и сборщике мусора и возможных утечках. Написать хорошее приложение, которое эффективно использовало память на c# требует профессиональных умений.
avatar
Александр, думаю тут есть ответ на вопрос как без плюсов quik2dde.ru/viewtopic.php?id=186
но зачем устраивать какой то спор, если нужны будут плюсы то в чем проблема не понимаю ))
насчет объема данных возвращаемых функциями думаю обойтись малой кровью, через Shared memory, класс на плюсах есть, попробую его портировать под C#, только я не помню, можно ли увеличивать размер файла после его создания, это к теме получения тех же котировок, пока все только в уме, как будет реализовано не знаю, это будем обсуждать с тем, кто подключится ))
и кстати зачем упираться в QUIK, можно ведь разнести коннектор под разные задачи, насколько помню, в QUIK как раз проблема с историей, эту историю можно брать с того же МТ5, где она хранится с июля 2016 года вполне корректно (я про тиковую историю), историю в барах можно так же взять оттуда, но это все только мысли, как все соберется пока ни кто не знает ))
Константин, 
думаю тут есть ответ на вопрос как без плюсов quik2dde.ru/viewtopic.php?id=186
А вы уверены, что это рабочее решение? Вот у меня не получилось сделать. Это решение базируется на том, что я описал выше. Но оно не рабочее. Я сам создавал свое решение. Делов на пару часов.
историю в барах можно так же взять оттуда, но это все только мысли
Это дела вкуса, как реализовать. Мы говорим о том, как реализовать доступ к Lua api на c#.
насчет объема данных возвращаемых функциями думаю обойтись малой кровью, через Shared memory
Ну как вариант передачи данных в ваше приложение из lua скрипта. Но я думаю проще реализовать или через сеть или через pipes.
эту историю можно брать с того же МТ5
Можно и так делать, если необходимы тики. Если нужны только минутные свечи, то можно взять из quik. На lua функция получения истории свечей есть.
avatar
Константин, По поводу lua.cs — там не все функции описаны, но основные. Придется повозится с некоторыми колбеками. А так прикольный результат.
Вторым условием является английский интерфейс windows, это к сожалению условие пакета, при русском интерфейсе windows компиляция выполнятся не будет.
Жесть конечно. Проще свое решение напилить, за одним разобраться, как оно реализовано. Полезно знать.
avatar
спс за позиционирование на возможные грабли )) будете у меня консультантом если что  ))
Константин, А с чего вы взяли, что я хочу быть вашим консультантом? Я описал вам возможные грабли вашего же решения, т. к. сам серьезно повозился, прежде чем разобраться, как оно работает.
avatar
ну вдруг вы хотите, но еще не знаете об этом )) я и застолбил на всякий случай…
Вот же https://github.com/finsight/QUIKSharp

Отлично работает из коробки с permissive лицензией бесплатно, используется в TsLab.
avatar
buybackoff, спс, нужно попробовать, а сами пробовали ее?
Константин, я её написал ;) А другие люди помогли довести её до ума.
avatar
buybackoff, есть описание API этой библиотеки?
Константин, Она полностью повторяет QLua, только в C#. Для справки можно использовать QLUA.chm из папки Квика. Как запустить и использовать — есть рабочие примеры в репозитории.
avatar

теги блога Константин

....все тэги



UPDONW
Новый дизайн