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

Оперативное управление размером позиций в портфеле:

            
  В ходе торгов можно управлять размером позиции, и в зависимости от ситуации на графиках увеличивать или уменьшать размер доли бумаги в портфеле. Рассмотрим график:
  MaxInPortfel_Sell.jpg (5293 bytes)

Например, на самых верхних Sell-сигналах на продажу можно сформировать шортовую позицию с долей в портфеле 20% с помощью строки:
     MaxInPortfel:=20;  {задаем долю бумаги в портфеле 20%}:
     FNull:=IF(FSell, ExtFml("Borisoff.MoveMICEX_SHR","xxxx-000",LastValue(MaxInPortfel),1,S,0,Simple,0,FSell,3), False);
     
               
А на нижних Sell-сигналах долю шорта в портфеле можно уменьшить до 15% с помощью строки:
     MaxInPortfel:=15;  {задаем уменьшеную долю бумаги в портфеле 15%}:
     FNull:=IF(FSell, ExtFml("Borisoff.MoveMICEX_SHR","xxxx-000",LastValue(MaxInPortfel),1,S,0,Simple,0,FSell,3), False);
        
   и поскольку доля по бумаге в формуле уменьшится, то и имеющаяся в портфеле позиция будет уменьшена до величины, заданной в функции.
          
На последнем Sell-сигнале долю шорта в портфеле можно например уменьшить до 10% с помощью строки:
     MaxInPortfel:=10;  {задаем долю бумаги в портфеле 10%}:
     FNull:=IF(FSell, ExtFml("Borisoff.MoveMICEX_SHR","xxxx-000",LastValue(MaxInPortfel),1,S,0,Simple,0,FSell,3), False);
               
Т.е. при очередных сигналах того же направления, если доля в портфеле (параметр MaxQuantInPortfel) в функции MoveMICEX_SHR() будет уменьшена, то и доля ЦБ в портфеле будет уменьшена путем автоматического выставления модулем заявки на покупку для уменьшения шортовой позиции в портфеле до величины, заданной в формуле. Если имеются стопы, то текущие стоп-завки в очереди АД-терминала будут удаляться и создаваться новые стопы, но уже для уже нового размера позиции по бумаге в портфеле. Все аналогично и для лонгов.
  ЗАМЕЧУ, что изменение размера позиций в портфеле осуществляется только на очередных Buy или Sell сигналах на графике, т.е. если долю в формуле изменить и после этого Buy/Sell сигналов на графике еще не будет, то и уменьшения или увеличения размера позиции в портфеле не произойдет. Конечно можно было сделать так, чтобы как только изменяется доля портфеля в формуле, то при очередном обновлении данных в Метастоке сразу бы уменьшалась или увеличивалась и соответствующая позиция, но это было бы неправильно, т.к. при этом и начальное формирование позиций происходило бы без соответствующего Buy или Sell сигнала. Но реализовать разовое увеличение или уменьшение доли в портфеле, можно через формулу с каким-либо одноразовым условием, например, по событию начала роста или снижения цен каких-либо ЦБ.

Пример, как можно сформировать позицию в портфеле в течении нескольких баров графика с помощью всего одного сигнала на покупку/продажу:
Buy.GIF (5199 bytes)
Если прописать в Советнике Метастока следующую последовательность строк, то можно сформировать лонг-позицию в портфеле с помощью покупок заданного кол-ва лотов на каждом последующем баре после появления всего одного buy-сигнала на графике:
FNull:=IF(FBuy, ExtFml("Borisoff.MoveMICEX_SHR","12345-000",-1,0.5,B,0,Simple,0,FBuy,1), False); {на следующем баре после сигнала купится один лот}
FNull:=IF(FBuy, ExtFml("Borisoff.MoveMICEX_SHR","12345-000",-2,0.5,B,0,Simple,0,FBuy,2), False); {на 2-м баре после сигнала купится еще один лот}
FNull:=IF(FBuy, ExtFml("Borisoff.MoveMICEX_SHR","12345-000",-3,0.5,B,0,Simple,0,FBuy,3), False); {на 3-м баре после сигнала купится еще один лот}
FNull:=IF(FBuy, ExtFml("Borisoff.MoveMICEX_SHR","12345-000",-4,0.5,B,0,Simple,0,FBuy,4), False); {на 4-м баре после сигнала купится еще один лот}
FNull:=IF(FBuy, ExtFml("Borisoff.MoveMICEX_SHR","12345-000",-5,0.5,B,0,Simple,0,FBuy,5), False); {на 5-м баре после сигнала купится еще один лот и всего в лонг-позиции станет 5 лотов}
       
Можно также сформировать лонг-позицию в портфеле с помощью покупок заданного кол-ва лотов на произвольных барах графика после появления всего одного buy-сигнала на графике, если прописать в Советнике Метастока следующую последовательность строк:
FNull:=IF(FBuy, ExtFml("Borisoff.MoveMICEX_SHR","12345-000",-1,0.5,B,0,Simple,0,FBuy,1), False); {на следующем баре после сигнала купится один лот}
FNull:=IF(FBuy, ExtFml("Borisoff.MoveMICEX_SHR","12345-000",-2,0.5,B,0,Simple,0,FBuy,3), False); {на 3-м баре после сигнала купится еще один лот}
FNull:=IF(FBuy, ExtFml("Borisoff.MoveMICEX_SHR","12345-000",-3,0.5,B,0,Simple,0,FBuy,5), False); {на 5-м баре после сигнала купится еще один лот}
FNull:=IF(FBuy, ExtFml("Borisoff.MoveMICEX_SHR","12345-000",-4,0.5,B,0,Simple,0,FBuy,7), False); {на 7-м баре после сигнала купится еще один лот}
FNull:=IF(FBuy, ExtFml("Borisoff.MoveMICEX_SHR","12345-000",-5,0.5,B,0,Simple,0,FBuy,9), False); {на 9-м баре после сигнала купится еще один лот и всего в лонг-позиции станет 5 лотов, последовательность номеров баров после сигнала для покупок/продаж может быть совершенно произвольной}

Если на последующих барах задавать меньший размер позиции, то модуль автоматически будет уменьшать величину позиции до заданного на очередном баре уровня. Т.е. таким образом можно постепенно уменьшать величину позиции в портфеле при предполагаемом развороте тренда.

Hosted by uCoz