Обмен данными между терминалами
Как организовать обмен между двумя рабочими местами quik?
Первое что приходит в голову - через текстовый файл. Одно рабочее место пишет данных в него, другое рабочее место читает. Пока одно пишет, второе ждет. В принципе, вариант несложный, но ненадежный и медленный. Допустимо, если обмен происходит только между двумя рабочими местами. А если необходим обмен между многими терминалами? Тут файл уже непригоден. Нужно обмениваться данными через оперативную память.
Ко мне обратился заказчик. Ему необходимо реплицировать (дублировать) заявки из основного (рабочего) терминала в несколько других. Обычно таких терминалов запущено более пяти.
При выставлении заявки она должна создаваться во всех остальных запущенных терминалах ровно по той же цене, что и в исходном. Должны поддерживаться как рыночные, так и лимитированные заявки. При снятии заявки она должна сниматься везде. Должны поддерживаться все доступные классы инструментов. Также необходимы фильтры по инструментам и по торговым счетам/кодам клиентов. Особо Заказчик обращал внимание на скорость реакции системы. И, естественно, должны отслеживаться и обрабатываться нештатные ситуации.
Конечно, через файловый обмен такую задачку не решить. Поэтому пришлось связать все запущенные терминалы через общую область памяти. Главное рабочее место поставляет туда данные, а ведомые разбирают и исполняют. Очередности доступа нет, все терминалы могут работать с общей памятью одновременно и параллельно.
Вот что получилось в результате (на примере одного ведомого счета и демо-торгов):
Скорость реакции не зависит от количества ведомых терминалов. Также не имеет значения, как выставляется в главном терминале заявка - вручную, роботом или как-то еще.
Upd. Более актуальная версия репликатора: Репликатор сделок
См. также
Публикуется с разрешения Заказчика
А можно купить эту программу?
Звоните голосом в скайп
Позвоните, пожалуйста, мне в скайп mikemsk.
RSS лента комментариев этой записи