Скачать MetaTrader 5

Как очистить график после завершения теста советника?

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

Много раз видел следующую фишку, после завершения теста советника, график полностью очищается. Не остается ни значков сделок, ни используемых индикаторов, ничего.

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

Вопрос, как это сделать? Как полностью очистить график после завершения теста советника? 

Алексей Тарабанов
7316
Алексей Тарабанов  
MadRob:

Много раз видел следующую фишку, после завершения теста советника, график полностью очищается. Не остается ни значков сделок, ни используемых индикаторов, ничего.

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

Вопрос, как это сделать? Как полностью очистить график после завершения теста советника? 

По-разному. Можно так: 

 

// Удаление созданных графических объектов
void ClearScreen(){
   int Dimension=2*TypesTotal;
   string Name, Pref[];
   Comment("                                                       "+
           "                                                       "+
           "                                                       ");
   ArrayResize(Pref,Dimension);
   Pref[ 0]=NameTangent[0];
   Pref[ 1]=NameTangent[1];
   Pref[ 2]=NameTrend[0];
   Pref[ 3]=NameTrend[1];
   Pref[ 4]=NameBaseLevel[0];
   Pref[ 5]=NameBaseLevel[1];
   Pref[ 6]=NameTrace[0];
   Pref[ 7]=NameTrace[1];
   Pref[ 8]=NameLevel12[0];
   Pref[ 9]=NameLevel12[1];
   Pref[10]=NameLevel22[0];
   Pref[11]=NameLevel22[1];
   Pref[12]=NameBorder[0];
   Pref[13]=NameBorder[1];
   Pref[14]=NameLevel2[0];
   Pref[15]=NameLevel2[1];
   Pref[16]=NameMainLevel12[0];
   Pref[17]=NameMainLevel12[1];
   Pref[18]=NameMainLevel22[0];
   Pref[19]=NameMainLevel22[1];
   Pref[20]=NameSpiralBorder[0];
   Pref[21]=NameSpiralBorder[1];
   Pref[22]=NameMainLevel2[0];
   Pref[23]=NameMainLevel2[1];
   Pref[24]=NameAttention[0];
   Pref[25]=NameAttention[1];
   Pref[26]=NameLevel1[0];
   Pref[27]=NameLevel1[1];
   Pref[28]=NameMainLevel1[0];
   Pref[29]=NameMainLevel1[1];
   Pref[30]=NameSpiral[0];
   Pref[31]=NameSpiral[1];
   Pref[32]=NameSpan[0];
   Pref[33]=NameSpan[1];
   Pref[34]=NameMainLevel0[0];
   Pref[35]=NameMainLevel0[1];
   Pref[36]=NameMainLevel5[0];
   Pref[37]=NameMainLevel5[1];
   Pref[38]=NameMainLevel6[0];
   Pref[39]=NameMainLevel6[1];
   Pref[40]=Name123[0];
   Pref[41]=Name123[1];
   int i, k=ObjectsTotal()-1;
   while( k>=0 ){
      Name=ObjectName(k);
      i=Dimension-1;
      while( i>=0 ){
         if( StringSubstr(Name,0,StringLen(Pref[i]))==Pref[i] ){
            if( !ObjectDelete(Name) ) {
               if( !РежимОтладки ) PlaySound("alert.wav");
               Print("***** "+Name+": ошибка удаления "+GetLastError()+" при очистке экрана");
         }  }
         i--;
      }
      k--;
   }
   return;
}
MadRob
10
MadRob  

Что-то ккой-то прям слишком блинный код для такой задачи? 

А есть еще ккие-нибудь варианты? 

Alexey Viktorov
8080
Alexey Viktorov  
MadRob:

Что-то ккой-то прям слишком блинный код для такой задачи? 

А есть еще ккие-нибудь варианты? 

Есть. ObjectsDeleteAll(); и HideTestIndicators();
MadRob
10
MadRob  
AlexeyVik:
Есть. ObjectsDeleteAll(); и HideTestIndicators();
отличные варианты. Спасибо!
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий