В продолжение темы
http://smart-lab.ru/blog/269715.php
Все таки переделал робота, частично разгрузил канал DDE (убрал стакан).
Теперь рабочая конфигурация выглядит так
QUIK->DDE->моя C# программа (NDDE сервер) (портфель, деньги)
QUIK->Lua скрипт->OnQuote()+PrintDbgStr(..)->моя C# программа (стакан)
моя C# программа->trans2quik.dll->QUIK (заявки и их статусы)
В общем, идея с PrintDbgStr вполне рабочая, два дня полет нормальный.
Робот заметно лучше шевелится и реагирует на стаканчик.
Скрипт на Lua передает изменения стаканов (метод OnQuote),
далее беру 5 лучших бидов и офферов, мне больше не надо.
А то понимаешь, по 20 значений для каждой стороны передавалось по DDE.
Конечно все тормозило. Счас уже незаметно торможение.
Можно было бы это все написать конечно сразу на Lua, да там разработка очень долгая.
Хотя конечно внутри квика все будет летать.
По прежнему жду компетентных товарищей использующих прямой доступ на биржу. Расскажите как у вас дела то…
Кстати, для разработчиков существует тестовый контур (и плаза, и фикс-фаст), и осваиваться с протоколами можно бесплатно.
у вас хфт робот?
Хотя, наверное, если делаете так ради опыта, то наверное оправданно.
Кстати, работа со стаканом там тоже есть.
А как TSLab от квика получает данные?
Потом, в скрипте Lua не дописывайте файл, а просто создавайте новый, типа 1.txt, 2.txt, .., 99.txt, 1.txt и т.д. у меня в цикле 99 файлов создаются подряд. Да можно хоть 1000, но они просто место займут на RAM диске, 100 файлов достаточно, новые просто перезаписывают старые. Еще: в скрипте qlua пишете не строчку, а «S|ваши данные|E». И когда прочитали весь файл целиком, проверьте наличие S| и |E в начале и конце. Изредка, но бывает, что 1мс задержки недостаточно, тогда, если нет |E, ждем еще 1мс и читаем еще раз. У меня так и работает, щадержка 1-2 мс в данном случае — это ниочем, не мешает.
За советы спасибо! К сожалению не хватает рейтинга, чтобы спросить ещё некоторые вещи в лс))
Файлы qlua кидает в ram disk, но можно и на SSD, без разницы. Пока это окончательный вариант, работает уже пару лет.