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

Описание IntraDayEquityUp и IntraDayEquityDown заявок:
            
  IntraDayEquityUp
-заявка работает (или используется) в направлении увеличения стоимости портфеля, и срабатывает когда изменение портфеля во время торгов становится больше процентной величины, заданной в этой заявке.
  IntraDayEquityDown-заявка работает в направлении уменьшения стоимости портфеля, и срабатывает когда изменение портфеля во время торгов становится меньше процентной величины, заданной в этой заявке
  IntraDayEquityUp-заявка реализует вывод указанного портфеля в кэш, при достижении (превышении) портфелем заданного %прироста за торговый день (по окончании торговой сессии это значение в АД-терминале обнуляется). Это заявка на фиксацию результата относительного прироста портфеля. Т.е. прирост портфеля может быть например, от начального убытка в -5% до убытка -1% в течении торгового дня (если заявка активирована не с начала торгового дня, а позже), или, например, от 0,1%, в начале дня, до 3% в течении торгового дня. Для этого надо в параметрах функции MoveMICEX_SHR (или MoveFORTS) задать параметр 'ВидЗаявки' равным 'IntraDayEquityUp' и ввести нужное значение профита в процентах в параметре Add%Stop. Хотя здесь используются параметр используемый в стопах, но IntraDayEquityUp-заявка не создает никаких стопов. При каждом вызове этой заявки сравнивается размер процента дневного прироста в целом по портфелю с заданным в параметре функции значением. При достижении заданного значения сработает процедура поиска и закрытия всех имеющихся в портфеле позиций, как Long, так и Short.

(пример IntraDayEquityUp-заявки: FNull:=False OR  ExtFml("Borisoff.MoveMICEX_SHR","1234-000",0,2,IntraDayEquityUp,0,Simple,1.5,False,1);  
                                                                                                                              ^           ^                                         ^                 
                                                                                                                               |           |                                         |     
                                                                                                                       портфель    %прос-                        % однодневного прироста портфеля
                                                                                                                                        кальзывания
                                                                                                                                        от Close-цены для заявок на закрытие позиций в портфеле);

{Эта заявка выводит весь портфель в кэш при его увеличении за день на 1.5%}.
  По умолчанию, время срабатывания процедуры вывода портфеля в кэш продляется еще на 21 минуту по серверному времени от заданного времени срабатывания. Т.е. еще минимум в течении 21 минуты от заданного времени срабатывания, при каждом обновлении данных в Метастоке, делается вызов процедуры вывода портфеля в кэш, если она по каким-либо причинам сразу не запустилась в заданное время.
  Поскольку разовое срабатывание в нужное время функции MoveMICEX_SHR или MoveFORTS с IntraDayEquityUp-заявкой вызовет вывод в кэш всего портфеля, то задавать несколько IntraDayEquityUp-заявок для одного и того же портфеля в разных советниках смысла нет. Лучше строку с вызовом IntraDayEquityUp-заявки записать в отдельный индикатор, как в вышеприведенном примере, и прикрепить этот индикатор, например, к графику какой-нибудь бумаги. Этот индикатор можно назвать например   'IntraDayEquityUp_1234-000_1.5' и в нем после строки с вызовом IntraDayEquityUp-функции прописать величину прироста, например в виде числа '1.5;' тогда на графике появится линия со значением профита, т.е на графике сразу будет видно для какого портфеля и с каким приростом установлена IntraDayEquityUp-заявка. И при достижении портфелем заданного значения прироста, сработают процедуры вывода в кэш сразу для всех портфелей, которые будут указаны в этом индикаторе или советнике. Но можно также и просто вставить вышеуказанную строку с нужными параметрами в какой-либо Buy- или Sell-приказ в каком-нибудь советнике.
           
  'IntraDayEquityDown' заявка функционально аналогична 'IntraDayEquityUp' заявке, но только выводит портфель в кэш при достижении (превышении) заданной величины сокращения размера портфеля (просадки) в течении торгового дня. Это приказ на ограничение потерь или убытков. Например, при уменьшении портфеля с 0% в начале дня, до -2.5% в течении торгового дня, или при уменьшении размера портфеля с внутридневного максимума c 3% до 2.5% (если заявка активирована на графике бумаги уже после достижения внутридневного максимума по портфелю).
  При выводе портфеля в кэш модуль считывает имеющиеся в портфеле позиции и формирует заявки на закрытие этих позиций по текущим Close-ценам этих бумаг, увеличенным/уменьшенным на размер заданного в параметре Add%ToClose проскальзывания для Buy и Sell заявок соответственно.
  IntraDayEquityUp и IntraDayEquityDown-заявки можно помещать вместе в один индикатор или советник, тогда у вас портфель без всяких стопов будет автоматически предохраняться от нежелательной просадки и одновременно, без всяких трейлинг-стопов, автоматически зафиксируется профит, как только в портфеле будет достигнута заданная в заявке величина прироста портфеля. Диапазон значений для IntraDayEquityUp / IntraDayEquityDown заявок от -100.00% до +100.00%.
  Размер прироста (или снижения) в функциях можно задавать не только постоянными значениями, но и переменными, зависящими от ситуации на графиках.
  Если заявки включаются не сразу с начала торговой сессии, а в какое-то другое время в течении торгового дня, то тогда можно задать ограничения на сохранение достигнутого до этого времени профита или на ограничение уменьшения стоимости выбранного портфеля, если течение торгов неблагоприятное.
(пример полного текста 'IntraDayEquityDown' индикатора с заявкой на вывод в кэш портфеля, при снижении его общей П/У% на 1.5%):
            
FAlert:=False OR Cum(1)=LastValue(Cum(1)); {здесь добавлено условие, чтобы заявка срабатывала только при каждом обновлении данных на последнем баре графика}
FNull:=If(FAlert, ExtFml("Borisoff.MoveFORTS","ххххх-000", 0, 0.35, IntraDayEquityDown, 0, Simple, 1.5, False, 0), False); {эта строка реализует формирование заявки при FAlert=True}
FEquityDown; {в этой строке на графике рисуется линия процента снижения дневного профита по портфелю (соответствующего 1500 пунктам от последней Close-цены) для срабатывания заявки, если этот индикатор прикрепить к графику фьючерса РТС}
         
  Ранее применявшиеся 'IntraDayTakeProfit' и 'IntraDayDrawDown' срабатывали только на величину разницы от 0 и до заданного значения, что часто было не удобно. Обновленный вариант работы этих заявок гораздо более гибкий.
  Ведется контроль исполнения каждой заявки, поданной для закрытия какой-либо позиции в портфеле. Время контроля по умолчанию составляет 15 сек (это значение можно изменить в конфигурационном cfg-файле). Кроме того, при выводе портфеля в кэш удаляются и все активные заявки, для выводимого в кэш рынка, портфеля и инструмента, если они будут находится в очереди заявок АД-терминала.
  После вывода портфеля в кэш, производится отключение авто-трейдинга, чтобы после вывода в кэш не начали формироваться новые позиции по сигналам из Метастока. Отключение делается при завершении процедуры вывода в кэш, автоматическим созданием LOCK-файла, блокирующего в дальнейшем работу с выведенным в кэш портфелем, до тех пор пока этот LOCK-файл не будет вручную удален.
  С помощью заявок 'IntraDayEquityUp' и 'IntraDayEquityDown' можно задавать границы прибыли и убытка текущей торговой сессии, если П/У% выше и ниже которых портфель будет автоматически выводится в кэш. Эит границы можно сделать авто-изменяемыми, с помощью формул в Метастоке, в зависимости от характера текущей торговой сессии.

Поскольку в течении между утренней и вечерней торговыми сессиями происходит клиринг, после которого результат по утренней сессии обнуляется, то для того чтобы автоматически торговать обе сессии с использованием 'IntraDayTakeProfit' -заявки нужно написать следующие формулы:
     
FLast:=LastValue(Cum(1))=Cum(1);
FDate:=Month()*100 + DayOfMonth();
TimeCliring:=If((Hour()*100 + Minute()) > 1801
AND FDate=LastValue(FDate), True, False);
FProfit:=LastValue(If(TimeCliring, 1.15, 3.5));

FNull:=If(FLast,
ExtFml("Borisoff.MoveFORTS","12345-000",0,0.45,
IntraDayEquityUp,0,Simple,FProfit,False,0),False);
False;

Hosted by uCoz