Скачать MetaTrader 5

Закрытие позиции при окончании тестирования.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Опубликуй статью и заслужи признание тысячи трейдеров!
Михаил
587
Михаил 2012.05.11 10:40 

Добрый день!

Возникла необходимость отследить убыточную сделку  при окончании тестирования. Как можно это сделать?

 

 

Slawa
Модератор
6843
Slawa 2012.05.11 10:53  
OneBillionUSD:

Добрый день!

Возникла необходимость отследить убыточную сделку  при окончании тестирования. Как можно это сделать?

 

 

 

Можно в функции OnDeinit
Михаил
587
Михаил 2012.05.11 11:38  
stringo:
Можно в функции OnDeinit
Благодарю, разобрался!
Михаил
587
Михаил 2012.05.12 05:04  
Теперь встал вопрос как отличить убыточную сделку от StopOut?
Yedelkin
4532
Yedelkin 2012.05.12 18:15  
OneBillionUSD:
Теперь встал вопрос как отличить убыточную сделку от StopOut?    
В смысле? Как отличить одну убыточную сделку от другой?
Михаил
587
Михаил 2012.05.14 07:18  
Yedelkin:
В смысле? Как отличить одну убыточную сделку от другой?
Мне нужно понимать советник слил или просто не успел выйти в плюс так как тестирование закончилось.
Anatoli Kazharski
56962
Anatoli Kazharski 2012.05.14 08:05  
OneBillionUSD:
Мне нужно понимать советник слил или просто не успел выйти в плюс так как тестирование закончилось.
А при Стопаут есть какой-нибудь комментарий в последней сделке?
Михаил
587
Михаил 2012.05.14 10:44  
tol64:
А при Стопаут есть какой-нибудь комментарий в последней сделке?

Да присутствует.  

Как вариант смотреть комментарий можно. А существует еще какой-либо способ? 

Может как то использовать TesterStatistics?

 

Михаил
587
Михаил 2012.05.14 11:32  

Нашел примерно следующее решение проблемы:

if(TesterStatistics(STAT_MIN_MARGINLEVEL)<MathMax(AccountInfo.MarginStopOut(),AccountInfo.MarginCall()))
     {
      Print("Стопаут");
     }

 Cпасибо.

Cmu4
1227
Cmu4 2012.05.14 12:13  
OneBillionUSD:

Нашел примерно следующее решение проблемы:

 Cпасибо.

Либо просто принтуйте каждый раз, как советник будет закрывать сделку и в конце теста смотрите журнал.. если принта нет, то сделку закрыл не советник. Ведь, как я понял, у вас нет ТП и СЛ.
Михаил
587
Михаил 2012.05.15 06:17  
Cmu4:
Либо просто принтуйте каждый раз, как советник будет закрывать сделку и в конце теста смотрите журнал.. если принта нет, то сделку закрыл не советник. Ведь, как я понял, у вас нет ТП и СЛ.
Совершенно верно данный эксперт не использует стоп уровни. Задача стояла отслеживать убыточные позиции при завершении тестирования во время оптимизации. Вот примерно что у меня получилось: 
double OnTester()
  {
   double ret=0.0;
   HistorySelect(0,TimeCurrent()+86400);
   int total=HistoryDealsTotal();
   ulong Ticket=0;
   for(uint i=total;i>0;i--)
     {
      Ticket=HistoryDealGetTicket(i);
      if(HistoryDealGetInteger(Ticket,DEAL_ENTRY)==DEAL_ENTRY_OUT
         && HistoryDealGetDouble(Ticket,DEAL_PROFIT)<0)
        {
         if(TesterStatistics(STAT_MIN_MARGINLEVEL)
            >MathMax(AccountInfo.MarginStopOut(),AccountInfo.MarginCall()))
           {
            ret=NormalizeDouble(MathAbs(HistoryDealGetDouble(Ticket,DEAL_PROFIT))+
                                TesterStatistics(STAT_PROFIT),2);
           }
         break;
        }
     }
   return(ret);
  }
 Еще к сожалению оптимизацией не занимался но думаю ход мыслей у меня верный)
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий