Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Зарегистрируйся на MQL5.community, чтобы опубликовать тему на форуме
MadRob
10
MadRob 2016.04.26 20:29 

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

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

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

Алексей Тарабанов
7222
Алексей Тарабанов 2016.04.26 21:08  
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 2016.04.27 08:36  

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

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

Alexey Viktorov
5541
Alexey Viktorov 2016.04.27 12:23  
MadRob:

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

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

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