MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1411

 
Aleksei Stepanenko :

Kontrol etmeniz gerekiyor, orada bar_quantity'nizin olduğu bir gerçek değil.

Kodu değiştirdim, dizi hala aynı yerde aralık dışında

 double GetExtremumZigZagPriceHigh( string symbol= "" , ENUM_TIMEFRAMES timeframe= 0 , int extremum_number= 0 ) //,int depth=12,int deviation=5,int backstep=3)
  {
   if (symbol== "" ) //Если symbol = "" , то..
      symbol= Symbol (); //Присвоить переменной symbol значение текущего символа на графике.

//Объявить необходимые переменные:
   double price[];                                                 //Цена экстремума выбранная из массива таймсерии.
//datetime time[];
   int     count;                                                   //Счетчик цикла.
int bars_quantity= 1000 ; //Количество баров на графике.
int extremum_count= 0 ;                                           //Счетчик экстремумов.

   ArraySetAsSeries (price, true );                   //Устанавить флаг, чтобы индексация массива производилась как в таймсериях.
  
   if ( CopyBuffer (handle, 1 , 0 ,bars_quantity,price)<= 0 ) return ( 0 );     //Скопировать в динамический массив price[] цены указанного количества баров.


   for (count= 1 ; count<bars_quantity; count++) //Запустить цикл, который будет бежать по каждому бару.
     {
       if (price[count]!= 0 ) //Если Цена Зигзага есть, то есть не равна нулю, то..
        {
         extremum_count++;         //Увеличить счетчик экстремумов на одну единицу.

         if (extremum_count>extremum_number) //Если счетчик экстремумов превысил значение указанного номера экстремума, то..
             return (price[count]);                 //Вернуть эту цену.
        }
     }
     
//Print("GetExtremumZigZagPrice(): Экстремум ЗигЗага ",extremum_number," не найден"); //А до тех пор, пока ЗигЗаг не показывает цену,
   return ( 0 );                                                                           //Печатать Print, и возвращать ноль.
  }
 

Hata yoksa, tüm veri miktarının mevcut olduğu anlamına gelmez. bars_quantity sadece sizin siparişiniz ve ne vereceği başka bir soru.

 int elements= CopyBuffer (handle, 1 , 0 ,bars_quantity,price);
for (count= 1 ; count<elements; count++) 
 
Aleksei Stepanenko :

Hata yoksa, tüm veri miktarının mevcut olduğu anlamına gelmez. bars_quantity sadece sizin siparişiniz ve ne vereceği başka bir soru.

teşekkürler
 

Hepinize iyi günler!

Her dizi değerini başlatan ve her yinelemede Print() işlevindeki her dizi öğesinin değerini yazdıran basit bir MQL4 kodu vardır. Bu döngünün sonunda Print() , günlüğe 30 kez yazdıracaktır.

 int P1;
double LoY[ 31 ];
void OnTick ()
{
if (P1== 0 )
{
for ( int r= 0 ; r< 31 ;r++)
{
LoY[r]= 1.6104 +(r*2)*0.0001;
Print ( "-------------------------------------LoY[r]--------------=" ,  LoY[r]);
P1= 1 ;
}
}
}

SORU

MQL4'te hangi dil yapısı veya yukarıdaki kodda MQL4'teki fonksiyon yardımı ile Print() fonksiyonu, içinde yer alacak tüm dizi elemanı değerleri doldurulmuş olarak döngü sonunda sadece 1 kez yazdırılacaktır. bir satır, yani aşağıdaki formu alacak

Print("---LoY[0]--", 1.6104, "---LoY[1]--" , 1.6106,   "---LoY[2]--"   , 1.6108,   "---LoY[3]--"   , 1.6110,   "---LoY[4]--"   , 1.6112, ................   "---Bel[30]--"   , 1.6164 );

Böyle bir kod örneği yazarsanız ve kendinizi kelimelerle açıklamakla sınırlamazsanız çok minnettar olurum.
Yardım için teşekkürler.

 
string str="";

for(int r=0; r<31;r++)
   {
   LoY[r]=1.6104+r*0.0001;
   str+="--LoY["+IntegerToString(r)+"]--, "+DoubleToString(LoY[r],4)+", ";
   }
Print(str);
 
ANDREY :

Hepinize iyi günler!

Her dizi değerini başlatan ve her yinelemede Print() işlevindeki her dizi öğesinin değerini yazdıran basit bir MQL4 kodu vardır. Bu döngünün sonunda Print() , günlüğe 30 kez yazdıracaktır.

SORU

MQL4'te hangi dil yapısı veya yukarıdaki kodda MQL4'teki fonksiyon yardımı ile Print() fonksiyonu, yer alacak tüm dizi elemanı değerleri doldurularak döngü sonunda sadece 1 kez yazdırılacaktır. bir satırda, yani aşağıdaki formu alacak

Print("---LoY[0]--", 1.6104, "---LoY[1]--" , 1.6106,   "---LoY[2]--"   , 1.6108,   "---LoY[3]--"   , 1.6110,   "---LoY[4]--"   , 1.6112, ................   "---Bel[30]--"   , 1.6164 );

Böyle bir kod örneği yazarsanız ve kendinizi kelimelerle açıklamakla sınırlamazsanız çok minnettar olurum.
Yardım için teşekkürler.

 int P1 = 0 ; // Несмотря ни на что не забывайте инициализировать переменные
string stroka = "" ;
double LoY[ 31 ];
void OnTick ()
{
if (P1== 0 )
{
for ( int r= 0 ; r< 31 ;r++)
{
LoY[r]= 1.6104 +r* 0.0001 ;
stroka += "---LoY[r] = " + DoubleToString (LoY[r], 4 );
//Print("-------------------------------------LoY[r]--------------=",  LoY[r]);
P1= 1 ;
}
Print (stroka);
}
}
 
Aleksei Stepanenko :

Kaç saniye önümde? ))))

 
Bugün soru soran daha çok yardımcı var
 
Alexey Viktorov :

yardım için teşekkürler

 
Aleksei Stepanenko :

Yardım için teşekkürler.