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

 

Ich hab's, ich hab's geändert.

   uint n=0;

die Fehler sind verschwunden. Ich danke Ihnen.

 
Sergey Voytsekhovsky:

Ich hab's, ich hab's geändert.

die Fehler sind verschwunden. Ich danke Ihnen.

Es handelt sich nicht um Fehler, sondern um Warnungen.

Forum für Handel, automatisierte Handelssysteme und Strategietests

Alle Fragen von Neulingen zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes

Artyom Trishkin, 2019.05.20 15:16

Was sind die Typen der Variablen n und period_find? Das Wichtigste und nicht gezeigt...

Versuchen Sie es:

for(n=0; n<(int)period_find; n++)

Und ganz allgemein - warum deklarieren Sie eine Schleifenvariable auf OnTick()-Handler-Ebene?

Sie können es so machen:

for(int n=0; n<(int)period_find; n++)

Sie können die n-Deklaration aus OnTick() entfernen - wir brauchen sie dort nicht.


 
Artyom Trishkin:

Es handelt sich nicht um Fehler, sondern um Warnungen.


Gut, ich bringe das in Ordnung.

Wenn Sie nichts dagegen haben, geben Sie mir bitte einen Hinweis, wie ich die Werte der Preise, zu denen die Pfeile erstellt wurden, ermitteln kann. Vorausgesetzt, ich habe bereits ihre Indizes. ???

 

Jetzt wird auf eine andere Weise geflucht:

'n' - nicht deklarierter Bezeichner Test_iCustom.mq5 82 48

Wahrscheinlich, weil n außerhalb der Schleife als gefundener Index verwendet wird.
 
         for(int n=0; n<(int)period_find; n++)
            {
               if(Buf_Arrow_Buy[n]!=EMPTY_VALUE)break;
            }
         Last_Arrow_Buy_volume = Buf_Arrow_Buy[n];
         Last_Arrow_Buy_index  = n;
 
Sergey Voytsekhovsky:

Gut, ich bringe das in Ordnung.

Wenn Sie nichts dagegen haben, geben Sie mir bitte einen Hinweis, wie ich die Werte der Preise, zu denen die Pfeile erstellt wurden, ermitteln kann. Vorausgesetzt, ich habe bereits ihre Indizes. ???

Entweder iOpen(), oder CopyOpen(), oder CopyRates(), wenn mehrere Preise auf einmal abgerufen werden.

Meiner Meinung nach werden die Pfeile im Indikator an den Eröffnungskursen der Balken auf dem Chart platziert.

Документация по MQL5: Доступ к таймсериям и индикаторам / iOpen
Документация по MQL5: Доступ к таймсериям и индикаторам / iOpen
  • www.mql5.com
Значение цены открытия бара (указанного параметром shift) соответствующего графика или 0 в случае ошибки. Для получения дополнительной информации об ошибке необходимо вызвать функцию GetLastError(). Функция всегда возвращает актуальные данные, для этого она при каждом вызове делает запрос к таймсерии по указанным символу/периоду. Это означает...
 
Artyom Trishkin:

Entweder iOpen(), oder CopyOpen(), oder CopyRates(), wenn mehrere Preise auf einmal abgerufen werden.

Meiner Meinung nach setzt der Indikator Pfeile auf das Diagramm bei den Eröffnungskursen der Balken.

Ja, so steht es dort:

SetArrow(prefix+"ChartArrowUP_"+TimeToString(time[i]),InpColorBullishArrow,time[i],open[i],(char)241,ANCHOR_TOP,InpArrowSize);

Ich werdeiOpen() ausprobieren.

Und anstelle von n füge ich eine weitere Variable hinzu, oder es kann so sein:?

   int n=0;
   
   if (CopyBuffer(CrossAD, 1, 0, period_find, Buf_Arrow_Buy) != period_find)
      {  
         Print("НЕ удалось правильно скопировать данные из 1-го буфера индикатора iCrossAD, error code %d",GetLastError());
         return;
      }
         for(n=0; n<(int)period_find; n++)
            {
               if(Buf_Arrow_Buy[n]!=EMPTY_VALUE)break;
            }
         Last_Arrow_Buy_volume = Buf_Arrow_Buy[n];
         Last_Arrow_Buy_index  = n;
         Print("Last_Arrow_Buy_volume = ",Last_Arrow_Buy_volume,", Last_Arrow_Buy_index = ",Last_Arrow_Buy_index);
 
Sergey Voytsekhovsky:

Der Geltungsbereich einer Schleifenvariablen ist auf den Schleifenkörper beschränkt. Weisen Sie die erforderlichen Werte vor der Pause zu:

//+------------------------------------------------------------------+
for(int i=0; i<(int)period_find; i++)
  {
   if(Buf_Arrow_Buy[i]!=EMPTY_VALUE)
     {
      Last_Arrow_Buy_volume = Buf_Arrow_Buy[i];
      Last_Arrow_Buy_index  = i;
      break;
     }
  }
//+------------------------------------------------------------------+
 
Artyom Trishkin:

Der Geltungsbereich einer Schleifenvariablen ist auf den Schleifenkörper beschränkt. Weisen Sie die erforderlichen Werte vor der Pause zu:

Verstanden, es funktioniert in beide Richtungen, keine Warnungen.

Bitte sagen Sie mir, wie man es koscher zu tun, mit Berechnungen in der Schleife Körper, vor derPause; oder es ist besser, Berechnungen aus der Schleife zu nehmen?

 
Sergey Voytsekhovsky:

Verstanden, es funktioniert in beide Richtungen, keine Warnungen.

Bitte sagen Sie mir, was ist mehr koscher, mit Berechnungen im Körper der Schleife, vor derPause; oder es ist besser, Berechnungen aus der Schleife zu nehmen?

Welche Berechnungen?