초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 86

 
fyords :
인쇄를 통해 ObjectCreate의 결과를 인쇄하십시오. 아마도 오류가 있을 수 있습니다.

고맙습니다. 나는 확실히 확인하지만 새로운 문제를 수정 한 후. Expert Advisor는 한동안 작동해 왔으며 이제 차트에서 자동으로 제거되었습니다. 어레이가 가득 찼다고 다시 설치할 수 없습니다.

 void CreateLevels()
   {
       double High[];
      ArrayResize(High,0);
       ArraySetAsSeries (High, true );
       CopyHigh ( _Symbol , _Period , 0 ,Candle,High);

       for ( int j=Nachalo;j<=Candle;j++)
         {
           //--- поиск макс -----------------------------------
           if (iHighest( Symbol (), 0 , 10 ,MN* 2 ,j-MN)==j)
            {
             double H=High[j];
            }
 int iHighest( string symbol, int tf, int type, int count, int start)
  {
   if (start< 0 ) return (- 1 );
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   if (count<= 0 ) count= Bars (symbol,timeframe);
   if (type== 10 )                                 // MODE_HIGH
     {
       double High[];
       ArraySetAsSeries (High, true );
       CopyHigh (symbol,timeframe,start,count,High);
       return ( ArrayMaximum (High, 0 ,count)+start);
     }
   return ( 0 );
  }

양초=1000. 컴파일러는 아무데도 맹세하지 않으며 디버거에 아무 것도 나타나지 않습니다. 문제에 대한 해결책을 제안하십시오

 
다음 빌드는 신호가 사용되지 않는 경우 신호를 요청하는 경우가 거의 없습니다.

이것은 이미 수정되었습니다.
 
Renat :
다음 빌드는 신호가 사용되지 않는 경우 신호를 요청하는 경우가 거의 없습니다.

이것은 이미 수정되었습니다.
이 답변은 나를 위한 것이 아님을 이해합니다.
 
이제 차트에 Expert Advisor를 설치하려고 하면 기술적인 오류가 발생합니다. 오류 세부정보를 어디로 보내야 합니까?
 
WindSW :

ArrayResize=0인 이유는 무엇입니까?

그리고 ArrayInitialize 와 같기 전에 추가해야 합니다.

그리고

 double H

매번 루프에서 초기화됩니까?

함수 앞에 선언합니다.

Upd 및 괄호 재확인, } 누락

CreateLevels
 
Silent :

ArrayResize=0인 이유는 무엇입니까?

High[] 배열 제로화
 
WindSW :
High[] 배열 제로화
아니요, 크기를 0으로 설정했습니다.
 
Silent :
아니요, 크기를 0으로 설정했습니다.
그리고 정보는 0의 크기로 유지됩니까? 영점 조정이 올바르게 수행되는 방법은 무엇입니까?
 
WindSW :
그리고 정보는 0의 크기로 유지됩니까? 영점 조정이 올바르게 수행되는 방법은 무엇입니까?

크기를 0으로 설정한 다음 거기에 배열을 복사합니다.

그래서 시도

 void CreateLevels()
  {
   double High[];
   ArrayResize(High,Candle); // размер = Candle
   ArrayInitialize(High,NULL); // инициализация нулем
   ArraySetAsSeries(High,true);
   CopyHigh(_Symbol,_Period,0,Candle,High);

   double H; // вынес
   int j;    // вынес
   for(j=Nachalo;j<=Candle;j++)
     {
      //--- поиск макс -----------------------------------
      if(iHighest(Symbol(),0,10,MN*2,j-MN)==j)
        {
         H=High[j];
        }
     }
  } // скобки сразу парами ставьте, искать не прийдётся
Upd는 코드를 수정하고 int j를 제거했습니다.
 
WindSW :
그리고 정보는 0의 크기로 유지됩니까?

그리고 죽이면 0에서 원하는 배열 크기 로 ArrayResize를 두 번 호출할 수 있습니다.

더 빠를 수도 있습니다 ... x이지만 메모리 재분배와 함께 어떻게 보일지.

사유: