Задача в контексте FinLab.PairTrade – это отдельный синтетический финансовый инструмент. -Простая задача -Уровневая задача -Суперзадача -Пользовательская задача -Задача с перекрытием -Задача без перекрытия
Программа FinLab.MTS позволяют пользователю свои собственные торговые стратегии, выходящие за рамки торговых стратегий, заложенных в FinLab.PairTrade. Программа FinLab.MTS имеет специально разработанный для этих целей API-интерфейс. Для понимания принципов работы программы FinLab.MTS необходимо рассмотреть два ключевых понятия: Пользовательская задачаАлгоритм пользователя
Пользовательская задача выступает посредником между алгоритмом пользователя и торговым терминалом. Пользовательская задача передает алгоритму пользователя данные о котировках, опрашивает алгоритм о необходимости постановки или снятия заявки, а так же информирует алгоритм о совершаемых задачей сделках. рассчитана на парный трейдинг. В ней содержится «Первая нога» (фьючерс) и «Вторая нога» (спот). это программная структура с четко определенным функционалом, предназначенная для анализа торговых данных и принятия торговых решений. при реализации своего алгоритма пользователь избавляется от необходимости решать вопросы совместимости с терминалом, обработки служебной информации, перекрытия открываемых позиций реализация алгоритма со стороны разработчика ни чем не отличается от общего случая. Более того, можно написать алгоритм, применимый одновременно для всех трех вариантов трейдинга. Пользовательская задача Алгоритм пользователя
С программной точки зрения алгоритм пользователя – это класс, наследующий абстрактный класс Algorithm из пространства имен FinLab.MTS.Infinity библиотеки FinLab.MTS.Infinity.dll. При наследовании указанного класса пользователь должен переопределить ряд методов и свойств класса. Переопределяемые методы класса Algorithm отвечают за принятие решений о постановке или снятии заявок, обрабатывают данные о сделках, совершенных согласно пользовательского алгоритма.
Работа пользовательской задачи и алгоритма строится по следующему принципу: В любой момент времени в рынке может быть не более одной заявки на покупку и не более одной заявки на продажу. Этот принцип однозначно определяет последовательность работы пользовательской задачи: 1)При любом изменении на рынке пользовательская задача обращается к алгоритму 2) Если в рынке нет заявки на покупку, то пользовательская задача опрашивает алгоритм на предмет выставления новой заявки на покупку. Если алгоритм ничего не выдает в ответ, то программа ждет следующего изменения ситуации на рынке. 3)Если алгоритм выдает команду на выставление заявки, то пользовательская задача передает эту команду в терминал и дожидается ответа терминала о результате выполнения этой команды. 4)Если команда не выполнена, и заявка не выставлена, то программа возвращается к пункту 1. 5)Если же команда выполнена, и заявка становится в очередь, то при следующем обновлении стакана задача опрашивает алгоритм на предмет снятие этой заявки. В случае отказа – задача возвращается в пункту 5, в случае необходимости снятия заявки – снимает заявку и возвращается в пункту 1. 6) Если заявка исполняется полностью, то задача возвращается к пункту 1. 7) Если происходит сделка, то задача оповещает алгоритм о совершенной сделке. Процесс аналогичен для заявок на продажу.