StockSharp, lua и стаканы

  1. Аватар v3Rtex
    Сергей, да, скорее всего так и сделаю, вариантов не остается
    В конце концов мне только стакан своровать, остальное можно оставить на стокшарпе.
    Спасибо за отзыв, ваши комментарии достойны отдельного поста.
  2. Аватар Сергей
    v3Rtex,
    fix/twime plaza2 хостинг роботов на серверах ММВБ и тп — это другая история все эти фитчи для обычного рядового трейдера достаточно дорогое удовольствие, а изначальный вопрос был по QUIK S# и альтернативах передачи данных -).

    По поводу S# я ранние пробовал разрабатывать с помощью библиотек S#, часть кода которая отвечает за получение и обработку данных из Lua меня не устроила(закрытый чёрный ящик).
    Альтернатива в виде передачи данных по DDE не подошла из за  дополнительных телодвижений на настройку экспорта.
    По этим причинам я сделал свой способ внедрения своей dll .Net (CLR) в процесс QUIK. В итоге я получил достаточно высокую производительность и возможности управления через GUI внутри 1 адресного пространства, скорость обновления стакана 1 к 1 в том же потоке обработки данных, что и у главного потока QUIK, на тормоза как в S# не жалуюсь).
    Если нужна производительность конечно автомата и юзабильность в виде GUI, то тогда придется разбираться в тонкостях, а если же автомат пишется не под высоко нагрузочную задачу, то вполне достаточно использовать Qlua (Lua) в чистом виде без всяких S# и тп.

  3. Аватар П М
    v3Rtex, так по-умолчанию https://forum.quik.ru/messages/forum11/message10193/topic1096/#message10193

    а подвисает Квик скорее всего из-за вызова каких-либо функций на Lua. где-то у них там затык с синхронизацией при доступе к данным такой, что даже оконная функция диспетчера сообщений виндовых останавливается, квик моргает. у меня всегда чёрная тема включена, глючить начинает обычно в моменты сильной активности рынка, не успевает заполошный квик.
    при этом ему однозначно хватает компа, т.к. это i7 и памяти 16 гиг. 
    я на нём даже переодически оптимизатор прямо во время торгов гоняю.
    на расслабленном компе удалось добиться примерно 5-15% загрузки CPU при непрерывном поллинге данных из квика. 
    стакан я сам беру когда надо, а не когда его квик мне выдаст.
  4. Аватар Sergey
    v3Rtex, после открытие счета у брокера.
  5. Аватар v3Rtex

    Vanger, конечно делал. Я же говорю, у меня даже в примере обновляется не чаще раза в сек, да и то не всегда.

    На их форуме вопрос утонул. А техподдержка на него отвечать не будет, т.к. у них принцип — баги своей системы они помогают устранить  только после покупки продукта.

  6. Аватар Vanger
    v3Rtex, а на S# ты делал перед получением котировок RegisterMarketDepth?
    Вообще, такие вопросы на форуме S# обсуждают во всю http://stocksharp.ru/community/
  7. Аватар v3Rtex
    Sergey, да не нужно, итак понятно что проблема с моей стороны.
  8. Аватар Sergey
    v3Rtex, знакомство моё с S# только неделю, выбрал последнюю доступную на этот период. Стакан рисуется быстро, точно быстрее 1 раза в секунду. Возможно, смогу видео сделать, если потребуется. Ближе к вечеру.
  9. Аватар v3Rtex
    Sergey, как обычно, костыли — наше все.
    Стакан через дде, все остальное через луа. Только так.

    И странно, у меня даже в примерах частота обновления стакана дискретна и ~1сек.
    Вы какую версию s# пробовали?
  10. Аватар Sergey
    v3Rtex, какое решение в итоге нашли и в чем была причина?

    Я с этой неделе тестирую связку TS LAB с QUIK. Запускал пример STOCKSHARP, задержек не наблюдал с QUIK. Стаканы RIU7 и SiU7.
  11. Аватар Sergey
    Сергей, так сделано у stocksharp. QUIK# подтверждаю, грузит процессор по время торгов на 100%. Квик из-за него подтормаживает.
  12. Аватар v3Rtex

    Сергей, имхо, если уж заморачиваться, то лучше сразу писать для fix/twime
    В случае с квиком это абсолютно неоправданно, разница в микросекундах меркнет по сравнению с секундой раундрипа заявки через цепочку серверов.

    Если алгоритм выживает на таких низких скоростях, то лишние микросекунды ему погоды не сделают

  13. Аватар Сергей
    v3Rtex, Посмотрел проект на (https://github.com/finsight/QUIKSharp). Это не совсем обёртка на C#, так как код сервера написан полностью на lua с передачей данных в формате данных JSON по socket, я же выше предлагал способ в котором само приложение(plugin без socket) написаны на C#, а вызов qlua функций и функций обратного осуществляется с помощью вызова LuaApi из lua5.1.dll (специальная библиотека которая синхронизированная с потоками QUIK для вызова функций из qlua.dll), данный способ даст большую производительность чем передача данный через DDE, так как данные будут обрабатываться в непосредственно в памяти процесса QUIK.
  14. Аватар v3Rtex
    Сергей, обертку луа в c# ребята уже написали (https://github.com/finsight/QUIKSharp)
    Просто так исторически сложилось, что с проблемой я столкнулся уже написав 90% робота на стокшарпе :D поэтому искал решение в рамках этого проекта.
  15. Аватар Сергей
    Лучше напиши свою обертку на C# для Lua (qlua.dll) библиотеки, для этого есть либа сборщик которая умеет экспортировать функции
    аналогично dll Си, но правда есть тут 1 минус твоя загруженная dll на C# не умеет выгружается из памяти, только перезапуск QUIK решает данную проблему, но и эту проблему можно решить если при помощи AppDomain (больше инфы читай в mdsn).

    Вот набор ссылок для самостоятельно решения данной задачки:
    1)(Проект для экспорта C# функций, внимание для компиляции обязательно переведи винду на ENG язык, иначе сборки не получится)
    www.nuget.org/packages/UnmanagedExports
    2)Описание LuaApi вызывать через DllImpot (P-Invoke)
    www.lua.ru/doc/3.html
    3)Описание AppDomain
    msdn.microsoft.com/ru-ru/library/system.appdomain(v=vs.110).aspx

StockSharp, lua и стаканы

Кто пользуется стокшарпом, поделитесь, занимались ли когда нибудь экспортом стакана через луа?
Как быстро он у вас работал, сталкивались ли с ограничением скорости обновления? Если да, то как решали проблему

У меня почему то события обновления срабатывают, только если разница во времени между изменения стакана составит > сек.
Т.е. допустим пришел коллбек, и тут же стакан снова поменялся. По идее, мне должен прийти новый коллбек, но нет, s# считает что изменений не было. Более того, если насильно запросить состояние стакана через GetMarketDepth, он присылает предыдущее состояние.

В итоге лютый треш, старый робот на экселе(дде), сплошной ходячий костыль, уделывает стокшарп.

Чтобы купить акции, выберите надежного брокера: