Fragen von einem "Dummy" - Seite 38

 

Und so. Es ist soweit! Nicht einmal ein Jahr später. Ich habe mich entschieden! Ich habe die Dokumentation von MQL5 geprüft. Ich habe ganz klein angefangen: Ich habe den Code eines Indikators minimiert, um seine Struktur und Funktionsweise zu vereinfachen und zu verstehen. Dann wurde ich benommen.

Zuerst habe ich Fractals gegraben - es schien unerwartet klein und sehr einfach zu sein. Dann habe ich logisch gedacht: Es ist nicht sinnvoll, diesen Code von einem Programm zum anderen zu ziehen, ich sollte einfach diesen Indikator aufrufen, kopieren und die fertig berechneten Pufferwerte verwenden. Wenn ich mich nicht irre, wurde ich zu einem Beispiel mit iFractals geführt ("Habe ich es richtig gemacht?"). (c)). Ich habe den Code so weit wie möglich reduziert, alles Unnötige und konventionell Unnötige gestrichen und nur das Wesentliche übrig gelassen. Und was habe ich gefunden? Der Code des Indikatoraufrufs ist in Bezug auf Größe und Lesbarkeit nicht kompakter als der ursprüngliche Code des Indikators selbst.

Die Fragen.

1. Was ist die Bedeutung von iFractals?

2. Was ist los mit mir?

Danke!

P.S.: Oder handelt es sich nur um einen Sonderfall, bei dem die Menge des zweiten Codes keinen Vorteil bringt?

 
x100intraday:

2. Was ist los mit mir?

Dies ist kein Forum für Psychiater, sondern für MQL-Programmierer. Normalerweise will man nicht in den Kakerlaken anderer Leute herumstochern.

Seien Sie bei Ihren Fragen konkreter.
 

Es ist eine Frage der

von Leben und Tod...

Was ist die nicht-kriminelle Weg, um den Wert der offenen [15625] bar H1 von Zeitrahmen zu erhalten

Ich habe es versucht, egal wie sehr ich es versucht habe, aber es meldet einen kritischen Fehler... Ich habe alles versucht, also wer weiß... Ich weiß, es sind 3 Zeilen Code... aber welche... das Recht... das Recht... damit es keine Fehlermeldung gibt...

 
BaTTLeBLooM:

Es ist eine Frage der

von Leben und Tod...

Welche nicht-kriminelle Weise zu bekommen offen [15625] bar Wert der H1-Zeitrahmen

Ich habe versucht, es zu bekommen, aber es meldet einen kritischen Fehler... Ich habe alles Mögliche ausprobiert, also wer weiß... Ich weiß, es sind 3 Zeilen Code... aber welche... das Recht... das Recht... damit es keine Fehlermeldung gibt...


Bitte geben Sie mir Ihren Code.

 
Renat:

Bitte geben Sie uns Ihren Code.

hier ist

double MTime ( int mode )
{

double iOpen_min [], iOpen_hour [], iOpen_4hour [];

ArraySetAsSeries ( iOpen_min, true );
ArraySetAsSeries ( iOpen_hour, true );
ArraySetAsSeries ( iOpen_4hour, true );
int rates_open_min, rates_open_hour, rates_open_4hour;
int err = 0;
tun
{
rates_open_min = CopyOpen ( NULL, PERIOD_M1, 0, 7501, iOpen_min );
rates_open_hour = CopyOpen ( NULL, PERIOD_H1, 0, 20000, iOpen_hour );
rates_open_4hour = CopyOpen ( NULL, PERIOD_H4, 0, 10000, iOpen_4hour );
err ++;
}
while ( ( rates_open_min <= 0 || rates_open_hour <= 0 || rates_open_4hour <= 0) && err <= 10 );

double Minute2 = iOpen_min [ 0 ] - iOpen_min [ 2 ];
double Minute12 = iOpen_min [ 0 ] - iOpen_min [ 12 ];
double Hour = iOpen_min [ 0 ] - iOpen_min [ 60 ]; // Hour
double Hour5 = iOpen_min [ 0 ] - iOpen_min [ 300 ]; // 5 Hour
double Day = iOpen_min [ 0 ] - iOpen_min [ 1500 ]; // Day
double Week = iOpen_min [ 0 ] - iOpen_min [ 7500 ]; // Week
double Month = iOpen_hour [ 0 ] - iOpen_hour [ 625 ]; // Monat
double Month5 = iOpen_hour [ 0 ] - iOpen_hour [ 3125 ]; // halbes Jahr

double Month25 = iOpen_hour [ 0 ] - iOpen_hour [ 15625 ]; // 3 Jahre

in der letzten Zeile des letzten Operators gibt es immer einen kritischen Fehler... Es kann sogar vorkommen, dass der Expert Advisor im Strategietester zu handeln beginnt und dann, nach anderthalb Jahren, einen Fehler erzeugt und abstürzt

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков - Документация по MQL5
 
BaTTLeBLooM:

der kritische Fehler ist die Überschreitung der Grenzen des Arrays.

Sie könnten dies versuchen:

      do
         {    
            //if(err>0) Sleep(10);//желательно с паузой
            rates_open_min = CopyOpen ( NULL, PERIOD_M1, 0, 7501, iOpen_min );
            rates_open_hour = CopyOpen ( NULL, PERIOD_H1, 0, 20000, iOpen_hour );
            rates_open_4hour = CopyOpen ( NULL, PERIOD_H4, 0, 10000, iOpen_4hour );           
            err ++;
         }
      while ( ( rates_open_min < 7501 || rates_open_hour < 20000 || rates_open_4hour < 10000) && err < 10 );   

   if(rates_open_min<7501 || rates_open_hour<20000 || rates_open_4hour<10000) return(-1);//Данные не скопированы
   else
      {
      double Minute2 = iOpen_min [ 0 ] - iOpen_min [ 2 ];
      double Minute12 = iOpen_min [ 0 ] - iOpen_min [ 12 ];
      double Hour = iOpen_min [ 0 ] - iOpen_min [ 60 ];   // Час
      double Hour5 = iOpen_min [ 0 ] - iOpen_min [ 300 ];     // 5 Часов
      double Day = iOpen_min [ 0 ] - iOpen_min [ 1500 ];   // День
      double Week = iOpen_min [ 0 ] - iOpen_min [ 7500 ];  // Неделя
      double Month = iOpen_hour [ 0 ] - iOpen_hour [ 625 ];   // Месяц
      double Month5 = iOpen_hour [ 0 ] - iOpen_hour [ 3125 ];  // Полугодие
      double Month25 = iOpen_hour [ 0 ] - iOpen_hour [ 15625 ];  // 3 года
      }
 
Swan:

Kritischer Fehler - Überschreitung der Array-Grenzen.

Irgendwie können wir es auf diese Weise versuchen:

Das ändert aber nichts am Kern des Problems... Wenn er die Daten nicht weiter kopiert... Der Expert Advisor handelt nicht mehr wie zuvor, aber ohne Fehler...

Das Problem ist, warum diese Situation überhaupt auftritt, wenn die Geschichte riesig ist... und du kannst es nicht benutzen...

 
Renat:

Bitte geben Sie Ihren Code an.

Nun, da es keine Antwort gibt, gebe ich einfach )))) manuell ein, da es nur einen Wert gibt
 
BaTTLeBLooM:
Nun, da es keine Antwort gibt, gebe ich einfach )))) manuell ein, da es nur einen Wert gibt.

Sie haben keine Kontrollen in Ihrem Code. Was wollen Sie dann?

 
BaTTLeBLooM:

Das ändert aber nichts an dem Problem... wenn er die Daten nicht weiter kopiert... Der Expert Advisor handelt nicht mehr wie zuvor, aber ohne Fehler...

Das Problem ist, warum diese Situation überhaupt auftritt, wenn die Geschichte riesig ist... und du kannst es nicht benutzen...

Die Daten werden zwar kopiert, aber nicht immer beim ersten Versuch ... und nach einem kritischen Fehler funktioniert der Expert Advisor nicht mehr.

while( ... rates_open_hour <= 0 // Es wird nur die Menge an Daten kopiert, die im Moment verfügbar ist, so dass das Array weniger als 15625 sein kann.


Die Situation entsteht durch mangelndes Lesen der Handbücher :)

Документация по MQL5: Программы MQL5 / Ошибки выполнения
Документация по MQL5: Программы MQL5 / Ошибки выполнения
  • www.mql5.com
Программы MQL5 / Ошибки выполнения - Документация по MQL5