На
главную страницу
Описание
алгоритма работы функции MoveMICEX_SHR (MoveFORTS, MoveRTS_STANDARD)
и модуля MoveOrderADirect3.exe:
При загрузке Метастока установленная
библиотека подключается к своему терминалу,
к АД2 или к АД3. Если соответствующий терминал
Альфа-Директ не запущен, он будет автоматически
запускаться при старте Метастока и
автоматически выгружаться при завершении работы
Метастока. При каждом обновлении данных в
Метастоке производится вычисление формул в
Советниках для проверки на BuySell-сигнал. При
появлении BuySell-сигнала срабатывает MoveMICEX_SHR (MoveFORTS)
функция, в которой сначала проверяется
истинность Buy- или Sell- условия для бара, c номером
отсчитываемым от правого края графика (или
номера тайм-фрейма, если график линейный). Если
условие срабатывания функции MoveMICEX_SHR в указанном
баре ложно, то функция завершается без
формирования заявки в АДирект. Если условие в
указанном баре истинно, то вызывается модуль
MoveOrderADirect3.exe и далее начинается работа по
формированию заявки в систему АльфаДирект. Если
задать номер бара =0, то функция MoveMICEX_SHR будет
вызвана сразу же, как только появится BuySell-сигнал
на правом краю графика, при очередном обновлении
данных в Метастоке, если задать 1, то функция
MoveMICEX_SHR будет вызвана, когда BuySell-сигнал появится
на втором баре от правого края графика и т.д. (но,
например, для ZigZag'а нулевой бар нельзя
использовать). И пока не закончится работа по
обработке текущей заявки для заданного рынка,
портфеля и бумаги, новые
аналогичные заявки не разрешаются. Разрешается
одновременное формирование заявок по другим
бумагам, для того же портфеля и рынка, или заявки
по той же бумаге, но для другого рынка
или портфеля.
При появлении сигнала на покупку/продажу
сначала проверяются позиции в портфеле
по заданной ЦБ. Если позиций по бумаге в портфеле
совсем нет, то в очереди заявок 'деактивируются'
все неисполненные торговые заявки и стоп-приказы
для указанных в заявке рынка, портфеля и
бумаги (заявки и стопы других бумаг и
портфелей остаются) и формируется новая заявка.
Если такая позиция уже есть, то новая заявка не
создается. Если имеющаяся позиция в портфеле
меньше, заданной в параметре (-MaxQuantInPortfel)
максимальной доли этой бумаги в портфеле, то
производится дозакупка (или допродажа для
шортов). Если имеющаяся в портфеле позиция больше
заданной в параметре MaxQuantInPortfel, то производится
подача заявки для уменьшения имеющейся позиции
до заданной в параметре (-MaxQuantInPortfel). Если есть
противоположные позиции, т.е. шорты при
Buy-сигнале, или лонги при Sell-сигнале (Over-ситуация),
то в очереди заявок 'деактивируются' все
неисполненные торговые заявки и стоп-приказы для
выбранного рынка, бумаги и портфеля.
Затем формируется новая заявка. При наличии
в портфеле противоположных позиций, эти
противоположные позиции будут учтены при
формировании размера новой заявки так, чтобы
помимо открытия новой позиции закрыть имеющиеся
противоположные позиции. Получается открытие
новых позиций с переворотом из старых
(over-ситуация).
При посылке заявки в АД-терминал включается
контроль исполнения заявки. Если заявка
исполнена и к заявке в функции MoveMICEX_SHR(MOveFORTS)
также задан стоп, то после исполнения заявки
производится выставление соответствующего
стопа. Если заявка не исполнилась, то она
удаляется по окончании времени контроля и
соответственно стоп не создается.
Имеющиеся в портфеле позиции
можно закрыть в любое время, если подать заявку, того
же типа, что и имеющаяся в портфеле позиция,
указав в параметрах заявки нулевой размер
доли в портфеле. При этом из очереди заявок
АД-терминала будут удалены и все активные заявки
для данного инструмента, портфеля и рынка;
FNull:=IF( FSell,
ExtFml("Borisoff.MoveMICEX_SHR","1234-000",0,1,S,0,Simple,0,FSell,1),
False);
Предельное кол-во бумаг в заявке зависит от
заданной максимальной доли этой бумаги в
портфеле MaxQuantInPortfel. Но в демо-версии
в заявке прописывается один лот (если есть
противоположная позиция, то заявка выставляется
на два лота), при этом количество ЦБ под
управлением библиотеки и модуля автоматизации
зависит только от возможностей компьютера
трейдера.