Скачать MetaTrader 5

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

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

Добрый день!

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

 

 

Slava
Модератор
6924
Slava  
OneBillionUSD:

Добрый день!

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

 

 

 

Можно в функции OnDeinit
Михаил
587
Михаил  
stringo:
Можно в функции OnDeinit
Благодарю, разобрался!
Михаил
587
Михаил  
Теперь встал вопрос как отличить убыточную сделку от StopOut?
Yedelkin
4532
Yedelkin  
OneBillionUSD:
Теперь встал вопрос как отличить убыточную сделку от StopOut?    
В смысле? Как отличить одну убыточную сделку от другой?
Михаил
587
Михаил  
Yedelkin:
В смысле? Как отличить одну убыточную сделку от другой?
Мне нужно понимать советник слил или просто не успел выйти в плюс так как тестирование закончилось.
Anatoli Kazharski
59205
Anatoli Kazharski  
OneBillionUSD:
Мне нужно понимать советник слил или просто не успел выйти в плюс так как тестирование закончилось.
А при Стопаут есть какой-нибудь комментарий в последней сделке?
Михаил
587
Михаил  
tol64:
А при Стопаут есть какой-нибудь комментарий в последней сделке?

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

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

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

 

Михаил
587
Михаил  

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

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

 Cпасибо.

Cmu4
1227
Cmu4  
OneBillionUSD:

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

 Cпасибо.

Либо просто принтуйте каждый раз, как советник будет закрывать сделку и в конце теста смотрите журнал.. если принта нет, то сделку закрыл не советник. Ведь, как я понял, у вас нет ТП и СЛ.
Михаил
587
Михаил  
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);
  }
 Еще к сожалению оптимизацией не занимался но думаю ход мыслей у меня верный)
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий