Функция трейлинга средств (эквити) - может кто встречал готовую? - страница 3

 
bstone писал(а) >>

Потом автор говорит про трейлинг стопы по эквити, а Комбат говорит, что стопы в попу - даешь тейки. Короче в лагере врага полная неразбериха :)

"Война войной - обед по распорядку..."

Сейчас как раз обед... :))) и значит мир...

*

Ну во первых, "стопы в попу", а ещё точнее "трейлинг-стопы в попу" это касаемо определёных

торговых моментов когда использование штатного на каждую позицию в корзине неэффективно.

И когда нужно, особенно при единичных, независимых позициях штатный т-с гоняется в полный рост...

Так что уж не делайте прям такого уж "врага т-с" из мну... :))) это неверный вывод из вопроса.

*

Если уж подходить к вопросу автора формально, то многое можно додумать за него...

Например это ему надо для контроля за ивестициями которые находятся в дов.управлении.

В общем он сам лучше знает что хотИт... ;)

*

Я лишь зацепился на похожесть того что мне и самому интересно и надо...

Как описывал выше для торговли "пакетом" (портфелем, корзиной) на ру-акциях.

Залоги там мизерные, потому и наиболее стабильной, пусть и с небольшим % выбрана тактика

торговли разнобоем акций по секторам например, банки там, газпром с нефтянкой да приправленые телекомами...

*

Так вот открывая десяток-другой-третий позиций довольно сложно выбрать уровень т-с для каждой из них.

Одной надо 20 а другой 200, третья так вообще как вентилятор туда-сюда...

Плюс к этому отягощение ситуации наличием отсутствия штатного т-с, а использование самописных

невозможно полноценно ввиду таскания стопов с одним единственным уровнем на все позиции,

что увы не подходит по указаным выше причинам...

А посему вполне логичный выход использовать трал профита или эквити, что практически тоже самое.

*

...

 

Для трейлинга по эквити можно использовать принцип сканирования позиций как сделано в этом скрипте для расчета уровня безубытка. Не мой, где то содрал, да простит меня автор.

//+------------------------------------------------------------------+
//|                                                    Bezubytok.mq4 |
//+------------------------------------------------------------------+
#include <WinUser32.mqh>
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
int Spr= MarketInfo(Symbol(),MODE_SPREAD);
//------------ Безубыток  ---------------------------------------------------
double B2_B=0,B2_S=0,B2_LB=0,B2_LS=0,BSw=0,SSw=0;
      for(int b2=0;b2<OrdersTotal();b2++) //  
      {
      if(OrderSelect(b2,SELECT_BY_POS,MODE_TRADES)==false)    continue;
      if(OrderSymbol()==Symbol())
      {
           if (OrderType()==OP_BUY)
           {
           B2_B=((B2_B*B2_LB)+(OrderOpenPrice()*OrderLots()))/(B2_LB+OrderLots());
           B2_LB=B2_LB+OrderLots();
           BSw=BSw+OrderSwap();
            }
                if (OrderType()==OP_SELL)
                {
           B2_S=((B2_S*B2_LS)+(OrderOpenPrice()*OrderLots()))/(B2_LS+OrderLots());
           B2_LS=B2_LS+OrderLots();
           SSw=SSw+OrderSwap();
               }
            }}
double M2B=0,M2S=0 ,M5;           
    if (B2_LB>B2_LS)   // Идём вверх
{
for(int J2=0;J2<10000;J2++)
    {
    M2B=J2*B2_LB*10;
    M2S=((B2_B-B2_S+Spr*Point)/Point+J2)*(B2_LS*(-10));
    if (M2B+M2S+BSw+SSw>=0) 
        {
        M5=NormalizeDouble(B2_B+J2*Point,Digits);
        break;
        }}} 
if (B2_LS>B2_LB)  //  Идём вниз
{
for(int J3=0;J3<10000;J3++)
    {
    M2S=J3*B2_LS*10;
    M2B=((B2_B-B2_S+Spr*Point)/Point+J3)*(B2_LB*(-10));
    if (M2S+M2B+BSw+SSw>=0) 
        {
        M5=NormalizeDouble(B2_S-J3*Point,Digits);
        break;
        }}}
  string Message;      
       if (B2_LS==B2_LB && B2_LB!=0 ) Message="Залокированные позиции" ;
       else           
       Message="Уровень без убытка  "+"\n"+"          "+DoubleToStr(M5,Digits)+"\n"+
       " Надо пройти  "+DoubleToStr((M5-Bid)/Point,0);
MessageBox(Message,Symbol(),MB_OK);                 
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
kombat >>:

Нет, ну врагом т-с я никого не называл. Так шутканул, чтобы разбавить прозу.


