|
Новости
Видео
Блоги
Комментариев: 343
Шепот котировок
10:08
09:58
09:44
09:27
10:17
|
Новый «автомат» на фондовом рынкеПри автоматической торговле трейдерам помогут уже готовые решения для платформы NetInvestor, которая сопряжена с программой технического анализа TradeStation (OmegaResearch Prosuite2000i). Начальник клиентского отдела финансовой компании «Интерфин трейд» Юрий Решетников поделился новинкой фирмы с участниками IV Международной выставки-конференции «Инвестор EXPO 2003». Если у вас есть стратегия...Предположим, что у вас есть стратегия, и вы знаете, как, по каким алгоритмам и признакам она работает и выдает сигналы. Какие функции при реализации автотрейдинга нужны? Когда вы используете программу интернетплатформы Quik или NetInvestor, вы видите состояние своего портфеля, т.е. наличие денежных средств, бумаг, текущую оценку портфеля, выставленные или снятые заявки и все сделки, которые вы исполнили. Точно таким же набором функций обладает и «автомат», сопряженный с OmegaResearch Prosuite2000i. Одна из важных функций – снятие заявки в автоматическом режиме. Она также реализована в TradeStation. Если заявка не выполнена, и система проверила, что она выставила заявку, но сделка не произошла, то она автоматически может снять заявку и выставить новую, в ручном режиме заявку снимать необязательно. Исторические данные о состоянии портфеля любой трейдер желает получать в онлайновом режиме. Исторические данные о состоянии счета на сервере не хранятся, но можно записывать эту информацию в текстовом файле для дальнейшего просмотра и анализа. TradeStation позволяет сохранять в файлах любую информацию, например состояние счета. В принципе, предыдущее состояние не так и важно. Вам необходимо знать, каково текущее состояние, на какую сумму можно сейчас приобрести и продать бумаг, что в портфеле находится. Каким образом это реализуется? TradeStation имеет возможность работать с внешними приложениями – DLL. Фактически сам NetInvestor для этой схемы не нужен, нужен онлайновый поток котировок в GlobalServer. TradeStation автоматически, при помощи DLL соединяется таким же способом, как и NetInvestor. TradeStation в онлайновом режиме выдает информацию об ордерах, запрашивает о состоянии портфеля, снимает заявки, выполняет все те действия и с теми параметрами, как если бы вы выставляли заявки вручную. Увидеть текущее состояние можно двумя способами. Первый – подключить еще один NetInvestor и визуально посмотреть, какие заявки были выполнены, какие сняты, а также всю историю за текущий день. Второй – просматривать эту информацию непосредственно в TradeStation, в графическом виде. Описание функцийХочу подробнее рассказать о функциях, которые доступны из TradeStation при работе с DLL (красным выделены функции, черным – описание). Описание функций DLL
соединение с сервером. Omega автоматически устанавливает соединение с сервером, и получается, что не NetInvestor подсоединен к серверу, а именно TradeStation.
рассоединение с сервером – дисконнект.
проверка соединения с сервером. В данный момент, если соединения с сервером нет, то она возвращает 0. Система проверяет, что соединения с сервером нет, и выполнение операций на выставление заявок и пр. невозможно.
выставление заявки (подробнее рассмотрим эту функцию чуть позже, поскольку выставление заявки может происходить на различных рынках – ФОРТС, СГК, ММВБ).
получение информации о текущем состоянии портфеля по каждому клиенту.
открытие соединения – получение информации о текущих заявках, которые выставлены в систему.
снятие заявки по номеру по сигналу из Omega
открытие соединения – получение информации о текущем состоянии портфеля по каждому клиенту. Соединение – автоматическоеВ TradeStation пишется код для проверки соединения с сервером и соединения в случае разрыва. Если функция is_conn = 0 (подтверждение о разрыве соединения), то попытки соединения с сервером повторяются. В коде прописаны адрес сервера, логин, пароль, вы автоматически соединяетесь с этим сервером, и TradeStation продолжает функционировать дальше. Пример проверки и установки соединения с торговым сервером: result = is_conn(); if LastBarOnChart and result=0 then Begin output_init = init(«D:\\mfcniorder.dll»); output_conn = conn(«213.181.10.183», 2900,login,login,login,«netinvestor»,Log Msg); 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; NetInvestor при использовании «автомата» может быть даже выключен. Вручную вы выставляете данные в NetInvestor, а TradeStation подключается и выполняет операции автоматически по сигналу вашей системы. На экране вы видите график, на который нанесен индикатор. Открывая NetInvestor, вы видите, какие заявки у вас были выставлены, и что у вас сейчас в портфеле. Вы можете выключить NetInvestor, и Omega будет внутри своей памяти знать, что именно и какое количество находится в ее распоряжении. Единственное, что необходимо для TradeStation – онлайновый поставщик данных. Если компьютер находится в локальной сети, разрывов связи практически не бывает. Но если это произошло, есть два варианта. Первый – включить режим, когда все котировки выставляются в один бар, и есть разрыв. В Omega такой режим включен по умолчанию, и если произошел разрыв связи, «автомат» докачивает данные в один бар. Второй вариант – если у вас отключено внутреннее время GlobalServer’а, то по прошествии этого сигнала бар нарисуется, закроется, и заявка выйдет из системы. Выставление заявкиНиже приводится конкретный пример выставления заявки в систему с определенными параметрами. Здесь описаны все те параметры, которые существуют при вводе заявки вручную: направление, счет клиента, код инструмента, цена, количество, расщепление остатка и т.д. Пример выставления заявки: orders=order (account, buysell, {buy-B, sell-S} mktlimit, {mktlimit} {Market-M, Limit-L} splitflag, {splitflag} {O- OnePrice, S...Price} immcancel, {immcancel} {‘Probel’, N,W} secboard, {LPSTR} {secboard= «EQBR»} seccode, {seccode=«EESR»} price, {price} quantity, {quantity=lot} brokerref, {brokerref} {kl/} extref, {extref} yeld, {P} timeout); {TimeOut servera} Какие параметры вы выводите непосредственно сами, когда используете «автомат»? Счет L01 – клиентский счет, S01 – брокерский счет, логин, brokerref – счет клиента, и все остальные параметры – рынок и т.д. (рис. 1).
Технические характеристикиРассмотрим технические характеристики новой торговой платформы. Скорость выставления заявки. При наступлении события в TradeStation появляется информационное окно (алерт). Могу сказать, что это окно с сигналом (алертом) появляется позже, чем заявка в системе. То есть сначала заявка появляется в NetInvestor, вы ее видите, а потом уже к вам поступает алерт этого события. Скорость выставления можно даже посмотреть (рис. 2). «Автомат» работает с несколькими счетами (на рисунке это видно) – обратите внимание на время исполнения заявки.
Еще один немаловажный момент, который был сделан в процессе усовершенствования торговой платформы. Информация о состоянии портфеля и его текущих заявках более не хранится на сервере, а автоматически сохраняется во внутренней памяти DLL. При запросе из TradeStation эта информация берется непосредственно из памяти, и ее можно получить мгновенно.
Для отображения и видения состояния портфеля я лично использую индикатор. На рисунке 3 красным отмечено состояние в рублях, синим – состояние портфеля, если короткая позиция – отрицательное значение, черным получается текущее состояние переоценки. Если в портфеле что-то куплено, то сумма его переоценивается по текущей цене. Считается остаток в рублях, количество в акциях, умножается – и получается текущая оценка. Мой личный опытРаботать по проблеме автотрейдинга я начал года три назад. Самая интересная и самая оптимальная программа для автотрейдинга – это TradeStation, другой я пока не знаю. К сожалению, MetaStock не подходит, потому что получить и рассчитать, каким количеством лотов торговать, в данной программе невозможно. В MetaStock вообще нельзя заложить какие-либо внутренние переменные. Он только выдает информацию, получать он ее не может, кроме текущих онлайновых котировок. Начал я с Quik и TradeStation. Текстовый файл формировался в TradeStation и предавался в Quik. В силу того, что у текстовых файлов есть некоторые ограничения, я отказался от такой схемы и перешел к вышеупомянутой системе. Есть несколько важных моментов, на которые следует обратить внимание. 1. Функцию MarketPosition использовать нельзя – потому что код пишется как индикатор, а не как сигнал. MarketPosition нельзя использовать, потому что он меняет свое значение не на том баре, на котором произошел сигнал, а через один, следовательно, заявка будет выставлена значительно позже. 2. В зависимости от того, как настроена ваша система – покупать по закрытию бара или внутри текущего бара, – необходимо ставить функцию Barstatus. Приравнивать к 2 или 1. В первом случае – по закрытию бара, во втором – внутри текущего бара. В текущем баре сигнал может наступить несколько раз, поэтому нужно использовать внутренний триггер. То есть после выставления заявки некой переменной присваивается значение, и больше заявка в систему не выставляется, разве что при запросе портфеля мы захотим проанализировать его текущее состояние. Сигнал «по закрытию» выйдет из системы только после того, как появится первая сделка на следующем баре. То есть не по закрытию бара, а с первым тиком следующего бара. Если торгуемый инструмент малоликвиден, то может пройти довольно много времени между закрытием бара и поступлением сигнала. 3. Использование функции LastBarOnChart. Первое время при тестировании я крайне неосмотрительно не использовал эту функцию, и, как следствие, на торговый сервер было отправлено более полутора тысяч заявок. Все они были отклонены и не исполнены, потому что при тестировании я подключал систему после 18:45. 4. Когда вы применяете свою стратегию на определенном временном интервале, например 5-минутке или 30-минутке, то используйте функцию BarInterval для автоматической блокировки «автомата» при случайном переключении периода рабочего графика. Еще один немаловажный момент – в случае, когда вы используете сигнал по закрытию бара при пересечении линий индикаторов. Если при формировании бара пересечения вниз были, а на закрытие бара их не стало, TradeStation воспримет это как пересечение и откроет позицию. Поэтому надо знать текущее состояние портфеля и ставить блокировку от «пирамидинга». Недостатки и преимущества торговой платформы TradeStationВсе функции, которые сейчас реализованы в торговой платформе OmegaResearch Prosuite2000i, используются мною уже в течение полугода. И я не знаю, что здесь можно дополнить. Данная реализация – и есть API, которая работает фактически с неограниченным количеством клиентских счетов, выполняет любые заявки, которые вы запрограммируете. Все, что вы делаете вручную в NetInvestor, может сделать «автомат», только скорость у него значительно выше. Если у вас, к примеру, в управлении более 3-4 счетов, то на выставление заявки и подсчет количества лотов у вас уйдет довольно много времени, если делать это вручную. Здесь же все происходит буквально за доли секунды. Пока у API нет интерфейса, и официально с интерфейсом мы не предоставляем, но он уже в разработке, и в будущем вы сможете визуально наблюдать управляемые счета, выставлять лимиты на инструменты и портфель в процентах, в абсолютной величине, по каждому конкретному клиенту и, соответственно, выставлять заявку не в абсолютном значении, а в процентах. Например, если вы выставляете одну заявку по группе счетов, допустим, по 8 или 50, и определяете величину в 30% соответственно, машина сама посчитает, что у одного 20 лотов, у другого – 30, у третьего – 55. И последнее. Стоимость нового «автомата» (разовая покупка) до- вольно символическая – $50. Похожие статьи:
Комментарии пользователей
Добавить комментарий |
РекламаНовости партнеровРеклама |



