оптимировать оптимизацию тестера - страница 2

 
L0rdy:

Lot я расчитываю с учётом баланса и StopOut 100%


я тут с Print() поработал и заметил, что при работе советник не запрыгивает в if(..) потому что Lot не успевает стать меньше 0,01 как советник вырубается сам c StopOut либо с Error 134.

StopOut это ещё понятно.

А вот что тестер при балансе 170 EUR не может открыть сделку в 0,01 лот и вылетает с Error 134 мне не понятно.

выведите в принт

SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN)

и все Вам станет понятно

 
большое спасибо за SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN) надо будет попробовать.

И еще хотел бы уточнить:
 if(MQLInfoInteger(MQL_OPTIMIZATION))
{
   if(Эквити Или Баланс<5.0)
     {
      ExpertRemove();
     }
}

с if(MQLInfoInteger(MQL_TESTER)) в нормальном тесте работает отлично, с if(MQLInfoInteger(MQL_OPTIMIZATION)) в режиме оптимизации просто пролетает все варианты очень быстро и без результатов, а результаты должны быть, я знаю.

По этому вопрос:
внутри if(MQLInfoInteger(MQL_OPTIMIZATION)) только запросы с балансом или эквити работают ?
 
L0rdy:
большое спасибо за SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN) надо будет попробовать.

И еще хотел бы уточнить:

с if(MQLInfoInteger(MQL_TESTER)) в нормальном тесте работает отлично, с if(MQLInfoInteger(MQL_OPTIMIZATION)) в режиме оптимизации просто пролетает все варианты очень быстро и без результатов, а результаты должны быть, я знаю.

По этому вопрос:
внутри if(MQLInfoInteger(MQL_OPTIMIZATION)) только запросы с балансом или эквити работают ?

Да, работают и те и другие

Но как Вы удалите эксперт в режиме оптимизации командой

ExpertRemove();

это уже вопрос

Ответ на который - не сможете удалить

 
Renat Akhtyamov:

Ответ на который - не сможете удалить

Неужели?

 
Evgeny Belyaev:

Неужели?

ок

Удаляется?

То есть командой

ExpertRemove();

можно остановить оптимизацию?

Ну если у Вас получится, продемонстрируйте пожалуйста, буду иметь ввиду
 
Renat Akhtyamov:

ок

Удаляется?

То есть командой

можно остановить оптимизацию?

Ну если у Вас получится, продемонстрируйте пожалуйста, буду иметь ввиду

Ванечка, спецально для тебя и тех кто на печи лежит!

Код:

#property strict
extern double lots=0.01;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   int t=OrderSend(Symbol(),OP_BUY,lots,Ask,50,0,0,"",0,0,clrGreen);
   if(OrdersTotal()>0)
     {
      ExpertRemove();
     }

  }

Как проверить:

Ставим галочку: оптимизация.

Заходим в настройки:

Результат оптимизации:

Что имеем на выходе, только 1 сделка, следовательно код:

 if(OrdersTotal()>0)
     {
      ExpertRemove();
     }

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

Кискам привет!

 
Evgeny Belyaev:
...
Спасибо за аргументированный ответ, Федя!