Close Minus by Plus Закрытие убыточных позиций, путем нахождения и закрытия прибыльных позиций

Close Minus by Plus Закрытие убыточных позиций, путем нахождения и закрытия прибыльных позиций

4 апреля 2017, 12:09
Vladislav Andruschenko
1
847

Exp - Close Minus by Plus

Перекрываем убыточные позиции, путем нахождения и закрытия прибыльных  позиций

 
В продолжении темы про нивелирование позиций, я хочу предложить Вам более надежный и приятный алгоритм перекрытия убыточных позиций. Конечно, каждый в праве выбрать свой способ избавления от минусовых позиций. Наша прошлая статья, описывающая помощника для трейдера, а именно  Закрытие по общей прибыли или убытку, с трейлингом полученного профита, принесла достаточно хорошие результаты. 
Данная статья описывает алгоритм, который был написан еще 4 года назад, но так и не доведен до ума. Но с подачи наших уважаемых клиентов, проект вновь заработал. 
 
 
Для начала хотел выразить благодарность нашему постоянному клиенту. Спасибо Александру Пузанову. который вновь завел механизм данного помощника. 
 
Данный помощник ищет среди всех позиций в терминале (магик, позиции и направление позиций можно отдельно регулировать в настройках) самую убыточную позицию. Далее путем хитрого поиска остальных поз, он вычисляет серию ордеров, которые могут перекрыть убыток. и собственно закрывает их. 
 
Серия ордеров может состоять абсолютно из любых позиций. Их максимальное количество регулируется в настройках советника. 
 
      

Работа помощника

 
Вся работа заключается в том. что мы ставим эксперта на отдельный график, настраиваем его и работаем дальше на своем терминале. При наступлении запрограммированного условия - советник включается в работу и начинает свои расчеты. 
 
При чем все расчеты советник записывает в логи, выглядит это так:
 
  • 16:57:34 Exp - Exp - CloseMinusByPlus GBPUSD,H1: initialized
  • 16:58:41 Exp - Exp - CloseMinusByPlus GBPUSD,H1: Перекрытие убыточных позиций путем закрытия профитных позиций начато:
  • 16:58:41 Exp - Exp - CloseMinusByPlus GBPUSD,H1: Самый большой минус: -51 пипсов
  • 16:58:41 Exp - Exp - CloseMinusByPlus GBPUSD,H1: Самый большой минус тикет: 222064678
  • 16:58:41 Exp - Exp - CloseMinusByPlus GBPUSD,H1: Самый большой плюс: 22 пипсов
  • 16:58:41 Exp - Exp - CloseMinusByPlus GBPUSD,H1: Самый большой плюс тикет: 222064722
  • 16:58:41 Exp - Exp - CloseMinusByPlus GBPUSD,H1: Совокупный профит по найденным позициям: 72 пипсов
  • 16:58:41 Exp - Exp - CloseMinusByPlus GBPUSD,H1: Число позиций для закрытия: 5
  • 16:58:41 Exp - Exp - CloseMinusByPlus GBPUSD,H1: Тикеты для закрытия убыточной позиций: 222064678
  • 16:58:42 Exp - Exp - CloseMinusByPlus GBPUSD,H1: close #222064678 buy 0.10 GBPUSD at 1.65055 at price 1.65004
  • 16:58:42 Exp - Exp - CloseMinusByPlus GBPUSD,H1: Тикеты для закрытия профитных позиций: .222064722.222064691.222064750.222064878.222064715
  • 16:58:53 Exp - Exp - CloseMinusByPlus GBPUSD,H1: close #222064878 sell 0.10 EURUSD at 1.35773 at price 1.35774
  • 16:58:54 Exp - Exp - CloseMinusByPlus GBPUSD,H1: close #222064750 sell 0.10 GBPUSD at 1.65034 at price 1.65025
  • 16:58:54 Exp - Exp - CloseMinusByPlus GBPUSD,H1: close #222064722 sell 0.10 GBPUSD at 1.65039 at price 1.65025
  • 16:58:55 Exp - Exp - CloseMinusByPlus GBPUSD,H1: close #222064715 sell 0.10 EURUSD at 1.35765 at price 1.35773
  • 16:58:56 Exp - Exp - CloseMinusByPlus GBPUSD,H1: close #222064691 sell 0.10 GBPUSD at 1.65038 at price 1.65024
 
Как видно из данной записи. У нас было открыто очень много позиций (хаотичное открытие). 
В настройках мы установили - запускать расчет когда будет найдена самая большая убыточная позиция с минусом в -50 
(MaxLossPoss_in_unit=-50)  пипсов (TypyClose=2) и совокупный профит будет больше на 20 пипсов(ProfitPerLoss_in_unit=20) Также мы установили, что закрывать надо не более 5 ордеров (MaxPos_in_Class=5)
 
Эксперт нашел позицию с лоссом -51 пипс, а также серию ордеров с профитом +72 пипса. и собственно, закрыл как убыточную позицию, так и серию прибыльных позиций. 
 

 

 


 
 
Пример работы данного алгоритма в советнике 2 MACD 

без функции: 





с функцией закрытия путем перекрытия: 

 


 

Внешние переменные и настройки



Название Описание
TypeOfUnitToClose Тип расчетов прибыли и убытков. В долларах или в пунктах
MinLossInUnit Минимальный убыток позиции в юнитах ( TypeOfUnitToClose) , который берется в расчет советника. 
Ордер с убытком в "MinLossPoss_in_unit" юнитов(долларов или пунктов),  должен устанавливаться в минусовой зоне.
Это верхняя планка для поиска убыточных позиций. 
Например:  MinLossInUnit=-100  TypeOfUnitToClose=dollars, тогда советник ищет или ждет позицию с убытком больше или равно -100 долларов, например: -100 долларов, -150 долларов -200 долларов и так далее.
Позиция с убытком -99 долларов уже игнорируется.
AdditionalProfitInUnit Количество юнитов прибыли для разницы закрытия комплекта позиций. 
Позиция (один или несколько) с общей прибылью, превышающей убыток на " AdditionalProfitInUnit" юнитов.
Например:  AdditionalProfitInUnit=10 MinLossInUnit=-100  TypeOfUnitToClose=dollars
Советник ищет или ждет как минимум 2 позиции, одна из которых с убытком -100 долларов, а вторая с прибылью +110 долларов. в этот момент советник принимает решение о включении своей функции
MaxPos_in_Class Параметр "MaxPos_in_Class" должен ограничивать количество позиций всего "комплекта" закрытия.
Например: MaxPos_in_Class=3, тогда советник будет искать комплект для закрытияиз максимум 3 позиций (1 убыточная и 2 прибыльных)
FirstSymbolClose Искать пары позиций и закрывать только той валюты, минус которой мы обрабатываем.
Вы можете выключить параметр  FirstSymbolClose, тогда советник будет закрывать любые комплекты из убыточных и прибыльных позиций на всем счете, независимо от того, какая валютная пара включена в расчет.
При включении функции  FirstSymbolClose - советник считает и закрывает комплекты из одной валютной пары
OpenHoura  OpenMinutea Время начала работы советника
CloseHoura  CloseMinutea Время окончания работы советника
OrderToClose Тип позиций : -1=All Orders,1-Sell,0=Buy
MagicToClose

Магик позиций : -1 = любой магик. Или Вы можете указать уникальный магический номер своих позиций, которые следует обрабатывать

Вы можете указать несколько магиков через запятую

SymbolToClose Валютная пара для мониторинга -1=All Symbol,1-Curent Symbol