Счастливый Конец
Счастливый Конец личный блог
05 августа 2015, 21:59

Обмен данных QUIK->Lua->C#

В продолжение темы
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, да там разработка очень долгая.
Хотя конечно внутри квика все будет летать.

По прежнему жду компетентных товарищей использующих прямой доступ на биржу. Расскажите как у вас дела то…
28 Комментариев
  • Cristopher Robin
    05 августа 2015, 22:04
    что мешает самому прямой доступ взять и писать сразу под него?
      • Watcher
        05 августа 2015, 22:16
        Счастливый Конец, берите Plaza2 на первое время для приобретения опыта и получения осязаемых результатов. С FIX/FAST много геморроя в плане тарифов (дороже, чем плаза), ну и сама эта связка немного сложнее плазы, в остальном по тестам биржи обмен данными по Plaza2 и FIX/FAST по скоростным характеристикам примерно одинаков.
        Кстати, для разработчиков существует тестовый контур (и плаза, и фикс-фаст), и осваиваться с протоколами можно бесплатно.
  • Ivor
    06 августа 2015, 00:46
    вроде инструкция есть по поводу прямого подключения к бирже, на сайте их, не читали ее?
    у вас хфт робот?
      • Ivor
        06 августа 2015, 01:02
        Счастливый Конец, тогда странно, что вы используете прямое подключение, плюс такую сложную конструкцию квик+луа+с#. У меня тоже обычные алгоритмические роботы, но всё в разы проще и дешевле, и тоже на с#.
        Хотя, наверное, если делаете так ради опыта, то наверное оправданно.
          • Ivor
            06 августа 2015, 01:17
            Счастливый Конец, комбайн для алготрейдера — ТСЛаб. И разрабатывает, и тестирует, и торгует. Сама разработка алгоритма ведется в visual studio, там же и дебагер, и подключается к тслабу через кубик.
            Кстати, работа со стаканом там тоже есть.
              • Ivor
                06 августа 2015, 10:18
                Счастливый Конец, никак, на прямую от брокера берет.
          • Ivor
            06 августа 2015, 01:20
            Счастливый Конец, я тоже в свое время возился с луа, и dde, и в эксели загружал выгружал, мучился с кучами ошибок и падениями. Потом бросил все дело.
              • Dmitriy
                10 ноября 2015, 19:32
                Счастливый Конец, а как ваши дела с ram-диском? вы же вроде перешли на отдавание данных от квика через рам-диск? или до сих пор у вас работает dde?
                  • Dmitriy
                    10 ноября 2015, 20:47
                    Счастливый Конец, а я как раз вдохновился ранее вашим описанием метода экспорта через ram-disk, что вот тоже прямо сейчас пытаюсь его освоить, простота этого способа очень радует меня, новичка в с#)). Но в недавнем вашем комментарии «Под квиком использую QLua, Trans2quik.dll, NDDE» не увидел упоминания о рам-диске и подумал, может что-то изменилось и вы по какой-то причине отказались от него.
                      • Dmitriy
                        15 ноября 2015, 05:48
                        Счастливый Конец, а какая задержка у вас получается на все эти операции записи-реагирования-чтения?
                          • Dmitriy
                            15 ноября 2015, 13:29
                            Счастливый Конец, а тики таблицы всех сделок не передаёте?
                          • Dmitriy
                            15 ноября 2015, 13:44
                            Счастливый Конец, и ещё я пока сталкиваюсь с проблемой одновременности потоков. Реагирующее событие начинает реагировать на изменение файла раньше, чем строчка будет записана в файл. Как вы с этим боретесь?
                              • Dmitriy
                                17 ноября 2015, 22:12
                                Счастливый Конец, насколько я понимаю Thread.Sleep(1) эквивалентно Thread.Sleep(16) и кучу других вариантов при разной загруженности процессора.
                                За советы спасибо! К сожалению не хватает рейтинга, чтобы спросить ещё некоторые вещи в лс))
                                  • Dmitriy
                                    17 ноября 2015, 22:46
                                    Счастливый Конец, точно! только что перепроверил — действительно так. Странно, видимо я не так воспринял то, что начитался про этот Sleep. Думал там как раз для определения длительности используется системный таймер… Ничего не пойму, но ладно, разберусь)
  • nskez
    27 марта 2017, 13:31
    А почему нельзя поступать как тот же Chrome? Т.е. пока пишется файл на диск, то файл имеет расширение .txt.tmp, как Lua скрипт из QUIK закончил писать, то переименовать в .txt. Непонятно зачем городить слипы, а потом еще и пытаться под них подстроиться.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн