В последнее время приходится думать о том, как расширить имеющуюся торговую систему на как можно большее число торговых инструментов и финансовых рынков, включая зарубежные. Поскольку логика принятия решений для всех инструментов примерно одинаковая, есть необходимость отделить мух от котлет и разделить всю систему на набор независимых модулей, каждый из которых выполняет свою работу.
Предполагается, что система будет работать на фьючерсных рынках, что дополнительно усложняет задачу тем, что для каждого инструмента в каждый момент времени существует целый набор контрактов, из которых для работы нужен только один, наиболее ликвидных.
Следующая картинка показывает, как бы я хотел это реализовать на данном этапе:
Здесь датафиды занимаются тем, что поставляют информацию о контрактах и ценах, а также накапливают исторические данные в барных графиках.
Предсказатель занимается построением модели текущей ситуации и реализует функцию p = f(p0) для каждого инструмента, где p0 - текущая доля портфеля в инструменте, p - потребная доля портфеля. Предполагается, что в базе данных существует таблица с запросами от исполнителей к предсказателю с указаниями текущих p0, которую предсказатель просматривает и выдает ответы содержащие потребное p.
Исполнители занимаются тем, что получают от терминалов оценки портфеля и позиций, вычисляют p0, отправляют запросы в базу данных и в случае необходимости реализуют соответствующее изменение p.
Датафиды могут взаимодействовать с другими терминалами, нежели исполнители. К примеру, исполнитель для FORTS наверняка будет взаимодействовать с Quik просто в силу большей распространенности и большей надежности этого терминала, однако Quik в качестве датафида - мягко говоря, неудачный выбор. есть более интересные варианты: Transaq Connector, FAST, Plaza II. С иностранными терминалами проще, поскольку, к примеру, InteractiveBrokers дает API на все вкусы, начиная от Excel и ActiveX и кончая тем же FIX.
Можно даже ограничиться одним API для получения данных - к примеру, CQG и DirectFN дают фиды ко всем биржам включая RTS. Правда, недешево.
Разделение на датафиды и исполнители также упрощает переход от одного брокера к другому, поскольку даже в случае смены торгового терминала или API будет меньше работы, не нужно будет настраивать получение ценовых данных.
Достоинством схемы является то, что каждый из модулей может работать независимо и даже на независимой машине, а при необходимости можно построить распределенную схему с дублирующими модулями, где есть несколько независимо работающих предсказателей, баз данных и датафидов/исполнителей, создавая таким образом избыточную надежность.
Автор: mehanizator (c) www.russian-trader.ru
Аннотация:
В последнее время приходится думать о том, как расширить имеющуюся торговую систему на как можно большее число торговых инструментов и финансовых рынков, включая зарубежные. Поскольку логика принятия решений для всех инструментов примерно одинаковая, есть необходимость отделить мух от котлет и разделить всю систему на набор независимых модулей, каждый из которых выполняет свою работу.
Предполагается, что система будет работать на фьючерсных рынках, что дополнительно усложняет задачу тем, что для каждого инструмента в каждый момент времени существует целый набор контрактов, из которых для работы нужен только один, наиболее ликвидных.
Следующая картинка показывает, как бы я хотел это реализовать на данном этапе:
Здесь датафиды занимаются тем, что поставляют информацию о контрактах и ценах, а также накапливают исторические данные в барных графиках.
Предсказатель занимается построением модели текущей ситуации и реализует функцию p = f(p0) для каждого инструмента, где p0 - текущая доля портфеля в инструменте, p - потребная доля портфеля. Предполагается, что в базе данных существует таблица с запросами от исполнителей к предсказателю с указаниями текущих p0, которую предсказатель просматривает и выдает ответы содержащие потребное p.
Исполнители занимаются тем, что получают от терминалов оценки портфеля и позиций, вычисляют p0, отправляют запросы в базу данных и в случае необходимости реализуют соответствующее изменение p.
Датафиды могут взаимодействовать с другими терминалами, нежели исполнители. К примеру, исполнитель для FORTS наверняка будет взаимодействовать с Quik просто в силу большей распространенности и большей надежности этого терминала, однако Quik в качестве датафида - мягко говоря, неудачный выбор. есть более интересные варианты: Transaq Connector, FAST, Plaza II. С иностранными терминалами проще, поскольку, к примеру, InteractiveBrokers дает API на все вкусы, начиная от Excel и ActiveX и кончая тем же FIX.
Можно даже ограничиться одним API для получения данных - к примеру, CQG и DirectFN дают фиды ко всем биржам включая RTS. Правда, недешево.
Разделение на датафиды и исполнители также упрощает переход от одного брокера к другому, поскольку даже в случае смены торгового терминала или API будет меньше работы, не нужно будет настраивать получение ценовых данных.
Достоинством схемы является то, что каждый из модулей может работать независимо и даже на независимой машине, а при необходимости можно построить распределенную схему с дублирующими модулями, где есть несколько независимо работающих предсказателей, баз данных и датафидов/исполнителей, создавая таким образом избыточную надежность.
Автор: mehanizator (c) www.russian-trader.ru
Аннотация:
В последнее время приходится думать о том, как расширить имеющуюся торговую систему на как можно большее число торговых инструментов и финансовых рынков, включая зарубежные. Поскольку логика принятия решений для всех инструментов примерно одинаковая, есть необходимость отделить мух от котлет и разделить всю систему на набор независимых модулей, каждый из которых выполняет свою работу.