Вопросы системной торговли. Реализация механических торговых систем с помощью торговых автоматов. Особенности применения программы технического анализа OmegaResearch Prosuite2000i. 3 октября 2003г. Россия, , Москва, Тверская, 22 тел./факс (095) , (095)
Пользователь создавший Механическую Торговую Систему (далее-МТС), подключив «Авто-Трейдер» имеет возможность не участвовать в торгах и не тратить время на детальный анализ рынка. При данной схеме присутствие человека становится необязательным, быстрота ввода заявок позволяет проводить арбитражные операции, а возможность получения данных о количестве купленных/проданных активов позволит мгновенно оперировать нужным объемом денежных средств или ценных бумаг. Пользователь создавший Механическую Торговую Систему (далее-МТС), подключив «Авто-Трейдер» имеет возможность не участвовать в торгах и не тратить время на детальный анализ рынка. При данной схеме присутствие человека становится необязательным, быстрота ввода заявок позволяет проводить арбитражные операции, а возможность получения данных о количестве купленных/проданных активов позволит мгновенно оперировать нужным объемом денежных средств или ценных бумаг. Относительная дешевизна и эксклюзивность данной DLL открывает новые возможности перед инвесторами и спекулянтами.
Необходимые и достаточные функциональные возможности «Авто-Трейдера» возможности «Авто-Трейдера» Получение информации о состоянии портфеля: Получение информации о состоянии портфеля: o Денежные средства o Количество купленных/проданных бумаг Выставление заявки по клиенту/клиентам Выставление заявки по клиенту/клиентам Получение номера заявки Получение номера заявки Снять заявку по номеру Снять заявку по номеру Автоматическое восстановление связи в случае разрыва соединения Автоматическое восстановление связи в случае разрыва соединения Проверка соединения с серверомПроверка соединения с сервером
Альтернативные варианты создания «Авто-Трейдера» «Авто-Трейдера» Обмен данными через текстовый файл. Обмен данными через текстовый файл. Обмен данными напрямую с сервером. Обмен данными напрямую с сервером. Возможность обмена данными через DLL дает несравнимые преимущества по сравнению с обменом данными через файл: Текстовый файл читается программой с интервалом не менее одной секунды, после чего обрабатывается программой интернет- трейдинга и только после этого отсылается на торговый сервер для исполнения, с использованием DLL вся цепочка преодолевается за доли секунды. Текстовый файл читается программой с интервалом не менее одной секунды, после чего обрабатывается программой интернет- трейдинга и только после этого отсылается на торговый сервер для исполнения, с использованием DLL вся цепочка преодолевается за доли секунды. Выставлять одновременно котировки по нескольким активам на различных биржах, одновременно по нескольким клиентам Выставлять одновременно котировки по нескольким активам на различных биржах, одновременно по нескольким клиентам
OMEGA Prosuite 2000i – программа технического анализа.OMEGA Prosuite 2000i – программа технического анализа. MTC – Механическая торговая система.MTC – Механическая торговая система. Блок обработки информации (написан для работы с DLL) – блок отправки заявокБлок обработки информации (написан для работы с DLL) – блок отправки заявок # DLL ориентирована на сервер ИФТ «Интерфин трейд. # DLL ориентирована на сервер ИФТ «Интерфин трейд. # каждой DLL присваивается логин, уникальный для каждого клиента. # каждой DLL присваивается логин, уникальный для каждого клиента. DLL (dynamic link library – динамическая библиотека обмена данными) - предназначена для исполнения заявок на сервере брокера.DLL (dynamic link library – динамическая библиотека обмена данными) - предназначена для исполнения заявок на сервере брокера. OMEGA Prosuite 2000i блок обработки информации DLL MTC Сервер ИФТ NetInvestor Client контроль заявок
Описание функций DLL defineDLLFunc: "d:\niordcover.dll", int, "conn",lpstr,int,lpstr,lpstr,lpstr,lpstr,int; defineDLLFunc: "d:\niordcover.dll", int, "conn",lpstr,int,lpstr,lpstr,lpstr,lpstr,int; defineDLLFunc: "d:\niordcover.dll", int, "init", lpstr; defineDLLFunc: "d:\niordcover.dll", int, "init", lpstr; defineDLLFunc: "d:\niordcover.dll", int, "disconn"; defineDLLFunc: "d:\niordcover.dll", int, "disconn"; defineDLLFunc: "d:\niordcover.dll", int, "is_conn"; defineDLLFunc: "d:\niordcover.dll", int, "is_conn"; defineDLLFunc: "d:\niordcover.dll", defineDLLFunc: "d:\niordcover.dll", int, "order",lpstr,lpstr,lpstr,lpstr,lpstr,lpstr,lpstr,double,int,lpstr,lpstr,lpstr,int; int, "order",lpstr,lpstr,lpstr,lpstr,lpstr,lpstr,lpstr,double,int,lpstr,lpstr,lpstr,int; defineDLLFunc: "d:\niordcover.dll", defineDLLFunc: "d:\niordcover.dll", double, "get_current_portfolio",LPSTR,LPSTR, LPSTR,LPSTR,int,int; double, "get_current_portfolio",LPSTR,LPSTR, LPSTR,LPSTR,int,int; defineDLLFunc: "d:\niordcover.dll", defineDLLFunc: "d:\niordcover.dll", int, "orders_open",LPSTR, LPSTR, LPSTR,int; int, "orders_open",LPSTR, LPSTR, LPSTR,int; defineDLLFunc: "d:\niordcover.dll",defineDLLFunc: "d:\niordcover.dll", lpstr, "get_order_code",lpstr,lpstr,lpstr,lpstr,double,int,int,int; lpstr, "get_order_code",lpstr,lpstr,lpstr,lpstr,double,int,int,int; defineDLLFunc: "d:\niordcover.dll", defineDLLFunc: "d:\niordcover.dll", int,"wd_order_by_number",LPSTR{orderno},LPSTR {secboard},int {TimeOut}; int,"wd_order_by_number",LPSTR{orderno},LPSTR {secboard},int {TimeOut}; defineDLLFunc: "d:\niordcover.dll", defineDLLFunc: "d:\niordcover.dll", int, "portfolio_open",LPSTR {secboard},LPSTR {account}, LPSTR {brokerref},int {TimeOut}; int, "portfolio_open",LPSTR {secboard},LPSTR {account}, LPSTR {brokerref},int {TimeOut};
Пример проверки и установки соединения с торговым сервером result = is_conn(); if LastBarOnChart and result=0 then Begin output_init = init("D:\\mfcniorder.dll"); output_conn = conn(" ",2900,login,login,login,"netinvestor",LogMsg); output_orders_open=orders_open(secboard,account,brokerref,TimeOut); out_portfolio_open=portfolio_open(secboard,account,brokerref,TimeOut); fileappend("D:\conn.txt","conn ;"+NumToStr(time,0)+";"+brokerref+"; init="+NumToStr(output_init,0)+"; output_conn=" +NumToStr(output_conn,0)+"; output_orders_open="+NumToStr(output_orders_open,0)+"; out_portfolio_open="+NumToStr(out_portfolio_open,0)+NewLine); end;
Пример выставления заявки Пример выставления заявки orders=order( account, buysell, {buy-B, sell-S} buysell, {buy-B, sell-S} mktlimit, {mktlimit} {Market-M, Limit-L} mktlimit, {mktlimit} {Market-M, Limit-L} splitflag, {splitflag} {O- OnePrise, S-...Price} splitflag, {splitflag} {O- OnePrise, S-...Price} immcancel, {immcancel} {'Probel',N,W} immcancel, {immcancel} {'Probel',N,W} secboard, {LPSTR} {secboard="EQBR"} secboard, {LPSTR} {secboard="EQBR"} seccode, {seccode=EESR"} seccode, {seccode=EESR"} price, {price} price, {price} quantity, {quantity=lot} quantity, {quantity=lot} brokerref, {brokerref} {kl/} brokerref, {brokerref} {kl/} extref, {extref} extref, {extref} yeld, {P} yeld, {P} timeout ); {TimeOut servera} timeout ); {TimeOut servera}
Входные параметры системы Изменяемые входные параметры (константы) вводятся через Изменяемые входные параметры (константы) вводятся через Input. Счет Логин клиента Лимит Short
Технические характеристики DLL Скорость выставления заявки 0,1-1секунды, в зависимости от качества связи, загруженности торгового сервера, количества выставляемых заявок. Информация о портфеле клиента, номерах заявок хранятся непосредственно в памяти DLL, что увеличивает быстродействие системы в целом. Информация о портфеле клиента, номерах заявок хранятся непосредственно в памяти DLL, что увеличивает быстродействие системы в целом.
Практические примеры использования DLL и программы ТА OmegaResearch Prosuite2000i Визуальный контроль и графическое отображение состояния портфеля. Визуальный контроль и графическое отображение состояния портфеля.
Недостатки и преимущества торговой платформы OmegaResearch Prosuite2000i Программа изначально не создавалась для он-лайн торговли, а предназначалась исключительно для бэктестинга торговых стратегий и подачи алертов для пользователя. Программа изначально не создавалась для он-лайн торговли, а предназначалась исключительно для бэктестинга торговых стратегий и подачи алертов для пользователя. MarketPosition- изменяет свое значение через один бар после генерации торгового сигнала (использовать внутренние переменные) MarketPosition- изменяет свое значение через один бар после генерации торгового сигнала (использовать внутренние переменные) Barstatus(1)=2- выдавать сигнал после закрытия бара. Сигнал поступит одновременно с первой сделкой (открытием) следующего бара Barstatus(1)=2- выдавать сигнал после закрытия бара. Сигнал поступит одновременно с первой сделкой (открытием) следующего бара Barstatus(1)=1- выдавать сигнал после выполнения condition не дожидаясь закрытия бара. Сигнал может поступать многократно в течении текущего бара (использовать внутренние переменные для блокировки). Barstatus(1)=1- выдавать сигнал после выполнения condition не дожидаясь закрытия бара. Сигнал может поступать многократно в течении текущего бара (использовать внутренние переменные для блокировки).
LastBarOnChart- отсеивает торговые сигналы прошлых периодов (в противном случае выставит все соответствующие заявки в систему)! LastBarOnChart- отсеивает торговые сигналы прошлых периодов (в противном случае выставит все соответствующие заявки в систему)! BarInterval=30- защищает от случайного переключения пользователем периода графика. BarInterval=30- защищает от случайного переключения пользователем периода графика. При генерации сигнала по окончанию (закрытию бара) в случае наступления сигнала внутри бара и отмене его по закрытию сигнал будет исполнен! Использовать внутренние переменные (триггеры) для блокировки. При генерации сигнала по окончанию (закрытию бара) в случае наступления сигнала внутри бара и отмене его по закрытию сигнал будет исполнен! Использовать внутренние переменные (триггеры) для блокировки. При пересечении внутри бара срабатывает сигнал. При пересечении внутри бара срабатывает сигнал.
Возможность использования внешних приложений и внутренних переменных позволяет оперировать с размером текущей позиции, рассчитать общее текущее состояние портфеля, выставлять стоп-лоссы и тейк-профиты Возможность использования внешних приложений и внутренних переменных позволяет оперировать с размером текущей позиции, рассчитать общее текущее состояние портфеля, выставлять стоп-лоссы и тейк-профиты Закрыть позиции и не осуществлять сделок при наступлении заданного события ( просадка по счету, тейк- профит по портфелю и т.д.) Закрыть позиции и не осуществлять сделок при наступлении заданного события ( просадка по счету, тейк- профит по портфелю и т.д.) Использовать глобальные переменные для обмена информацией между графиками. Использовать глобальные переменные для обмена информацией между графиками.
Контактная информация: ЗАО ФК «Интерфин трейд» Россия, , Москва, Тверская, 22 тел./факс (095) , (095) Internet: