На главную страницу

Важные замечания по функциям и модулям:

          
  В АД2 все заявки формируются только для рынка КЦБ ММВБ ('MICEX_SHR');
Размер портфеля теперь задается только в лотах (до версии v.46q задавался в штуках и в процентах).
  (
!)ПЕРЕД НАЧАЛОМ авто-торговли на каком-либо портфеле ВСЕГДА нужно провести пару торговых операций вручную, купить/продать, чтобы убедиться, что с портфелем все в порядке и на нем можно производить торговые операции.
  Поскольку у разных версий Метастока немного разная структура файлов данных, то для стабильной и безсбойной работы экспорта данных из АД-терминала в Метасток необходимо устанавливать любую версию Метастока со своим каталогом '\MetaStock Data', т.е. удаляйте перед установкой Метастока этот каталог, если он имеется и создавайте инструменты (Security) в Метастоке заново! 
  Авто-трейдинг работает только для интрадейных тайм-фреймов, созданных из минуток, поскольку в Метастоке события обновления данных Советников на графиках на более крупных тайм-фреймах, в том числе для Daily и более, не происходят, соответственно не формируются заявки в АД-терминал.
  Из-за отключения в АДиректе расчета лимитов для ФОРТС, в модуле эта функция для ФОРТС также не работает, поэтому от пользователя требуется хорошо планировать лимиты для обеспечения авто-трейдинга на ФОРТС, особенно для over-ситуаций, когда из-за нехватки лимитов на бирже позиции могут не перевернуться.
  C 29.03.2010г улучшен механизм опроса параметров при контроле исполнения. Для нормальной работы системы в Метастоке на вкладке Menu->Tools->Options...->Real-time-> обязательно должны быть ВКЛЮЧЕНЫ опции 'Enable real-time', 'Enable live bars' и 'Recalculate expert live'.
  При авто-трейдинге рекомендуется отключать антивирусные программы, иначе из-за влияния антивируса возможно появление отличия в ценах одной и той же бумаги в АД-терминале и в Метастоке.
  В лог-файл теперь также пишется цена исполнения заявок. В бесплатной одно-лотовой версии разрешено использовать любое кол-во портфелей на счете. В лог-файл теперь также пишется не только время вызова модуля по сигналу в Метастоке (время начала обработки модулем сигнала в Метастоке), но и время завершения работы модуля. То есть можно оценить время исполнения заявки (с учетом времени контроля исполнения).
  С версии v.57 первые с момента создания модуля изменен алгоритм в ситуации переворота позиций из шорта в лонг или наоборот (over-ситуация). Раньше переворот в over-ситуации выполнялся одной заявкой, сразу закрывающей и существующую позицию и открывающую новую позицию противоположного направления. Теперь в over-ситуации будут подаваться две заявки: сначала заявка на закрытие существующей позиции, а затем следующая заявка в обычном порядке на открытие новой позиции! Это изменение позволяет гарантированно закрывать позиции когда на графике возникает сигнал на переворот позиции, но лимиты на переворот отсутствуют  (например когда нет лимитов на шорт).
  (!!!)Для корректной работы с авто-трейдинговым комплексом в АД-терминале необходимо иметь открытые Таблицы 'Котировки', 'Сделки', 'Заявки' и 'Позиции', с инструментами с которыми осуществляется авто-торговля!
  По просьбе пользователей поправлена работа с ExitBuy и ExitSell заявкам. Теперь позиции в портфеле будут закрываться не по любой заявке с нулевой долей в портфеле, а только по заявке того же направления, что и позиция в портфеле, т.е. лонги закроются при Buy-заявке с нулевой долей в портфеле и не закроются при Sell-заявке с нулевой долей.
  Проскальзывание для стопов автоматически задается равным разнице между текущей Close-ценой ЦБ и заданной ценой стопа.

  (!!!)Не рекомендуется при работе робота заходить в АД через терминал с другого компьютера из-за возможного отключения сессии робота от АД, т.к. в Альфа-Директе существует ограничение на кол-во одновременных подключений в серверу с одного счета по соображениям безопасности.
  (!!!
) Для авто-трейдинга НУЖНО создавать графики с как можно меньшим тайм-фреймом (рекомендуются минутки), чтобы обеспечить нормальную частоту обновление данных в Метастоке и сигналов Советников. Т.е. первоначально в Метастоке через 'New' все SECURITY нужно создавать c минутным тайм-фреймом, а затем уже преобразовывать их в Метастоке в график с нужной периодичностью баров, например, в 15-ти минутный или 60-минутный, и затем уже использовать преобразованные графики для автоматической торговли. Если так не делать, а например через 'New' создавать не минутный, а сразу часовой график по бумаге, то Советники на этом и более крупных тайм-фреймах из-за каких-то особенностей Метастока (или экспорта) могут не обновляться и из-за этого не будут создаваться заявки в АД.
Также для нормальной работы Метастока нужно использовать только браузер MS Internet Explorer;
При работе с АД3 можно посылать приказы как на рынок КЦБ ММВБ (с помощью функции MoveMICEX_SHR), так и на рынок фьючерсов (через MoveFORTS);
Реверсивные стопы - подобны обычным стопам, в которые добавлено еще некоторое кол-во бумаг, чтобы при срабатывании стопов сразу открывалась противоположная позиция. Это по идее должно помочь быстро вернуться на прежний тренд, если по какой-либо причине позиции развернулись;
Это самый сложный для использования вид стопов. Алгоритм расчета реверсивных стопов для рынка ММВБ следующий:
  1) при over-ситуациях кол-во ЦБ в стоп-ордере рассчитывается как для простого стопа + добавляется то кол-во, которое есть в портфеле (для закрытия этой позиции в over-ситуации);
  2) при обычной покупке/продаже стоп рассчитывается как для простого стопа + добавляется тоже кол-во;
  3) Проверяются лимиты на стопы и если они меньше заданного кол-ва, то кол-во в стопе задается равным лимиту;
  Расчет реверсивных стопов для ММВБ в п.2) и п.3) является не совсем правильным, потому что при срабатывании например Buy-сигнала, у модуля есть информация о макс.доле в портфеле только для лонга, но нет информации о размере доли для шорта. На ФОРТС эта проблема тоже есть, но на ФОРТС размер доли бумаги в портфеле для лонга и шорта чаще всего одинаков.
  Проблема точного расчета макс.доли бумаги в портфеле для противоположной позиции решена только с появлением авто-переставляемых по тренду 'ARevers' стопов, которые могут точно узнать размер доли бумаги в портфеле (MaxQuantInPortfel) одновременно для текущей и для противоположной позиции. Поэтому вместо 'Revers' стопов лучше применять 'ARevers' стопы;
Алгоритм расчета реверсивных стопов для рынка ФОРТС:
  1) при over-ситуациях кол-во в стоп-ордере рассчитывается как для простого стопа + добавляется то кол-во, которое есть в портфеле (для закрытия этой позиции в over-ситуации);
  2) при обычной покупке/продаже кол-во ЦБ рассчитывается как для простого стопа + добавляется то же кол-во;
  3) Проверяются лимиты на стопы и если они меньше заданного кол-ва, то кол-во в стопе задается равным лимиту;
Реверсивные стопы очень сильно влияют на лимиты покупки/продажи ЦБ, поэтому для нормальной работы с ними требуется наличие некоторого неиспользуемого резерва средств на счете;
   При отсутствии соединения с сервером Альфа-Директ заявки самоудаляются, то есть не посылаются в АД-терминал;
Процент Add%ToClose заявки лучше делать таким, чтобы заявка наверняка срабатывала, а не оставалась нереализованной, иначе, из-за отсутствия лимитов, некоторые стопы могут не создастся. Хотя можно задать этому параметру и небольшое значение, но тогда время исполнения заявки может значительно возрасти или она вообще не исполнится, если рыночная цена уйдет далеко от заданной в заявке цены;
  Цена размещения стоп-заявки рассчитывается вычитанием (для Buy-стопа) или прибавлением (для Sell-стопа) заданного %Stop к последней Close-цене ЦБ;
Перед созданием стоп-ордера проверяются лимиты на основную заявку, чтобы стопы не создавались без основной заявки;
  Проскальзывание для всех типов стоп-ордеров вычисляется как разность между рассчитанными рыночной Close-ценой заявки и ценой размещения ее стопа (стоп-ценой);
