Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1411

 
Aleksei Stepanenko:

Es ist nicht sicher, ob Sie bars_quantity dort haben.

Code geändert, aber immer noch Array außerhalb des Bereichs an der gleichen Stelle

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, и возвращать ноль.
  }
 

Wenn kein Fehler auftritt, bedeutet das nicht, dass die gesamte Datenmenge vorhanden ist. Die bar_quantity ist nur Ihre Bestellung und was geben wird, ist eine andere Sache.

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

Wenn kein Fehler auftritt, bedeutet das nicht, dass die gesamte Datenmenge vorhanden ist. Die bar_quantity ist nur Ihre Bestellung und was geben wird, ist eine andere Sache.

Dankeschön
 

Einen guten Tag an Sie alle!

Es gibt einen einfachen Code in MQL4, der jeden Wert eines Arrays initialisiert und bei jeder Iteration den Wert jedes Elements des Arrays in der Print()-Funktion ausgibt. Am Ende dieser Schleife wird Print() 30 Mal in das Protokoll drucken.

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

FRAGE .

Welches Sprachkonstrukt in MQL4 oder welche Funktion in MQL4 im obigen Code Print() wird nur 1 Mal am Ende der Schleife drucken(), wobei alle Array-Elemente in einer Zeile gefüllt werden, d.h. es wird die folgende Form haben

Print("---LoY[0]--", 1.6104, "---LoY[1]--". , 1,6106,"---LoY[2]--", 1,6108,"---LoY[3]--", 1,6110,"---LoY[4]--", 1,6112,................"---LoY[30]--", 1.6164);

Ich wäre sehr dankbar, wenn Sie ein Beispiel für einen solchen Code schreiben und nicht nur in Worten erklären könnten.
Vielen Dank für Ihre Hilfe.

 
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:

Einen guten Tag an Sie alle!

Es gibt einen einfachen Code in MQL4, der jeden Wert eines Arrays initialisiert und bei jeder Iteration den Wert jedes Elements des Arrays in der Print()-Funktion ausgibt. Am Ende dieser Schleife wird Print() 30 Mal in das Protokoll drucken.

FRAGE .

Welches Sprachkonstrukt in MQL4 oder welche Funktion in MQL4 im obigen Code Print() wird nur 1 Mal am Ende der Schleife drucken(), wobei alle Array-Elemente in einer Zeile gefüllt werden, d.h. es wird die folgende Form haben

Print("---LoY[0]--", 1.6104, "---LoY[1]--". , 1,6106,"---LoY[2]--", 1,6108,"---LoY[3]--", 1,6110,"---LoY[4]--", 1,6112,................"---LoY[30]--", 1.6164);

Ich wäre Ihnen sehr dankbar, wenn Sie ein Beispiel für einen solchen Code schreiben und ihn nicht nur in Worten erklären könnten.
Vielen Dank für Ihre Hilfe.

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:

Wie viele Sekunden vor mir? ))))

 
Mehr Helfer heute
 
Alexey Viktorov:

Vielen Dank für Ihre Hilfe

 
Aleksei Stepanenko:

Ich danke Ihnen für Ihre Hilfe.