В этом примере показано, как создать FIX связь Flyer™, данные о событиях процесса для отправки сообщений FIX, и представить различные порядки с помощью сообщений FIX.
FIX является протоколом финансовой индустрии, который упрощает низкую торговлю задержкой. Для получения дополнительной информации о протоколе FIX, смотрите, что FIX Торгует Сообществом.
Чтобы получить доступ к примеру кода, введите edit FixFlyerExample.m в командной строке.
Импортируйте библиотеки FIX Flyer Java®.
import flyer.apps.*; import flyer.apps.FlyerApplicationManagerFactory.*; import flyer.core.session.*;
Создайте связь Engine Флаера FIX c использование этих аргументов:
Имя пользователя username
Пароль password
IP-адрес ipaddress
Номер порта port
Номер порта информации для заказа orderport
username = 'guest'; password = 'guest'; ipaddress = 'example.fixcomputeserver.com'; port = 12001; orderport = 13001; c = fixflyer(username,password,ipaddress,port,orderport);
Добавьте прослушиватель события FIX Flyer связи Engine Флаера FIX. Прислушайтесь и отобразите данные о событиях Engine Флаера FIX в браузере Рабочей области при помощи демонстрационного прослушивателя обработки событий fixExampleListener.
Чтобы получить доступ к коду для прослушивателя, введите edit fixExampleListener.m. Или, чтобы обработать данные о событиях в другом отношении, можно записать пользовательскую функцию прослушивателя обработки событий. Для получения дополнительной информации смотрите, Создают Функции в Файлах (MATLAB).
Обработайте события FIX Flyer Engine e использование демонстрационного прослушивателя обработки событий fixExampleListener. Задайте e как любая буква. fixExampleListener возвращает указатель на прослушиватель lh.
lh = addListener(c,@(~,e)fixExampleListener(e,c));
Подпишитесь на сеансы FIX и настройте Администратор приложений Флаера FIX. Укажите с сеансом Флаера FIX. Соедините Администратор приложений Флаера FIX с Engine Флаера FIX и запустите внутренний поток получения.
c.SessionID = flyer.core.session.SessionID('Alpha',... 'Beta','FIX.4.4'); c.FlyerApplicationManager.setLoadDefaultDataDictionary(false); c.FlyerApplicationManager.registerFIXSession(... flyer.apps.FixSessionSubscription(... c.SessionID,true,0)); c.FlyerApplicationManager.connect; c.FlyerApplicationManager.start;
Создайте два сообщения FIX с помощью массива структур order. Каждая структура в массиве представляет одно сообщение FIX. Оба сообщения обозначают продать транзакцию стороны для долей 1000 IBM®. Тип порядка является ранее заключенным в кавычки порядком. Инструкция по обработке порядка является частным автоматизированным выполнением. Время транзакции порядка является текущим моментом. Версия протокола THE FIX 4.4.
Установите MsgType к 'D' обозначить новый порядок.
order.BeginString{1,1} = 'FIX.4.4';
order.CLOrdId{1,1} = '338';
order.Side{1,1} = '2';
order.TransactTime{1,1} = datestr(now);
order.OrdType{1,1} = 'D';
order.Symbol{1,1} = 'IBM';
order.HandlInst{1,1} = '1';
order.MsgType{1,1} = 'D';
order.OrderQty{1,1} = '1000';
order.HeaderFields{1,1} = {'OnBehalfOfCompID','TRADER'};
order.BodyFields{1,1} = {'NoPartyIDs','3'; ...
'PartyID','1'; ...
'PartyRole','BBVA'; ...
'PartyID','1'; ...
'PartyRole','CVGX'; ...
'PartyID','1'; ...
'PartyRole','GSAM'};
order.BeginString{2,1} = 'FIX.4.4';
order.CLOrdId{2,1} = '339';
order.Side{2,1} = '2';
order.TransactTime{2,1} = datestr(now);
order.OrdType{2,1} = 'D';
order.Symbol{2,1} = 'IBM';
order.HandlInst{2,1} = '1';
order.MsgType{2,1} = 'D';
order.OrderQty{2,1} = '1000';
order.HeaderFields{2,1} = {'OnBehalfOfCompID','TRADER'};
order.BodyFields{2,1} = {'NoPartyIDs','3'; ...
'PartyID','1'; ...
'PartyRole','BBVA'; ...
'PartyID','1'; ...
'PartyRole','CVGX'; ...
'PartyID','1'; ...
'PartyRole','GSAM'};Используйте связь Engine Флаера FIX, чтобы отправить сообщения FIX. status содержит логический нуль для успешной доставки сообщений.
status = sendMessage(c,order);
Возвратите и отобразите информацию для заказа o для всех порядков. Редактор Переменных отображает содержимое o.
o = orderInfo(c);
openvar('o')Замените порядок. Создайте сообщение FIX replace с обновленным количеством 3 378 долей. Установите поле MsgType к 'G' задавать порядок замены.
replace.BeginString{1,1} = 'FIX.4.4';
replace.CLOrdId{1,1} = '338_REPLACE';
replace.origClOrdId{1,1} = '338';
replace.Symbol{1,1} = 'IBM';
replace.OnBehalfOfCompID{1,1} = 'TRADER';
replace.OrdType{1,1} = 'D';
replace.OrderQty{1,1} = '3378';
replace.MsgType{1,1} = 'G';
replace.Text{1,1} = 'REST API REPLACE';Отправьте сообщение FIX. Чтобы видеть замененный порядок, получите и отобразите информацию для заказа. Редактор Переменных отображает содержимое o.
status = sendMessage(c,replace);
o = orderInfo(c);
openvar('o')Теперь отмените порядок. Создайте сообщение FIX cancel с номером заказа 338. Установите поле MsgType к 'F' задавать порядок отмены.
cancel.BeginString{1,1} = 'FIX.4.4';
cancel.CLOrdId{1,1} = '338_CANCEL';
cancel.origClOrdId{1,1} = '338_REPLACE';
cancel.Symbol{1,1} = 'IBM';
cancel.OnBehalfOfCompID{1,1} = 'TRADER';
cancel.OrdType{1,1} = 'D';
cancel.MsgType{1,1} = 'F';
cancel.Text{1,1} = 'REST API CANCEL';
Отправьте сообщение FIX. Затем получите и отобразите отмененную информацию для заказа. Редактор Переменных отображает содержимое o.
status = sendMessage(c,cancel);
o = orderInfo(c);
openvar('o')Используйте демонстрационный прослушиватель обработки событий fixExampleListener прислушиваться к сообщениям FIX от Engine Флаера FIX. Прослушиватель fixExampleListener возвращает необработанное сообщение FIX в таблице fixResponse. Отобразите первые три столбца таблицы. Имена столбцов fixResponse содержите имена тега FIX из возвращенного необработанного сообщения FIX. Данные в столбцах содержат значения возвращенного необработанного сообщения FIX.
fixResponse(:,1:3)
ans =
BeginString BodyLength MsgType
___________ __________ _______
'FIX.4.4' '219' '8'
close(c)
addListener | close | fixflyer | orderInfo | sendMessage