(пример трейлингового стопа: FNull:=If(FAlert, ExtFml("Borisoff.MoveMICEX_SHR","хххх-ххх",х,х,х,0.1,Trailing,0.75,FAlert,1), False);
                                                                                                                                      ^                 ^
                                                                                                                                      |                  |             
                                                                                                                              ненулевое            уровень срабатывания следящ.стопа в%
                                                                                                                            значение Stop%    задается здесь!
                                                                                                                  чтобы создавался стоп );
Цена стоп-профита заявки рассчитывается прибавлением (для Buy-стопа) или вычитанием (для Sell-стопа) заданного Add%Stop к последней Close-цене ЦБ,
при нулевом значении Add%Stop стоп-профит в заявке не ставится. Для Trailing-стопа параметр Add%Stop используется для задания %СрабатыванияСледящегоСтопа;
  По умолчанию срок действия формируемых рыночных заявок - текущие дата-время плюс 3 дня (параметр изменяется в cfg-файле);
  Срок действия стоп-заявок по умолчанию также - текущие дата-время плюс 3 дней;
При шорт-заявке проверяется допустимость шорта для ЦБ в системе Альфа-Директ;
В АД3 тикеры инструментов могут содержать РазНоРегистРовые символы, поэтому применяется спецпроцедура приведения тикеров Метастока к их виду в АД3;
  Максимальная доля ЦБ одного вида в портфеле при шорте и лонге ограничивается только лимитами в АД.
  (
!!!)Размер лота, кол-во знаков после запятой и допустимость шорта для ЦБ, а также минимальный шаг цены ЦБ в стакане, считываются из системы Альфа-Директ;
Если %Стопа задан больше нуля, то вместе с рыночной заявкой для нее формируется стоп-приказ;
Если размер %Cтопа задан нулевым, то никакие стоп-приказы (кроме балансовых) к рыночной заявке не формируются;
  Заявки формируются для тех ЦБ в Метастоке, на график которых помещен индикатор, или прикреплен советник, или запущена тестовая система с функцией MoveMICEX_SHR, т.е. тикеры инструментов не вводятся в параметрах функции, а считываются самой функцией из графиков, например, для графика РАО ЕЭС будут формироваться приказы на покупку/продажу акций EESR и т.д.;
  Все версии библиотек Borisoff.dll на этом сайте являются полнофункциональными версиями, а сервисные модули MoveOrderADirect3.exe являются демо-версиями на один лот, но кроме одно-лотовости НИЧЕМ больше не отличаются от рабочих версий;
  Cделано протоколирование работы со всеми заявками, отправляемыми на АД-сервер, в текстовый log-файл. Для АД2 он называется 'MoveOrderADirect2.log', для АД3 - 'MoveOrderADirect3.log'. Эти log-файлы создаются в том же каталоге '\External Function Dlls', где находятся файлы библиотеки и сервисного модуля. Информация в лог-файл записывается при завершении работы очередного модуля.
  В лог-файл пишутся также текстовые сообщения АД-терминала о результатах операций с заявками. Предельного размера log-файл не имеет, его можно в любое время переместить в другое место, например в архив, а новый файл будет создан автоматически;
  После посылки заявки на исполнение серверу АД, модуль MoveOrderADirect ждет соответствующих обновлений во внутренних таблицах терминала АД
(контроль исполнения), из-за этого происходит задержка по времени в создании стоп-заявок (особенно заметная в период между торгами), поскольку модуль ждет исполнения (а не только принятия к исполнению) основной заявки. Необходимость контроля исполнения вызвана тем, что, возможно из-за многопоточности, в АД3, по сравнению с АД2, правильной логики для нормальной работы внешним программам уже недостаточно, требуется применять еще и контроль за исполнением всех заявок. Если заявка принята и исполнена, но если при этом информация в таблице позиций терминала не обновляется, то модуль включает бесконечное ожидание обновления, которое прерывается только при разрыве связи (отключении и подключении заново) терминала с АД-сервером;
  Кол-во бумаг для формирования заданной доли в портфеле рассчитывается по расчетной цене заявки, а не по Close-цене;
  При сбоях в работе модуля сообщение об ошибке не выводится на экран, чтобы не мешать работе с другими заявками, а сразу записывается в лог-файл, при этом в лог-файл также записываются все параметры переданные модулю в командной строке при его старте;
  При загрузке Метастока происходит инициализация внешних библиотек в Мете и подключение данных. При этом, если АД-терминал не подключен к АД-серверу, в лог-файл пишутся сообщения 'Заявка отменена. Нет соединения с сервером АДирект' с параметрами заявок. Хотя эта информация не относится к процессу торгов, но она имеет большую ценность, позволяя после запуска Метастока, увидеть в лог-файле сразу все бумаги, к которым в Метастоке прикреплены эксперты или индикаторы, а также какие у них заданы Buy/Sell параметры.
(!!!) Способ проверки работоспособности библиотеки и модуля: Если у вас есть сигналы на графике, но заявки в АД-не создаются, то нужно в формуле функции MoveMICEX_SHR вместо FBuy или FSell подставить значение 'True', т.е:
     FNull:=IF(FBuy, ExtFml("Borisoff.MoveMICEX_SHR","5678-000",-1,0.7,B,1.05,Simple,0,True,2), False);
                                                                                                                                   
^
тогда сразу на каждом обновлении данных графика в Метастоке должны появляться заявки в АД-терминале. Если заявки сразу появятся - значит, библиотека и модуль работают правильно, а нужно только правильно задать значение параметра NumBarRight).
(
!!!) Если всё настроено правильно, то появится один признак, который поможет легко узнать, стартует ли вообще модуль по сигналам из Метастока и при любом обновлении данных в Метастоке: это частое появление значка песочных часов возле курсора мыши. Этот признак означает, что взаимодействие Метастока и модуля настроено правильно и модуль нормально вызывается из Метастока.
  В процессе торгов ситуация отсутствия соединения возможна и должна быть зафиксирована. Поэтому обработчик этой ситуации оставлен. Чтобы при запуске Метастока никакая информация не писалась в лог-файл можно применять три способа:
  1) с переименованием модуля MoveOrderADirect3.exe: Перед загрузкой Метастока модуль 'MoveOrderADirect3.exe' нужно переименовывать, например к виду 'MoveOrderADirect3_.exe'. А после запуска Метастока и загрузки им АД-терминала, надо переименовать модуль обратно к нормальному виду 'MoveOrderADirect3.exe'. В этом случае начальная прорисовка графиков при старте Метастока пройдет без запуска модулей MoveOrderADirect3.exe и сооответственно без записи в лог-файл начальной информации и Метасток загружается быстрее.
  2) без переименования модуля MoveOrderADirect3.exe: Сначала запустить АД-терминал и подключиться к АД-серверу, а затем запустить Метасток. При этом в лог-файле также не появятся сообщения об отсутствии соединения с АД-сервером.
  3) с помощью LOCK-файла, вручную копируя его в каталог '\External Function Dlls'  (или удаляя). LOCK-файл блокирует авто-трейдинг с указанным портфелем и не разрешает записи в лог-файл для этого портфеля (я обычно применяю отключение/включение авто-трейдинга с помощью LOCK-файла).
  Если лог-файл создается каждый день заново, т.е. например лог за прошлый день перемещается в архив, то созданный при загрузке Метастока новый лог-файл можно тут же удалить и новые сообщения в лог-файле появятся уже во время торгов;
  Для надежности удаление из очереди АД-терминала ожидающих исполнения торговых и стоповых заявок производится в два прохода;
  С версии v.20 прекращена поддержка библиотек и модулей для АД2. Все нововведения будут делаться только в модулях и библиотеках для АД3;
  Время контроля исполнения заявки, посланной в АД-терминал, по умолчанию составляет 17 сек (это значение можно изменить в конфигурационном cfg-файле). Это связано с тем, что иногда внутренние таблицы АД-терминала 'Сделки','Заявки','Позиции','Баланс по счетам' и др. перестают авто-обновляться (устраняется перезагрузкой АД-терминала) и в этой ситуации возможны неконтролируемые сделки сверх лимитов (с версии v.38 и эта ситуация частично контролируется);
  Одновременное исполнение 'Cash', 'mmddCash', 'IntraDayEquityUp', 'IntraDayEquityDown' заявок для одного и того же рынка и портфеля не разрешается и если одна из этих заявок срабатывает первой, то запуск остальных автоматически блокируется;
  Для рынков КЦБ ММВБ и ФОРТС, для тайм-фреймов более 5-им минут, сделана отстройка от сбойных котировок, и все возникающие на сбойных тайм-фреймах сигналы игнорируются модулем MoveOrderADirect3.exe. (Процедура отстройки в последней версии библиотеки убрана. Отстройку от ложных сигналов при сбойных котировках также дополнительно обеспечивает отстройка от зацикливания);
  При работе с несколькими портфелями деньги должны быть в каждом портфеле, поскольку именно от величины денег в портфеле зависит рассчитываемая доля бумаги в портфеле. Иначе контролировать заданную долю в портфеле не получится, поскольку лимиты могут выдаваться за счет других портфелей;
         
  (!!!)Иногда бывает также, что на графике сигналы есть, а заявки не создаются. Причина этого, чаще всего бывает во временном отсутствии в АД лимитов, а также когда заданная доля в портфеле, из-за уменьшения счета, начинает задавать кол-во бумаг меньше одного лота, или, если уже есть позиции по такой бумаге в портфеле, или в диспетчере задач (вызываемом по Ctrl-Alt-Del) в процессах висит модуль MoveOrderADirect3_v??.exe блокирующий старт новых заявок, или возможно в неторговый период заявки временно не принимаются, или, если размер доли в портфеле задан положительным значением (т.е. в процентах), т.к в последних версиях долю в портфеле разрешается задавать только в лотах, или если нет денег в портфеле, несмотря на то, что возможно лимиты по портфелю выделяются за счет других портфелей, или в каталоге \External Function DLLs находятся LOCK-заявки, или есть проблемы с экспортом данных из АД-терминала, или когда есть активные заявки и стопы в очереди заявок АД-терминала из-за которых уменьшаются лимиты, или задана цена заявки, слишком сильно отклоняющаяся от текущей цены бумаги, или старт модуля блокирует файервол.
Или если заданы неправильные параметры, то завки  вообще не создаются! Некоторые из этих ситуаций фиксируются в лог-файле. Возможно также, что неправильно задан номер бара в параметре NumBarRight или модуль MoveOrderADirect3.exe неверно переименован, или срабатывает отстройка от сбойных котировок (в этом случае даже в логе при старте без подключенного терминала, не будет записей по бумаге!!!). Также иногда бывает такой сбой в Метастоке, что данные по какой-либо бумаге вообще перестают обновляться, соответственно перестает работать и авто-трейдинг по бумаге. В этой ситуации нужно восстановить экспорт данных, и затем сделать экспорт пропущенных данных из АД-терминала. После этого нужно снова перезапустить Метасток при неподключенном АД-терминале и посмотреть в лог-файле по всем ли подключенным к авто-трейдингу бумагам появятся записи с параметрами Buy/Sell настроек. Можно также иметь копии всех .dta-файлов из каталога \MetaStock и копию всего каталога '\Experts', в которых хранятся все индикаторы и советники, для восстановления имевшихся формул в случае каких-либо серьезных сбоев в Метастоке или для быстрого переноса всех формул и экспертов Метастока с одного компьютера на другой;
  Для всех рынков сделано приведение цен к величине кратной минимальному шагу цены в стакане;
  (!) На закрытие позиций влияют активные заявки в очереди АД-терминала и стопы, которые могут быть причиной нулевых лимитов на покупку/продажу бумаг даже при наличии позиций в портфеле. Из-за этого позиции могли не закрываться. Теперь с v.37 эта ситуация должна нормально отрабатываться;
  (!) Чтобы не тормозить работу Метастока и не загружать излишне компьютер очень желательно при авто-трейдинге ограничить кол-во обрабатываемых баров графика путем установки в Метастоке как можно более короткого интервала между 'Loaded First Date' и 'Loaded Last Date' датами через свойство 'X-Axis Properties->Scale->Loaded->First date->'dd.mm.yyyy')' (свойство вызывается кликом правой кнопкой мыши на оси времени графика);
  (!!!) Чтобы заявки нормально создавались нужно чтобы в нижнем левом углу терминала АД значок подключения к серверу всегда был зеленый. Если значок желтый, то заявки могут не создаваться, т.к. не будет работать запрос лимитов;
  С версии v.39 в модуле реализована возможность после окончания времени контроля исполнения заявки, если заявка не исполнилась или исполнилась частично, то она удаляется из очереди заявок терминала. Время контроля по умолчанию составляет 65 сек (это значение можно изменить в конфигурационном cfg-файле);
  При уменьшении значения MaxQuantInPortfel, т.е. макс.доли ЦБ в функции MoveMICEX_SHR (MoveFORTS), сделано автоматическое уменьшение позиции по бумаге, если имеющаяся в портфеле позиция больше доли, заданной в параметрах функции MoveMICEX_SHR(). Т.е. теперь в ходе торгов можно управлять размером позиции, в зависимости от ситуации на графиках, и оперативно не только увеличивать, но и уменьшать размер доли бумаги в портфеле;
  Как сказано на АД-форуме
http://www.alfadirect.ru/Hotline/default.asp?page=forum&f=API причина появления сообщения: Подписанный документ не совпадает с эталонным. Значит при подключении к системе АД на локальный комп не догрузился справочник. Такое бывает при сбое канала связи в момент подключения, особенно при использовании беспроводных подключений. Канал восстанавливается, но часть данных может не дойти. При переподключении справочник заново грузится на ваш комп. Если справочник загружен, то сообщение больше не возникает независимо от интенсивности торгов.  
  Также при возникновении вопросов можно почитать АД-форум
http://www.alfadirect.ru/Hotline/default.asp?page=forum&f=DEV ;
Дополнительная информация по различным видам взаимодействия с системой Альфа-Директ:
http://www.alfadirect.ru/default.asp?page=api
Из библиотеки и модуля убраны все балансовые стопы и заявки не работающие на ФОРТС из-за того, что там отсутствует балансовая цена ЦБ;
Заявки частично исполненные, после истечения времени контроля исполнения, удаляются из очереди АД-терминала:
  В модуле устранён очень большой недостаток, возникающий в момент зависаний ФОРТСа или ММВБ, когда терминал нормально принимает поданные модулем заявки, но они длительное время не исполняются и соответственно позиция в портфеле остается несформированной. Такие зависания заявок часто приводили к формированию позиций в портфеле больше заданных лимитов. Теперь же c версии v.49 ситуация перелимита, при длительном неисполнении принятых к исполнению заявок, полностью устранена. При приеме заявок модулем и их длительном неисполнении, превышающем время контроля исполнения, в лог-файле сообщения о сбое уже не будет, модуль будет просто бесконечно ждать исполнения принятой терминалом заявки.
  В модуле MoveOrderADirect3.exe с версии v.50 добавлена функция контроля статуса "Исполнена" для принятых АД-терминалом заявок. Также текущие позиции по бумагам берутся из колонки "Количество (позиция)";
  В модуле, начиная с версии v.52, убраны все бесконечные циклы ожидания, чтобы устранить зависание модуля и блокировку из-за этого всех последующих заявок (в частности такие зависания были в режиме авто-переноса стопов). В несколько раз повышено быстродействие библиотеки Borisoff.Dll, что особенно облегчило работу в сложных режимах авто-трейдинга, например в режимах авто-переноса стопов;
C v.57 версии применяется новый, более быстродействующий и более надежный даже в сбойных ситуациях алгоритм определения величины позиций в портфеле;
(
!!!) с v.57 изменен расчет величины проскальзывания для всех видов стопов! Ранее это проскальзывание равнялось разности Close-цены и цены размещения стопа. Но в некоторых ситуациях такой алгоритм задавал слишком малое проскальзывание и активированный стоп не успевал срабатывать даже при не очень сильных движениях цены. Теперь величина проскальзывания рассчитывается как и раньше, но в случает если разность Close-цены и цены размещения стопа получится меньше величины проскальзывания основной заявки, то проскальзывание устанавливается равным проскальзыванию основной заявки, к которой создается стоп. Таким образом теперь проскальзывание для стопов можно дополнительно регулировать с помощью проскальзывания основной заявки.
  На сайте в основном даны примеры заявок, чтобы видно было, как и с какими параметрами они могут подаваться, и чтобы продемонстрировать принцип действия, а не готовые торговые системы.
 

Hosted by uCoz