Определение просадки. - страница 2

 
Просадок бывает несколько видов. Бывает общая просадка - на сколько процентов текущая сумма меньше инвестированной, бывает относительная - на сколько процентов она меньше, чем максимально набранная. Что касается того, по чему считать, то я бы считал по эквити: именно по эквити трейдер может получить маржин-колл или стоп-аут, даже если баланс ещё на максимуме. 
 
Ihor Herasko:

Какое-то странное высказывание. Так было или не было? 

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

Все верно.

Не было)
Изначально было 3000, потом средства выросли до 4000. Но 4700(баланс) никогда не было на счету. 
 
Sergey Rashevskiy:

Всем привет)

......

Т.е. моя текущая просадка 0!

Прав я или нет?

Привет!

Да ладно...

Баланс 4700, экви 4000

просадка:

100*(4700-4000)/4700 (%) = 17,5%

 
Renat Akhtyamov:

Привет!

Да ладно...

Баланс 4700, экви 4000

просадка:

100*(4700-4000)/4700 (%) = 17,5%

По просадке по балансу согласен, но по логике нет.
У меня никогда не было 4700 на счету. Если б я в любой момент закрыл все ордера, то максимум было бы 4000. Так зачем считать по каким то виртуальным 4700?
 
Sergey Rashevskiy:
По просадке по балансу согласен, но по логике нет.
У меня никогда не было 4700 на счету. Если б я в любой момент закрыл все ордера, то максимум было бы 4000. Так зачем считать по каким то виртуальным 4700?

оу, ну да, есть такое

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

 
Sergey Rashevskiy:
По просадке по балансу согласен, но по логике нет.
У меня никогда не было 4700 на счету. Если б я в любой момент закрыл все ордера, то максимум было бы 4000. Так зачем считать по каким то виртуальным 4700?

с усреднением могло быть, если в сетке первым закрыть самый профитный ордер )

 
Согласен с автором темы. Расчет просадки какой-то странноватый)
 

Не знаю как на пятёрке, (не пользуюсь), а на четвёрке максимальная просадка считается так:

void CalcMaxDrawDown()
  {
   double DrawDown=0;

   if(AccountEquity()>MaxEquity)
     {MaxEquity=AccountEquity();MinEquity=AccountEquity();}

   if(AccountEquity()<MinEquity)
     {MinEquity=AccountEquity();}

   DrawDown=MaxEquity-MinEquity;

   if(DrawDown>MaxDrawDown)
     {
      MaxDrawDown=DrawDown;
      CurrMaxEquity=MaxEquity;
      DataMaxDrawDown=(string)Hour()+" час  "+IntegerToString(Day())+"."+(string)Month()+"."+(string)Year();
     }
  }
 
khorosh:

Не знаю как на пятёрке, (не пользуюсь), а на четвёрке максимальная просадка считается так:

Совершенно верно! От максимальных показаний средств, до минимальных показаний. Но все по средствам.

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

 
Sergey Rashevskiy:

Совершенно верно! От максимальных показаний средств, до минимальных показаний. Но все по средствам.

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

Я обычно использую при тестировании в тестере. В deinit() после прогона теста распечатывается величина макс. просадки и время, дата.