Array außerhalb der Reichweite in Need of help - Seite 14

 
Dark Kchlyzov:

Ich wollte einen MT4 von einem offiziellen Anbieter installieren und einen Testlauf durchführen.

Nachmittags. Ich hatte ein Problem beider Installation desMT4-Terminals. Ich habe genau 4 Version von der Website heruntergeladen, es beginnt zu installieren, aber nach Abschluss der Installation MT5 Terminal erscheint. Wie installiere ich MT4 genau?

Antwort: Das können Sie nicht. Der Support für die Vorgängerversion wird eingestellt. Bitte verwenden Sie MT5.

Du kannst es schaffen


 

Getestet über den gesamten verfügbaren Zeitraum

AUDUSD seit 2016.01.01

EURUSD seit 2011.01.01

GBPUSD seit 2011.01.01

verwendet und

 for(int i = 1;  ;i++)

и

 for(int i = 1; i<ArrayRange(Bar_data_D1,0) ;i++)
keine Fehlerprotokolle beigefügt
Dateien:
AUDUSD.log  305 kb
EURUSD.log  612 kb
GBPUSD.log  612 kb
 

Die Lösung

 for(int i = 1; i<ArrayRange(Bar_data_D1,0) ;i++)
   {
   if(Bar_data_D1 [i][2]!=Bar_data_D1 [i+1][2]&&Bar_data_D1 [i][2] < Low_D1_Level)
      {Min_D_Level = Bar_data_D1 [i][2];
      break;}
      
   if(Bar_data_D1 [i][2]==Bar_data_D1 [i+1][2])
      {Min_D_Level = Low_D1_Level;
      break;}
    } 
 

Ich habe einen Indikator erstellt, der anscheinend alles richtig zeichnet.


 
MakarFX:

Lösung

Zurück zur ersten Seite des Beitrags!

2020.12.14 14:23:44.222 Expert Test_Level AUDUSD,H1: entfernt

2020.12.14 14 14:23:44.234 Expert Test_Level AUDUSD,H1: erfolgreich geladen

2020.12.14 14:23:44.365 TestGenerator: aktuelle Spanne 20 verwendet

2020.12.14 14 14:23:45.263 2020.01.24 00:00:00 Test_Level test started

2020.12.14 14:24:29.044 2020.02.10 00:05:00 Test_Level AUDUSD,H1: array out of range in 'Test_Level.mq4' (39,40)

2020.12.14 14 14:24:29.044 2020.02.10 00:05:00 Testdurchlauf gestoppt aufgrund eines kritischen Fehlers im EA

2020.12.14 14:24:29.044 AUDUSD,H1: 245717 Tick-Ereignisse (265 Balken, 9638212 Balkenzustände) verarbeitet in 0:00:43.781 (Gesamtzeit 0:00:44.766)

Alles Unnötige entfernt, Funktion in den Hauptteil verschoben, Ihre Lösungen hinzugefügt, und wieder Array außerhalb des Bereichs in 'Test_Level.mq4' (39,40) -:)

alles ist in Ordnung

Und hier ist tatsächlich Array außerhalb des Bereichs in


//+------------------------------------------------------------------+
//|                                                   Test_Level.mq4 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "3.0"
#property strict
double    Bar_data_D1 [][6]; // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров D1
double    Low_D1_Level;      // Возвращает значение минимальной цены бара  D1
double    Min_D_Level ;      // ближайшей минимальный  D уровень
int       A_C_R;             // возвращает количество скопированных баров D1
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   DestroyObject();
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
 A_C_R = ArrayCopyRates(Bar_data_D1,_Symbol,PERIOD_D1); // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров
 Low_D1_Level   = iLow (_Symbol,PERIOD_D1,1);           // Возвращает значение минимальной цены бара  D1
 
 //--- Min_D_Leve V 1.2
 for(int i = 1; i<ArrayRange(Bar_data_D1,0) ;i++)
    {
     if(Bar_data_D1 [i][2] != Bar_data_D1 [i+1][2] && Bar_data_D1 [i][2] < Low_D1_Level)
       {
        Min_D_Level = Bar_data_D1 [i][2];break;
       }
      
     if(Bar_data_D1 [i][2] == Bar_data_D1 [i+1][2])
       {
        Min_D_Level = Low_D1_Level;break;
       }
    }
/* 
 //--- Min_D_Leve V 1.0 
 //for(int i = 1; i<ArrayRange(Bar_data_D1,0) ;i++) // так ошибки нет и линия не перерисовывается 
   for(int i = 1; ;i++)                             // а так выход за массив 
    {
     Print(" i = ",i," Bar_data_D1 [i][2] = ",Bar_data_D1 [i][2]);
     if(Bar_data_D1 [i][2]>=0)
       {
        if( Bar_data_D1 [i][2] < Low_D1_Level)
          {
           Min_D_Level = Bar_data_D1 [i][2];break;
          }
       }   
    } 
*/
 //+-------------------------Low_D1_Level----------------------------+ 
 if(ObjectFind("Low_D1")!=Low_D1_Level) 
   {
    ObjectDelete("Low_D1");
    if(ObjectFind("Low_D1")!=0)
      {
       ObjectCreate("Low_D1",OBJ_HLINE, 0, Time[0],Low_D1_Level);
       ObjectSet("Low_D1", OBJPROP_COLOR, clrMaroon);
       ObjectSet("Low_D1", OBJPROP_WIDTH, 1);
      }
   } 
   
 if(ObjectFind("Low_D1_label")!=Low_D1_Level)
   {
    ObjectDelete("Low_D1_label"); 
    if(ObjectFind("Low_D1_label") != 0)
      {
       ObjectCreate("Low_D1_label", OBJ_TEXT, 0, Time[13], Low_D1_Level);
       ObjectSetText("Low_D1_label", "Low_D1: " + DoubleToStr(Low_D1_Level,_Digits), 8,"Verdana", Brown);
      }
   } 
   
 //+-------------------------Min_D_Level----------------------------+ 
 if(ObjectFind("Min_D")!= Min_D_Level) 
   {
    ObjectDelete("Min_D");
    if(ObjectFind("Min_D")!=0)
      {
       ObjectCreate("Min_D",OBJ_HLINE, 0, Time[0],Min_D_Level);
       ObjectSet("Min_D", OBJPROP_COLOR, clrMaroon);
       ObjectSet("Min_D", OBJPROP_WIDTH, 1);
      }
   } 
   
 if(ObjectFind("Min_D_label")!=Min_D_Level)
   {
    ObjectDelete("Min_D_label"); 
    if(ObjectFind("Min_D_label") != 0)
      {
       ObjectCreate("Min_D_label", OBJ_TEXT, 0, Time[30], Min_D_Level);
       ObjectSetText("Min_D_label", "Min_D: " + DoubleToStr(Min_D_Level,_Digits), 8,"Verdana", Brown);
      }
   } 
   Comment(" A_C_R возвращает количество скопированных баров D1 = ",A_C_R); 
}
//+------------------------------------------------------------------+
//|        функция удаление всех объектов созданных советником
//+------------------------------------------------------------------+
void DestroyObject()
{
 int tot=ObjectsTotal();
 for( int i=tot; i>=0; i--)
    {
     
     if(ObjectName(i)=="Low_MN1"){ObjectDelete(0,"Low_MN1");Print("<< Объект Low_MN удалён >>");}
     if(ObjectName(i)=="Low_MN1_label"){ObjectDelete(0,"Low_MN1_label");Print("<< Объект Low_MN1_label удалён >>");}
     

     if(ObjectName(i)=="Min_D"){ObjectDelete(0,"Min_D");Print("<< Объект Min_D удалён >>");}
     if(ObjectName(i)=="Min_D_label"){ObjectDelete(0,"Min_D_label");Print("<< Объект Min_D_label удалён >>");}


   }
}

 
Dark Kchlyzov:

Zurück von der ersten Seite des Beitrags!


Alles Unnötige entfernt, die Funktion in den Hauptteil verschoben, Ihre Lösungen hinzugefügt und wieder array out of range in 'Test_Level.mq4' (39,40) -:)

Fehler mit dem Terminal

den Code aus dem obigen Beitrag kopiert und den Test durchgeführt

hier ist das Protokoll

Dateien:
AUDUSD.log  7368 kb
 
Ich werde jetzt einen anderen Broker, d.h. ein anderes Terminal ausprobieren
 
Alpari in 10 Jahren, keine Fehler
Dateien:
Alpari_AUDUSD.log  15491 kb
 
MakarFX:

Fehler mit dem Terminal

den Code aus dem obigen Beitrag kopiert und den Test durchgeführt

Hier ist das Protokoll.

Hier ist die Nachricht.

Und mit der Visualisierung laufen von 1.01.2020 AUDUSD

Ich denke, es macht keinen Unterschied.

 

Wer ist Ihr Makler?

Welches Terminal benutzen Sie?