Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 86

 
fyords :
ObjectCreate sonuçlarını print ile yazdırın, belki bir hata vardır.

Teşekkür ederim. Kesinlikle kontrol edeceğim, ancak yeni bir sorunu çözdükten sonra. Uzman Danışman bir süredir çalışıyor ve şimdi otomatik olarak tablodan kaldırıldı. Yeniden yüklemek mümkün değil, dizi dolu diyor.

 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 );
  }

Mum=1000. Derleyici hiçbir yerde yemin etmez, hata ayıklayıcıda hiçbir şey görünmez. Lütfen soruna bir çözüm önerin

 
Bir sonraki yapı, kullanılmadıkları takdirde çok nadiren sinyal isteyecektir.

Bu zaten düzeltildi.
 
Renat :
Bir sonraki yapı, kullanılmadıkları takdirde çok nadiren sinyal isteyecektir.

Bu zaten düzeltildi.
anladım bu cevap bana göre değil
 
Şimdi, bir çizelgeye Expert Advisor yüklemeye çalışırken teknik bir hata oluşuyor. Hata ayrıntılarını nereye göndermeliyim?
 
WindSW :

Neden ArrayResize=0?

Ve ondan önce ArrayInitialize gibi eklemek gerekiyor.

Ve

 double H

Her seferinde bir döngüde mi başlatılıyor?

Fonksiyondan önce bildirin.

Upd ve parantezler iki kez kontrol edilir, bir } eksik

CreateLevels
 
Silent :

Neden ArrayResize=0?

High[] dizisini sıfırlama
 
WindSW :
High[] dizisini sıfırlama
Hayır, boyutunu 0 olarak ayarladınız.
 
Silent :
Hayır, boyutunu 0 olarak ayarladınız.
Ve bilgi 0 boyutunda mı kalıyor? Sıfırlama nasıl doğru yapılır?
 
WindSW :
Ve bilgi 0 boyutunda mı kalıyor? Sıfırlama nasıl doğru yapılır?

Boyutu sıfıra ayarlayın ve ardından diziyi oraya kopyalayın.

O zaman dene

 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 kodu düzeltti, int j'yi çıkardı
 
WindSW :
Ve bilgi 0 boyutunda mı kalıyor?

Ve eğer öldürürseniz, muhtemelen ArrayResize'ı 0'dan sonra istediğiniz dizi boyutuyla iki kez arayabilirsiniz.

Hatta daha hızlı olabilir... xs olmasına rağmen, belleğin yeniden dağıtılmasıyla nasıl görünecek.