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

 
Yevhenii Levchenko:

Was soll ich sagen: passiert das und liegt es auch an irgendwelchen Rissen in den Anführungszeichen oder schreibe ich etwas falsch?

Möchten Sie, dass ich Ihnen sage, dass der MT4-Tester nicht richtig funktioniert? - Sie werden nicht hören, dass Ihr Screenshot Fehler in Ticks oder Balken enthält - der Tester generiert alles von jedem möglichen niedrigen TF

die Entwickler haben Fragen wie die Ihre immer beantwortet - schreiben Sie den Code richtig!

Ich habe Ihnen ein Beispiel gezeigt, wie Sie Ihren Code schreiben können.... ich kann es nicht sehen, und es ist nicht interessant :))) - beschäftigt, lese Artikel, werde mich an meine Codes machen

 
Igor Makanu:

Möchten Sie, dass ich Ihnen sage, dass der MT4-Tester nicht richtig funktioniert? - Sie werden nicht hören, dass Ihr Screenshot Fehler in Ticks oder Balken enthält - der Tester generiert alles von jedem möglichen niedrigen TF

die Entwickler haben Fragen wie die Ihre immer beantwortet - schreiben Sie den Code richtig!

Ich habe Ihnen ein Beispiel gezeigt, wie Sie Ihren Code schreiben können.... ich kann es nicht sehen, und es ist nicht interessant :))) - beschäftigt, lese Artikel, werde mich an meine Codes machen

Gut! Dankeschön

 
Yevhenii Levchenko:

Gut! Dankeschön

Könnte sich als nützlich erweisen: https://www.mql5.com/ru/forum/165405#comment_5602248

Архивные котировки от Metaquotes
Архивные котировки от Metaquotes
  • 2017.01.02
  • www.mql5.com
Ситуация: В терминале MT4 по клавише F2 можно закачать архивные котировки. Они нужны всем, кто разрабатывает свою торговую систему...
 

Guten Tag, liebe Kolleginnen und Kollegen. Ich lerne gerade, einfache Dinge in mql4 zu schreiben, jetzt versuche ich, mit Arrays zu arbeiten. Ich kann den Fehler in diesem Stück Code nicht verstehen:

   double d1 = NormalizeDouble(Low[iLowest(NULL, 0, MODE_LOW, MaxLimit, 0)],4);
   double d2 = NormalizeDouble(High[iHighest(NULL, 0, MODE_HIGH, MaxLimit, 0)],4);
   double CrossBarsNum[][2];
   for (double d = d1; d <= d2; d += 0.0001)
     {
       double a = 0.0;
       for(int i = 0; i < MaxLimit; i++)
           if(d > Low[i] && d < High[i])
               a+=1;
               CrossBarsNum[(d-d1)/0.0001,0] = d;
               CrossBarsNum[(d-d1)/0.0001,1] = a;

Er stürzt in den letzten beiden Zeilen mit dem erwarteten ganzzahligen Ausdruck ab. Soweit ich verstanden habe, kann ein Index in einem Array mit einer Formel gesetzt werden. Es wird benötigt, um die Array-Strings zu durchsuchen und die Anführungszeichen sowie die Anzahl der Takte, die ein solches Anführungszeichen enthalten, nacheinander aufzuzeichnen. Die Formel ergibt einen ganzzahligen Wert (von 0 und höher in Schritten von eins), wo liegt also der Fehler?

 
Azat0t:

Guten Tag, liebe Kolleginnen und Kollegen. Ich lerne gerade, einfache Dinge in mql4 zu schreiben, jetzt versuche ich, mit Arrays zu arbeiten. Ich kann den Fehler in diesem Stück Code nicht verstehen:

Er stürzt in den letzten beiden Zeilen mit dem erwarteten ganzzahligen Ausdruck ab. Soweit ich verstanden habe, kann ein Index in einem Array mit einer Formel gesetzt werden. Es wird benötigt, um die Array-Strings zu durchsuchen und die Anführungszeichen sowie die Anzahl der Takte, die ein solches Anführungszeichen enthalten, nacheinander aufzuzeichnen. Die Formel gibt einen ganzzahligen Wert zurück (von 0 und höher in Schritten von eins), wo liegt also der Fehler?

Machen Sie den Array-Index zu einem int-Typ, nicht zu einem double-Typ. Der Array-Index sollte eine ganze Zahl sein.

 
Sergey Basov:

Könnte sich als nützlich erweisen: https://www.mql5.com/ru/forum/165405#comment_5602248

Ich danke Ihnen! Das habe ich so gut wie immer gemacht. Nach dem Laden drückte ich auf "Aktualisieren" - die Anführungszeichen waren anders. Ich hatte vergessen, dass ich ein Zeitlimit für die Arbeit des Roboters festgelegt hatte. :)
 
Azat0t:

Guten Tag, liebe Kolleginnen und Kollegen. Ich lerne gerade, einfache Dinge in mql4 zu schreiben, jetzt versuche ich, mit Arrays zu arbeiten. Ich kann den Fehler in diesem Stück Code nicht verstehen:

Er stürzt in den letzten beiden Zeilen mit dem erwarteten ganzzahligen Ausdruck ab. Soweit ich verstanden habe, kann ein Index in einem Array mit einer Formel gesetzt werden. Es wird benötigt, um die Array-Strings zu durchsuchen und die Anführungszeichen sowie die Anzahl der Takte, die ein solches Anführungszeichen enthalten, nacheinander aufzuzeichnen. Die Formel gibt einen ganzzahligen Wert zurück (von 0 und höher in Schritten von eins), wo liegt also der Fehler?

Verwenden Sie eine explizite Typkonvertierung

               CrossBarsNum[int((d-d1)/0.0001),0] = d;
               CrossBarsNum[int((d-d1)/0.0001),1] = a;
 
Danke, ich habe den Fehler behoben, aber immer noch kein Ergebnis: Das Feld füllt sich nicht. Womit kann das zusammenhängen?
   int handle;
   handle = FileOpen("FindLevels.txt", FILE_CSV|FILE_WRITE, '\t');
   double d1 = NormalizeDouble(Low[iLowest(NULL, 0, MODE_LOW, MaxLimit, 0)],4);
   double d2 = NormalizeDouble(High[iHighest(NULL, 0, MODE_HIGH, MaxLimit, 0)],4);
   double CrossBarsNum[][2];
   for (double d = d1; d <= d2; d += 0.0001)
     {
       double a = 0.0;
       for(int i = 0; i < MaxLimit; i++)
           if(d > Low[i] && d < High[i])
               a++;
               CrossBarsNum[int((d-d1)/0.0001),0] = a;
               CrossBarsNum[int((d-d1)/0.0001),1] = d;
     } 
   FileWrite(handle, CrossBarsNum[11,1], d, d1, d2, a, ArraySize(CrossBarsNum));
   //FileWriteArray(handle, CrossBarsNum, 0, WHOLE_ARRAY);
   FileClose(handle);
   return(0);
Die Variablen d, d1, d2 funktionieren genau
 
Azat0t:
Danke, ich habe den Fehler behoben, aber immer noch kein Ergebnis: das Array ist nicht gefüllt. Womit kann das zusammenhängen? Die Variablen d, d1, d2 funktionieren genau
Die Größe Ihres Arrays ist in der ersten Dimension immer Null. Ich habe nirgendwo ArrayResize() gesehen
 
Azat0t:
Danke, ich habe den Fehler behoben, aber immer noch kein Ergebnis: das Array ist nicht gefüllt. Woran kann das liegen? d, d1, d2 funktionieren genau

Vergessen Sie nicht, die

#property strict
Beheben Sie alle Fehler und vielleicht klappt ja alles. Lernen Sie, den Debugger zu benutzen. Bei schrittweiser Ausführung werden alle Probleme aufgedeckt.
Grund der Beschwerde: