Array fuera de rango en Necesidad de ayuda - página 3

 

OK

durante este periodo

 
Dark Kchlyzov:

¿No lo entiendes?

durante una semana o un mes, ¿el mínimo más cercano de qué día?
 
Lo entiendo, durante todo el período
 
Low_D1_Level   = iLow (_Symbol,PERIOD_D1,1);   // Возвращает значение минимальной цены бара  D1

El mínimo más cercano en el historial es menor que Nivel_Bajo_1 , que será .

Ejecute el código para ver cómo funciona.

 
Dark Kchlyzov:

No tengo errores para todo el período

Adjunto el registro

Archivos adjuntos:
20201209.log  3729 kb
 
MakarFX:

No tengo errores para todo el período

Adjunto el registro.

Parece que no hay ningún error, pero está en el registro

Tiene en su registro 19:31:53.126 2016.12.15 00:00:00 Array EURUSD,H1: i = 456 Bar_data_D1 [i][2] = 1.04789

como tengo un precio Min_D:104789 más que low_D1 1.03660 , por convención no puede ser así.

si reemplazo el bucle for, habrá un error. y será correcto.

en realidad la expresión2 sólo está enmascarando un error

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


 
Dark Kchlyzov:


Hay una pregunta. ¿Por qué se inicia el bucle con el primer elemento y no con el cero?

 
Dark Kchlyzov:

Si no le importa dar un ejemplo, ¿cómo se escribe correctamente?

Tengo algo de experiencia en el comercio, pero sólo estoy empezando a aprender MQL4.

Si utiliza MqlRates, entonces declare un array:

MqlRates Bar_data_D1[];

Es decir, se obtiene una matriz unidimensional en lugar de una bidimensional. MqlRates es una estructura estándar (descrita en MQL4 Reference en "Basics of the Language" - "Data Types" - "Structures, Classes, Interfaces"). Tiene todos los campos que necesita en este caso. Puedes dirigirte a ellos así:

Bar_data_D1[i].high; Максимум свечи
Bar_data_D1[i].low; Минимум свечи

i es el índice de la matriz.

Del mismo modo, puede crear su propia estructura para registrar los parámetros de las velas. Será más pequeño que Mqlrates por dos campos (spread y real_volume), que no necesitas. La estructura tendrá el siguiente aspecto:

struct BarData
{ 
   datetime time;         // время начала периода 
   double   open;         // цена открытия 
   double   high;         // наивысшая цена за период 
   double   low;          // наименьшая цена за период 
   double   close;        // цена закрытия 
   long     tick_volume;  // тиковый объем 
};

La declaración de una matriz de estas estructuras tiene el siguiente aspecto:

BarData Bar_data_D1[];

El acceso a los miembros de la estructura es similar al acceso a los miembros de la estructura MqlRates.

Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Структура исторических данных - Структуры данных - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Ihor Herasko:

¡Exactamente!

 
Ihor Herasko:

Si a través de MqlRates, declaras el array así:

Es decir, se obtiene una matriz unidimensional en lugar de una bidimensional. MqlRates es una estructura estándar (descrita en MQL4 Reference en "Language Fundamentals" - "Data Types" - "Structures, Classes, Interfaces"). Tiene todos los campos que necesita en este caso. Puedes dirigirte a ellos así:

i es el índice de la matriz.

Del mismo modo, puede crear su propia estructura para registrar los parámetros de las velas. Será más pequeño que Mqlrates por dos campos (spread y real_volume), que no necesitas. La estructura tendrá el siguiente aspecto:

La declaración de una matriz de estas estructuras tiene el siguiente aspecto:

El acceso a los miembros de la estructura es similar al acceso a los miembros de la estructura MqlRates.

Bien, lo probaré mañana.

Gracias por su ayuda. Te avisaré cuando lo resuelva.