Init() 및 DeInit() 실행 순서 - 페이지 28

 
Alexey Viktorov :
창 수는 명확하지만 매개변수가 다른 MA 수를 결정하는 방법은 무엇입니까?
표시기 매개변수를 요청하고 구문 분석해야 합니다.
 
나갔다
 int GetShortNames( string &ShortNames[], const long Chart_ID = 0 , const int SubWindow = 0 )
{    
   const int Total = ChartIndicatorsTotal (Chart_ID, SubWindow);

   ArrayResize (ShortNames, Total);
  
   for ( int i = 0 ; i < Total; i++)
    ShortNames[i] = ChartIndicatorName (Chart_ID, SubWindow, i);
    
   return (Total);

}

// Возвращает свое "Короткое имя" - ShortName
string GetMyShortName( void )
{  
   string Res = "" ;
  
   const int SubWindow = ChartWindowFind ();
  
   string ShortNames[];

  GetShortNames(ShortNames, 0 , SubWindow);
  
   const string TmpShortName = __FUNCSIG__ + ( string ) MathRand ();

   IndicatorSetString ( INDICATOR_SHORTNAME , TmpShortName);    

   string NewShortNames[];

   const int Total = GetShortNames(NewShortNames, 0 , SubWindow);
  
   for ( int i = 0 ; i < Total; i++)
     if (NewShortNames[i] == TmpShortName)
    {
      Res = ShortNames[i];
      
       IndicatorSetString ( INDICATOR_SHORTNAME , Res);
      
       break ;
    }
  
   return (Res);
}

// Возвращает свой хэндл
int GetMyHandle( void )
{
   const string ShortName = GetMyShortName();
  
   const string TmpShortName = __FUNCSIG__ + ( string ) MathRand ();  
  
   IndicatorSetString ( INDICATOR_SHORTNAME , TmpShortName);

   const int Res = ChartIndicatorGet ( 0 , ChartWindowFind (), TmpShortName);
  
   IndicatorSetString ( INDICATOR_SHORTNAME , ShortName);  

   return (Res);
}

OnDeinit 이전에 핸들의 IndicatorRelease 를 만드는 것이 매우 중요합니다.

흥미롭게도 이러한 각 IndicatorRelease 후에 표시기 핸들이 1씩 증가합니다.

 
fxsaber :
나갔다

OnDeinit 이전에 핸들의 IndicatorRelease를 만드는 것이 매우 중요합니다.

흥미롭게도 이러한 각 IndicatorRelease 후에 표시기 핸들이 1씩 증가합니다.

IndicatorRelease 가 이미 테스터에서 작동하고 있습니까? 나는 만일을 대비하여 묻는다 - 나는 전에 일한 적이 없다.
 
Andrey Dik :
IndicatorRelease가 이미 테스터에서 작동하고 있습니까? 나는 만일을 대비하여 묻는다 - 나는 전에 일한 적이 없다.
확인하지 않았습니다.
 
fxsaber :
확인하지 않았습니다.
나는 테스터의 메모리에서 표시기를 언로드하는 기능이 부족하여 예를 들어 자신의 수단으로 표시기를 즉석에서 최적화하는 경우 시스템이 일시 중단된다는 사실에 대해 말했습니다. 또는 예를 들어. 표시기 매개변수의 동적 변경은 매번 새로운 핸들이 생성되고 테스터에서 이전 핸들이 삭제되지 않기 때문에 메모리 오버플로로 이어질 것입니다.
 
https://www.mql5.com/ru/code/18138
Init_Sync
Init_Sync
  • 2017.04.17
  • fxsaber
  • www.mql5.com
Библиотека делает синхронизированными Init/Deinit индикаторов
 
좋은 주제
 
Alexberrr :
좋은 주제

현재 필요하고 관련성이 있습니다. 나는 오랫동안 이유를 찾고 있었는데, 이 주제 덕분에 내 코드에 문제가 있다고 생각했는데 문제가 해결되었습니다.

모두 감사합니다!