초보자의 질문 MQL4 MT4 MetaTrader 4 - 페이지 172

 

안녕하세요.

제대로 하는 방법을 알려주세요.

객체의 전역 컬렉션이 있습니다.

CArrayObj array;

객체 생성 및 컬렉션에 추가를 포함하여 많은 계산이 수행되는 추가 클래스가 있습니다.

class CCheck : public CArrayObj
  {
  }
bool CCheck::SomeMethod(void)
  {
   CSample *sample_object= new CSample();
   array.Add(sample_object);
  }

루프에서 정기적으로 CCheck 클래스의 이 추가 개체를 만듭니다. 하지만 파괴할 수는 없으니까. 배열 컬렉션에 CSample 개체가 필요합니다. CCheck를 파괴하면 배열의 sample_object 개체도 사라집니다.

이제 이 CCheck 개체를 다른 가비지 개체 배열에 넣습니다. 배열에서 해당 개체가 더 이상 필요하지 않을 때 이 개체를 지웁니다. 하지만 이 때문에 메모리 부족 오류가 발생합니다. 많은 무거운 CCheck 객체를 배열에 보관해야 합니다. 모든 객체가 나에게 필요한 것은 아니지만 그 안에 생성된 CSample 객체는 필요합니다. CSample 개체만 저장할 수 있고 CCheck를 삭제할 수 있도록 올바르게 수행하는 방법을 알려주십시오. 내가 이해할 수없는 것입니다.

이 코드와 같은 것:

CArrayObj array;
CArrayObj gargage_array;

void OnTick ()
  {
   for ( int i= 0 ;i<total;i++)
     {
      CCheck *check_obj= new CCheck();
      check_obj.Check();
      garbage_array.Add(check_obj);
     }
   if (..)
     {
      array.Clear();
      garbage_array.Clear();
     }
  }

class CCheck : public CArrayObj
  {
   public :
   void          Check( void );
   protected :
   bool          SomeMethod( void );
  };
void CCheck::Check( void )
  {
   ...
   SomeMethod();
  }
bool CCheck::SomeMethod( void )
  {
   CSample *sample_object= new CSample();
   array.Add(sample_object);
  }

class CSample : public CObject
  {
  };
 

솔루션은 이미 포럼 어딘가에 있었지만 답을 찾을 수 없습니다.

이에 대한 "해독제"를 찾은 사람:

표준 패널

표준 코드:

 //+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {   
//--- create application dialog
       if (!ExtDialog.Create( 0 , "For Example " , 0 , 40 , 40 , 760 , 400 ))
       //return(INIT_FAILED);
       return ( false );             // исключительно для того, чтобы продемонстрировать наложение "панелей"
//---
//--- run application
   ExtDialog.Run();
//--- succeed
//-----
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//--- destroy dialog
   ExtDialog.Destroy(reason);
//---
  }
//+------------------------------------------------------------------+
//| Expert chart event function                                      |
//+------------------------------------------------------------------+
void OnChartEvent ( const int id,         // event ID  
                   const long & lparam,   // event parameter of the long type
                   const double & dparam, // event parameter of the double type
                   const string & sparam) // event parameter of the string type
  {
   ExtDialog.ChartEvent(id,lparam,dparam,sparam);
   ChartRedraw ();
  }

결론: 한 기간에서 다른 기간으로 전환하면 Expert Advisor가 충돌합니다. MT5에서는 그런 문제가 없습니다.

해결책이 있습니까? ... 또는 MT4의 패널을 잊어 버리는 것이 좋습니다. :)

 
Vjacheslav Lapaev :

솔루션은 이미 포럼 어딘가에 있었지만 답을 찾을 수 없습니다.

이에 대한 "해독제"를 찾은 사람:


표준 코드:

결론: 한 기간에서 다른 기간으로 전환하면 Expert Advisor가 충돌합니다. MT5에서는 그런 문제가 없습니다.

해결책이 있습니까? ... 또는 MT4의 패널을 잊어 버리는 것이 좋습니다. :)

누군가가 도움이 될 것입니다. 본질은 전문가였으며 지표로 저장되었으며 모든 것이 작동합니다. 패널 코드를 의미합니다.

 

안녕하세요!

제 생각에는 어떻게든 단순히 배열을 인쇄하는 것이 가능했지만 어떻게 했는지 기억이 나지 않고 찾을 수 없습니다. 어떻게?

 
Nauris Zukas :

안녕하세요!

제 생각에는 어떻게든 단순히 배열을 인쇄하는 것이 가능했지만 어떻게 했는지 기억이 나지 않고 찾을 수 없습니다. 어떻게?

배열 인쇄
 
Vladislav Andruschenko :
배열 인쇄

아, МQL5에 있었습니다. 정말 감사합니다!

 

나는 그것을 고치기 위해 무엇을해야할지 모르겠다 :

4030은 "그래프가 응답하지 않음"입니다.

어제 작동했습니다 :(유일한 차이점은 MT5가 병렬로 최적화 되고 있다는 것입니다(타이머도 사용). 그러나 무료 리소스가 있습니다 . 이 EA가 있는 차트는 일반적으로 "깨끗한" 상태이며 아무 것도 첨부되어 있지 않습니다.

 
Igor Zakharov :

유일한 차이점은 MT5가 병렬로 최적화되고 있지만(타이머도 사용) 무료 리소스가 있다는 것 입니다. 이 EA가 있는 차트는 일반적으로 "깨끗한" 상태이며 아무 것도 첨부되어 있지 않습니다.

나는 상위 5개에서 최적화를 중단했습니다. 작동했습니다. 연결이 없어야 하는 것처럼?

 
유니코드에 대한 질문입니다. 그는 왜 길을 잃었습니까?
 
secret :
유니코드에 대한 질문입니다. 그는 왜 길을 잃었습니까?

약간의 통찰력을 제공하겠습니다.

질문에 표현이 적고 삭제되지 않습니다. 간단합니다. 질문을 하는 것은 다른 사람에게 부정적인 감정을 쏟아 붓는 것이 아닙니다. 당신은 사회에 있습니다.
자신의 질문을 하는 장소를 존중하고 중재자의 반응이 아니라 답변을 기대하십시오.