В остальном я вашу мысль понял. Но смущает один момент: получается, что вы торгуете по эквити портфеля, а не по инструментам, которые в него входят. А разве прогнозировать эквити портфеля из десятков инструментов проще, чем инструменты в отдельности?

 
bstone писал(а) >>

Нет, ну врагом т-с я никого не называл. Так шутканул, чтобы разбавить прозу.


В остальном я вашу мысль понял. Но смущает один момент: получается, что вы торгуете по эквити портфеля, а не по инструментам, которые в него входят. А разве прогнозировать эквити портфеля из десятков инструментов проще, чем инструменты в отдельности?

Понимаю... ;)

*

Что касаемо идеи "торговать эквити", то уже давно было примечено что при открытии

множества инструментов довольно часто возникают "островки профита" с неплохим %

и руки так и тянулись закрыть всё разом... однако жаба всё вещала: рано, рано ещё

Затем терялся контроль, ибо не будешь сидеть же часами пялившись на монитор, и...

ловим жирного лося... кляня себя, ну вот, ну закрылся бы на, ведь было и т.д...

*

А возложив этот контроль за этим процессом на механическое чудо которому

неведомо слово жадность только выиграем в этой битве...

Если серьёзно, то просто автоматизировать процесс для максимально возможной эффективности.

*

Что касаемо прогнозирования...

Эээ... тут несколько иной подход к формированию портфеля...

Классический портфель собирается как правило надолго и это скорее инвестиции нежели спекуляции,

и там уделено больше моментов чем внутридневные или максимум на несколько дней трейды...

В предлагаемом принципе основой служит: разнобой инструментов

*

Кстати, подобное наблюдается и на валютах, и на спарке валюта+фучерс

*

Более информативнее конечно будет погонять на демке...

попробуйте ;)))

 
YuraZ писал (а) >>

автор имел ввиду скорее наоборот когда эквити слишком бодро ушло вверх от линии баланса

то подтянуть стопы вытянув их в безубыток

если я правильно телепатировал мысли автора

Да, Юра, меня интересовала ( в общем-то меня только-то и интересовала готовая функция тралла средств, если таковая имеется у кого, но похоже в этом плане я опять первый, кому нужно нечто, выходящее за общепринятые рамки/штампы/классику торговли на рынках и т.д.) функция тралла эквити исключительно из жадности, как тот хохол из анекдота, которому сказали, мол, бери земли сколько сможешь, так он сел на коня, скакал-скакал, скакал-скакал, лошадь загнал, бежал-бежал, бежал-бежал, упал, полз-полз, полз-полз, устал ползти, снял шапку, бросает и говорит: "..а оце на помидоры!" :)))


Как правило на издохе общего движения эквити о-о-очень бодро уходит вверх, но и так же о-о-очень бодро откатывается, и вот здесь хочется включить тралл и выжать максимум из движения, и спокойно закрыть всё.

вы же понимаете, что стопами можно пользоваться не только когда убытки беруться но и защищая прибыль

а еще можно растить эквити ;) да много чего можно стопами делать как оказывается :)

думаю автор именно это имел ввиду

некоторые ТС имеют рывки эквити от линии баланса

имея индикатор, можно попробовать как то использовать это для выхода в безубыток хотя бы

А в остальном Вы стелепатировали неверно ) про безубыток, не вывожу я ничего в безубыток, не нужно это, лишнее это, как сказал правильно Роман - от лукавого это :)

bstone писал (а) >>

Нет, не похоже. Автор вот сам сказал, что штатные стопы ему религия не позволяет трогать.


Похоже-похоже :)

Мне, как атеисту, рожденному в СССР, религия позволяет делать всё, а вот ТС - запрещает, ибо стопы задействованы, четко выполняют свое назначение и не нужно им мешать, они при деле и с задачей своей справляются отлично.


А вот "виртуальные" стопы по эквити - пожалуйста. Ну я конечно тормоз последний, но разницы не вижу. Закройся ты штатными или "виртуальными" стопами - результат один.

Да не в тормознутости дело, не какой Вы не тормоз, поверьте, просто с наскоку разницы Вы не поймете, ибо нет у Вас сейчас входных данных, чтоб её увидеть.


Потом автор говорит про трейлинг стопы по эквити, а Комбат говорит, что стопы в попу - даешь тейки. Короче в лагере врага полная неразбериха :)

Ну.. я Комбата ТС не знаю, может он и погорячился со стопами в *опу, а может и нет :) кто знает

А вот тэйки я точно в *опу отправил, нет никаких целей, от лукавого всё это, ИМХО :)

Общая мысль автора вполне понятна, но как я уже говорил, не вижу у нее рациональной подоплеки. Хочется автору спасти свою прибыль и выйти из рынка, если эквити сначала выросло скажем на 20%, а потом начало просаживаться до 10%. Ну вот вышли мы по виртуальному стопу на 10% просадки. Да, заработали 10% и радуемся.

