Этот пример показывает, как соединить с Торговцем IB WorkstationSM, создать Рабочую станцию Торговца IB IContract и объекты IComboLegList, и создать порядок комбинации для календарного спреда. Календарный спред является одной из многих стратегий порядка комбинации. Эта стратегия использует в своих интересах различные даты истечения срока фондового опциона. Этот пример создает приказ на покупку на календарном спреде для Google®. Для получения дополнительной информации об объектах IContract, объекты IComboLegList и порядки комбинации, видят Интерактивный Справочник API Брокеров.
Этот пример использует демонстрационную функцию обработчика событий ibExampleEventHandler, чтобы обработать события, сопоставленные с созданием порядка комбинации. Используйте этот обработчик событий или запишите пользовательскую функцию обработчика событий. Для получения дополнительной информации смотрите Запись и Выполнение Пользовательских Функций обработчика событий с Интерактивными Брокерами.
Чтобы получить доступ к коду для этого примера, введите edit IBCombinationOrder.m.
Соединитесь с Рабочей станцией Торговца IB и создайте связь ib с помощью локального хоста и номера порта 7496.
ib = ibtws('',7496); MATLAB® возвращает ib как связь с Рабочей станцией Торговца IB с объектом Interactive Brokers® ActiveX®, локальным хостом и номером порта, который вы выбираете.
IContractСоздайте объект IB Trader Workstation IContract ibContract1. Здесь, этот объект описывает первый колл-опцион в календарном спреде. Создайте объект IContract с этими значениями свойств:
Символ Google.
Фондовый опцион.
Дата окончания срока действия является августом 2014.
Цена исполнения опциона составляет 535,00$.
Колл-опцион.
Количество долей равняется 100.
Совокупный обмен.
Первичный обмен
Долларовая валюта.
Здесь, EX является демонстрационным первичным обменным именем. Замените своим первичным обменным именем в ibContract1.primaryExchange.
ibContract1 = ib.Handle.createContract; ibContract1.symbol = 'GOOG'; ibContract1.secType = 'OPT'; ibContract1.expiry = '201408'; ibContract1.strike = 535; ibContract1.right = 'C'; ibContract1.multiplier = '100'; ibContract1.exchange = 'SMART'; ibContract1.primaryExchange = 'EX'; ibContract1.currency = 'USD';
Запросите детали контракта для ibContract1.
[cd1,ibReqID1] = contractdetails(ib,ibContract1);
cd1 возвращает подробные данные контракта для ibContract1. ibReqID1 возвращает идентификатор запроса для этого запроса деталей контракта.
Создайте объект IB Trader Workstation IContract ibContract2. Здесь, этот объект описывает второй колл-опцион в календарном спреде. Создайте объект IContract с этими значениями свойств:
Символ Google.
Фондовый опцион.
Дата окончания срока действия является сентябрем 2014.
Цена исполнения опциона составляет 535,00$.
Колл-опцион.
Количество долей равняется 100.
Совокупный обмен.
Первичный обмен
Долларовая валюта.
Здесь, EX является демонстрационным первичным обменным именем. Замените своим первичным обменным именем в ibContract2.primaryExchange.
ibContract2 = ib.Handle.createContract; ibContract2.symbol = 'GOOG'; ibContract2.secType = 'OPT'; ibContract2.expiry = '201409'; ibContract2.strike = 535; ibContract2.right = 'C'; ibContract2.multiplier = '100'; ibContract2.exchange = 'SMART'; ibContract2.primaryExchange = 'EX'; ibContract2.currency = 'USD';
Запросите детали контракта для ibContract2.
[cd2,ibReqID2] = contractdetails(ib,ibContract2);
cd2 возвращает подробные данные контракта для ibContract2. ibReqID2 возвращает идентификатор запроса для этого запроса деталей контракта.
IComboLegListЧтобы задать участки порядка комбинации, создайте объект IB Trader Workstation IComboLegList comboLegs.
comboLegs = ib.Handle.createComboLegList;
Здесь, этот порядок комбинации имеет два участка. Добавьте первый матч в comboLegs. Первый матч содержит эти значения свойств:
Рабочая станция Торговца IB сокращает идентификатор на первый контракт.
Непосредственное отношение участка.
Продайте колл-опцион.
Совокупный обмен.
Идентифицируйте открытый или сомкнутый строй на основе родительской безопасности.
Рабочая станция Торговца IB направляет порядок без обозначенного брокера.
Пробел назначил брокера.
ibLeg1 = comboLegs.Add; ibLeg1.conId = cd1.summary.conId; ibLeg1.ratio = 1; ibLeg1.action = 'SELL'; ibLeg1.exchange = 'SMART'; ibLeg1.openClose = 0; ibLeg1.shortSaleSlot = 0; ibLeg1.designatedLocation = '';
Добавьте ответный матч в comboLegs. Ответный матч содержит эти значения свойств:
Рабочая станция Торговца IB сокращает идентификатор на второй контракт.
Непосредственное отношение участка.
Купите колл-опцион.
Совокупный обмен.
Идентифицируйте открытый или сомкнутый строй на основе родительской безопасности.
Рабочая станция Торговца IB направляет порядок без обозначенного брокера.
Пробел назначил брокера.
ibLeg2 = comboLegs.Add; ibLeg2.conId = cd2.summary.conId; ibLeg2.ratio = 1; ibLeg2.action = 'BUY'; ibLeg2.exchange = 'SMART'; ibLeg2.openClose = 0; ibLeg2.shortSaleSlot = 0; ibLeg2.designatedLocation = '';
Создайте объект IB Trader Workstation IContract orderContract для порядка комбинации. Создайте объект IContract с этими значениями свойств:
Символ Google
Порядок комбинации вводит BAG
Совокупный обмен
Первичный обмен
Долларовая валюта
Объект IB Trader Workstation IComboLegList comboLegs
Здесь, EX является демонстрационным первичным обменным именем. Замените своим первичным обменным именем в orderContract.primaryExchange.
orderContract = ib.Handle.createContract; orderContract.symbol = 'GOOG'; orderContract.secType = 'BAG'; orderContract.exchange = 'SMART'; orderContract.primaryExchange = 'EX'; orderContract.currency = 'USD'; orderContract.comboLegs = comboLegs;
Создайте объект IB Trader Workstation IOrder ibOrder. Здесь, порядок комбинации является порядком рынка купить одну комбинацию этих двух участков.
ibOrder = ib.Handle.createOrder; ibOrder.action = 'BUY'; ibOrder.totalQuantity = 1; ibOrder.orderType = 'MKT';
Запросите следующий допустимый идентификационный номер порядка id с помощью orderid.
id = orderid(ib);
Выполните заказ комбинации ibOrder с помощью этих аргументов:
Связь Рабочей станции Торговца IB ib
Порядок комбинации объект IContract orderContract
Объект IB Trader Workstation IOrder ibOrder
Закажите идентификатору id
Демонстрационный обработчик событий ibExampleEventHandler
d = createOrder(ib,orderContract,ibOrder,id,@ibExampleEventHandler)
d =
768413.00d возвращает уникальный идентификатор порядка для этого порядка комбинации.
Закройте связь Рабочей станции Торговца IB ib.
close(ib)
close | contractdetails | createOrder | ibtws | orderid