Preguntas de un "tonto" - página 38

 

Y así. ¡Está ocurriendo! Ni siquiera un año después. Me he decidido. He comprobado la documentación de MQL5. Empecé muy poco: minimicé el código de algún indicador en un intento de simplificar y entender su estructura y funcionamiento. Entonces me aturdí.

Primero, me puse a trabajar en Fractales: me pareció inesperadamente pequeño y muy sencillo. Entonces razoné lógicamente: no es razonable arrastrar este código de un programa a otro, debería simplemente llamar a este indicador, copiarlo y utilizar los valores del buffer ya calculados. Si no me equivoco de dirección, me llevaron al paso casi estándar y me llevaron a un ejemplo con iFractals ("¿Lo hice bien?" (c)). Reduje el código todo lo posible, eliminé todo lo innecesario y convencional, dejando sólo la esencia. ¿Y qué encontré? El código de la llamada al indicador no es más compacto que el código original del propio indicador en términos de tamaño y legibilidad.

Las preguntas.

1. ¿Qué significa iFractals?

2. ¿Qué me pasa?

Gracias.

P.D.: ¿O es sólo un caso especial en el que no hay ningún beneficio en la cantidad de segundo código?

 
x100intraday:

2. ¿Qué me pasa?

Este no es un foro para psiquiatras, sino para programadores de MQL. Por lo general, no es conveniente hurgar en las cucarachas de los demás.

Sea más específico en sus preguntas.
 

Es una cuestión de

de la vida y la muerte...

¿Cuál es la manera no criminal de obtener el valor de la barra abierta [15625] H1 del marco de tiempo

Lo he intentado por mucho que lo intente pero dice error crítico... Lo he probado todo, así que quién sabe... Sé que son 3 líneas de código... pero que... el derecho... el derecho... para que no arroje un error...

 
BaTTLeBLooM:

Es una cuestión de

de la vida y la muerte...

Qué manera no criminal de obtener el valor de la barra abierta [15625] del marco de tiempo H1

Me esforcé por conseguir un error crítico... He probado todo tipo de cosas, así que quién sabe... Sé que son 3 líneas de código... pero que... el derecho... el derecho... para que no arroje un error...


Por favor, dame tu código.

 
Renat:

Por favor, danos tu código.

aquí está

double MTime ( int mode )
{

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

ArraySetAsSeries ( iOpen_min, true );
ArraySetAsSeries ( iOpen_hour, true );
ArraySetAsSeries ( iOpen_4hour, true );
int tasas_abiertas_min, tasas_abiertas_horas, tasas_abiertas_4horas;
int err = 0;
hacer
{
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 Minuto2 = iOpen_min [ 0 ] - iOpen_min [ 2 ];
double Minuto12 = iOpen_min [ 0 ] - iOpen_min [ 12 ];
double Hora = iOpen_min [ 0 ] - iOpen_min [ 60 ]; // Hora
double Hora5 = iOpen_min [ 0 ] - iOpen_min [ 300 ]; // 5 Horas
double Day = iOpen_min [ 0 ] - iOpen_min [ 1500 ]; // Day
double Semana = iOpen_min [ 0 ] - iOpen_min [ 7500 ]; // Semana
double Month = iOpen_hour [ 0 ] - iOpen_hour [ 625 ]; // Mes
double Month5 = iOpen_hour [ 0 ] - iOpen_hour [ 3125 ]; // Medio año

double Month25 = iOpen_hour [ 0 ] - iOpen_hour [ 15625 ]; // 3 años

en la última línea del último operador, siempre hay un error crítico... El Asesor Experto puede incluso comenzar a operar en el Probador de Estrategias, y luego, después de un año y medio de funcionamiento, genera un error y se bloquea

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

el error crítico es sobrepasar los límites de la matriz.

de alguna manera podrías probar esto:

      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:

error crítico - superación de los límites de la matriz.

de alguna manera, podemos intentarlo de esta manera:

Esto no cambia la esencia del problema... Si no copia los datos más allá... El Asesor Experto no operará como antes, pero sin error...

El problema es por qué se produce esta situación en primer lugar, si la historia es enorme... y no puedes usarlo...

 
Renat:

Por favor, indique su código.

Bueno, como no hay respuesta, voy a introducir )))) manualmente, ya que sólo hay un valor
 
BaTTLeBLooM:
Bueno, como no hay respuesta, voy a introducir )))) manualmente, ya que sólo hay un valor.

No tienes ninguna comprobación en tu código. ¿Qué quieres entonces?

 
BaTTLeBLooM:

Esto no cambia el problema... si no copia los datos más allá... El Asesor Experto no operará como antes, pero sin error...

El problema es por qué se produce esta situación, si la historia es enorme... y no puedes usarlo...

Los datos se copian, pero no siempre a la primera... y tras un error crítico, el Asesor Experto deja de funcionar.

mientras( ... rates_open_hour <= 0 // sólo se copiará la cantidad de datos, disponibles en ese momento, y el array, respectivamente, puede ser inferior a 15625.


La situación se produce por falta de lectura de los manuales :)

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