Ох, Роман, в том-то и дело, что непонятна Вам мысль автора :) не-по-нят-на

Трал мне интересен после 150-200%.. (это всё демо, спокойствие, реал со следующей недели, по сигналу)



Но повторюсь, а почему ТС не закрылась штатными стопами? Если не закрылась, значит анализ рынка предполагал возможность некоторого кратковременного неблагоприятного развития событий. На то они и штатные стопы, чтобы выходить из рынка, если видно, что рабочая гипотеза о его кондициях явно не состоятельна. А вот если бы не виртуальный стоп, то рынок бы чуток попугал откатом и пошел бы вверх себе дальше. Штатные стопы свою работу выполнили бы на 5, а вот виртуальный стоп откусил бы всю прибыль. Вот и гадайте, как бы лучше было.

Ну про стопы особо повторяться не буду, писал выше, они при деле и дело своё делают хорошо.. и стопами можно не только выходить, но и входить и т.д.

А по поводу "почему ТС..." и далее по тексту - не её это ТСячее дело делать то, что не должна, а то что должна - она делает прекрасно :)

kombat писал (а) >>

"Война войной - обед по распорядку..."

Сейчас как раз обед... :))) и значит мир...

*

Ну во первых, "стопы в попу", а ещё точнее "трейлинг-стопы в попу" это касаемо определёных

торговых моментов когда использование штатного на каждую позицию в корзине неэффективно.

Вот, с *опами разобрались, и хорошо :)

Да, штатные трейлинг-стопы действительно в *опу, т.к. использование на каждую позицию в корзине может быть не только неэффективно, но и убийствено в общем-то, как по мне и для моей ТС

Если уж подходить к вопросу автора формально, то многое можно додумать за него...

Не нужно за автора ничего додумывать, он сам за себя успевает додумывать :))

Например это ему надо для контроля за ивестициями которые находятся в дов.управлении.

В общем он сам лучше знает что хотИт... ;)

Комбат, я подумаю через два-три месяца на этим, ДУ.. красивые буквы, а на аглицком ваще - IBO :) а может и думать даже не буду.. ;) в смысле даже и не подумаю над этим думать :))

Реально всё банально - мне это нужно, как правильно сказал товарищ Комбат :)

Если серьёзно, то просто автоматизировать процесс для максимально возможной эффективности.

ЗЫ: а вообще, проветривая сегодня тело на природе, подумалось, что хорошо бы вообще сделать тралл по трендовой линии эквити, да и еще кое чего ввернуть туда..

 
FION писал (а) >>

Для трейлинга по эквити можно использовать принцип сканирования позиций как сделано в этом скрипте для расчета уровня безубытка. Не мой, где то содрал, да простит меня автор.

Спасибо, Сергей, но это немного не подходит, или правильнее - совсем не подходит.

 
alexx_v писал(а) >>

...( в общем-то меня только-то и интересовала готовая функция тралла средств, если таковая имеется у кого, но похоже в этом плане я опять первый, кому нужно нечто, выходящее за общепринятые рамки/штампы/классику торговли на рынках и т.д.)

...

Вот посмотри, наверно подойдет.

Файлы:
 
Talex писал (а) >>

Вот посмотри, наверно подойдет.

Обязательно посмотрю, спасибо.

ЗЫ: вот собственно то, о чем говорил, про "на издохе движения", и как раз в такие моменты хорошо иметь тралл под рукой..


 
чем интересно все закончилось?
 
OZ0 >>:
чем интересно все закончилось?
extern bool   VirtualTrayling=true;
extern int    VirtualTraylingDistance=200;
int Distance=0;

////////////////////////////////////
if (VirtualTrayling==true)
      {
         if (CurrentProfitInPips()>VirtualTraylingDistance && CurrentProfitInPips()>Distance+VirtualTraylingDistance)
            {
            Distance=CurrentProfitInPips()-VirtualTraylingDistance;
            }
         
         if (CurrentProfitInPips()<Distance && CurrentProfitInPips()>0)
            {
            Distance=0;
            CloseAllPosition();
            }   
      }
/////////////////////////////////////

int CurrentProfitInPips()
{
   int pr=0;
   double pnt=0;
   
   for(int cnt=OrdersTotal()-1;cnt>=0;cnt--)
   {
     OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
     if(OrderMagicNumber()!=MagicNumber)
     continue;
     pnt=MarketInfo(OrderSymbol(), MODE_POINT); 
          if(OrderMagicNumber()==MagicNumber)
          {
               if (OrderType()==OP_SELL) 
               pr=pr+(OrderOpenPrice()-OrderClosePrice())/pnt;
               
               if (OrderType()==OP_BUY) 
               pr=pr+(OrderClosePrice()-OrderOpenPrice())/pnt;
             
          }
   }
return(pr);   
}
Причина обращения: