Скачать MetaTrader 5

На рассмотрение профессионалов.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
khorosh
8245
khorosh 2012.02.09 23:12 

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

Прошу дать оценку правильности алгоритма и хотелось бы узнать можно ли вычислить максимальную просадку не вычисляя максимумов и минимумов?

double MaxDrawDown;
int deinit() {
 Print("MaxDrawDown=",MaxDrawDown);
   return (0);
} 

start(){ 
  static double MaxEquity;
  static double MinEquity;
         double DrawDown;
  static bool flag;
 
  if(!flag)
    {
     MaxEquity=AccountEquity();
     MinEquity=AccountEquity();
     flag = true;
    } 
  if(AccountEquity()>MaxEquity) 
    {MaxEquity=AccountEquity();MinEquity=AccountEquity();}
  
  if(AccountEquity()<MinEquity) 
    {MinEquity=AccountEquity();}
  
  DrawDown=MaxEquity-MinEquity;
  
  if(DrawDown>MaxDrawDown ) 
    {MaxDrawDown=DrawDown;}
// ............остальной код советника
Рустам
3597
Рустам 2012.02.09 23:19  

Собсно что значит не вычисляя ? во время прогона у вас случился и максимум и минимум...

Логика тестера один в один. проблема что в онлайне Вы таким образом просадку не узнаете - вычислять таки придется.

khorosh
8245
khorosh 2012.02.09 23:55  
FAQ:

Собсно что значит не вычисляя ? во время прогона у вас случился и максимум и минимум...

Логика тестера один в один. проблема что в онлайне Вы таким образом просадку не узнаете - вычислять таки придется.

Вопрос по максимумам и минимумам возник в связи с постом OnGoing, который удивился для чего какие-то максимумы и минимумы. Вот я и подумал, что может существует какой-то другой способ вычисления максимальной просадки, без максимумов и минимумов.? Т.е. в принципе расчёт правильный? А какие в онлайне проблемы возникнут? Можете пояснить почему этот способ не будет работать? Может вы имеете ввиду, что будут проблемы, если будет несколько советников и нельзя будет определять для каждого с таким кодом. Если Вы имели ввиду это, то понятно. Или что-то другое?

Рустам
3597
Рустам 2012.02.10 00:12  
Потому что по истории (ордерам) вы сможете восстановить только кривую баланса, а вот кривую эквити вам придется синтезировать исходя из количества открытых в каждый момент ордеров, залога по каждому ордеру (валюта) и максимумов \ минимумов цены.
khorosh
8245
khorosh 2012.02.10 00:21  
FAQ:
Потому что по истории (ордерам) вы сможете восстановить только кривую баланса, а вот кривую эквити вам придется синтезировать исходя из количества открытых в каждый момент ордеров, залога по каждому ордеру (валюта) и максимумов \ минимумов цены.

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

Yury Reshetov
13462
Yury Reshetov 2012.02.10 05:17  
khorosh:

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


Проще считать показания индикатора эквити от Хирурга, нежели что-то хранить в каких-то переменных.
khorosh
8245
khorosh 2012.02.10 05:56  
Reshetov:
Проще считать показания индикатора эквити от Хирурга, нежели что-то хранить в каких-то переменных.
Согласен, код был предназначен для прогона в тестере, меня лишь интересовало правильно ли я считаю в принципе, а то OnGoing зародил во мне сомнения.
khorosh
8245
khorosh 2012.02.10 06:11  
Integer:

Не парьтесь, он здесь много чего не в тему высмеивал, и даже не в тему, а совсем мимо.
Спасибо за поддержку, а то у меня тут возникли сомнения, что я что то недопонимаю.
Andrei
2389
Andrei 2012.02.10 06:18  
khorosh:

Зашла речь о максимальной просадке. Кое кем было высказано мнение, что тестер её меряет неправильно.

Тестер-то меряет максимальную просадку эквити правильно, только он не учитывает состояние баланса в этот момент что превращает это измерение в бессмыслицу.

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

Dmitry Fedoseev
43471
Dmitry Fedoseev 2012.02.10 06:21  
khorosh:
Спасибо за поддержку, а то у меня тут возникли сомнения, что я что то недопонимаю.


Вообще максимальная просадка это не разница максимального и минимального эквити. На старте МаксЭквити=Эквити, МинЭквити=Эквити, Просадка=0. В процессе работы: если Еквити>МаксЭквити, то считаем просадку как МаксЭквити-МинЭквити, если полученное значение больше зафикисрованой ранее просадки, то запоминаем большее значение, тут же делаем сброс минимума - МинЭквити=МаксЭквити и запоминаем новый максимум МаксЕквити=Эквити.
Dmitry Fedoseev
43471
Dmitry Fedoseev 2012.02.10 06:26  

Красными линиями показаны просадки, нужно найти максимальную.

12345678
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий