Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 968

 
Yevhenii Levchenko:
¿Las citas se guardan en la carpeta tester/historia?

No.

\historia-descarga-símbolo*.dat - archivo de citas.

\N - historia del servidor*.hst - citas.

\N - generado a partir de los archivos *.hst cada vez que se inicia la prueba o la optimización.

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Pregunta a los desarrolladores de MT4: Archivos de prueba

Sergey Basov, 2016.01.14 07:25

No soy un desarrollador de MT4, pero puedo responder por experiencia personal.

Borrarlos no afectará a nada. Simplemente se generarán de nuevo durante la próxima prueba u optimización.

Las citas se almacenan en archivos *.hst, a partir de los cuales el probador genera archivos *.fxt, y cada vez se generan de nuevo.


 
Sergey Basov:

No.

\history\downloads\*.dat - archivo de citas.

\N - historia del servidor*.hst - citas.

\N - generado a partir de archivos *.hst cada vez que se inicia una prueba u optimización.


Esta cosa pone un montón de tensión en la unidad en el arranque... ¿Por qué el probador no lo borra si lo genera de nuevo cada vez? ¿Hay alguna forma de configurarlo?

 
Nauris Zukas:

Hola, quería obtener la hora de apertura de la barra del mes actual, pero me da un error 4074 (ERR_NO_MEMORY_FOR_HISTORY). También es interesante que si empiezo a probar desde el 1 de junio, es correcto, pero a partir del 2 de junio empieza a dar el error. ¿Cómo resolver el problema de este mes?

¡Hola!

Me encontré con el mismo error 4074(ERR_NO_MEMORY_FOR_HISTORY) al probar con las cotizaciones de otro broker. Y no es la primera cita de terceros que uso. No he tenido ese error con otros. ¿Cuál es el motivo del error y cómo solucionarlo, tal vez alguien ya lo haya resuelto?

 

¿Por qué el código más sencillo en mt5 funciona de forma completamente diferente que en mt4? Por ejemplo, el siguiente código, que calcula el valor medio del buffer mt4 muwings:

for (int i=0; i<nLimit; i++){
         double value;
         for(int k=i; k<i+AveragePeriod; k++){
            value+=Buffer1[k];
         }
         AverageBuffer[i]=value/AveragePeriod;
      }

...no funciona en mt5. Para que funcione de forma más o menos similar (por el método de la intuición), lo necesitas así:

 for (int i=0; i<nLimit; i++){
         double value;
         for(int k=i; k<i+AveragePeriod; k++){
            value+=Buffer1[k];
         }
         value/=(AveragePeriod+1);
         AverageBuffer[i]=value;
      }

Y luego, los primeros 7 búferes muestran algunos valores prohibitivos. Todo lo demás parece funcionar bien. Mi mandíbula se tensó por tal nimiedad)

Por favor, aconséjeme cómo resolver esto correctamente.

 

Añadido Comentario entre los cálculos y todo el puto redibujado :D

 for (int i=0; i<nLimit; i++){
         double value;
         for(int k=i; k<i+AveragePeriod; k++){
            value+=Buffer1[k];
         }
         if(i==2)
           

  Comment(value); // вот это добавил

         value/=(AveragePeriod+1);          AverageBuffer[i]=value;                }
¿Cuál es el problema?
 
No puedo averiguar cómo escribir tal condición con iFractal? Si:
Primer Fractal_arriba< Segundo Fractal_arriba entonces.....
Y lo mismo para el fractal de abajo
 
Vladimir Baskakov:
No puedo averiguar cómo escribir tal condición con iFractal? Si:
Primer Fractal_arriba< Segundo Fractal_arriba entonces.....
Y lo mismo con el fractal de abajo

Fin de semana. Haciendo el tonto...

 
Vladimir Baskakov:
No puedo averiguar cómo escribir tal condición con iFractal? Si:
Primer Fractal_arriba< Segundo Fractal_arriba entonces.....
Y lo mismo con el fractal de abajo

fuera de la lista, así es como se buscan los fractales:

//_______________________________________________________________________
int GetLastFractals(int bar,int mode) // bar - с какого бара начинать поиск, mode = MODE_UPPER или MODE_LOWER , результат № бара где найден фрактал
  {
   int i=bar; 
   while(i<Bars && iFractals(NULL,0,mode,i)<_Point) i++;
   return(i);
  }
//_______________________________________________________________________

Es necesario llamarle 2 veces para encontrar el primer fractal y el posterior Up, más o menos así:

int barfrup_1 = GetLastFractals(1,MODE_UPPER);
int barfrup_2 = GetLastFractals(barfrup_1+1,MODE_UPPER);
 
Yevhenii Levchenko:

Añadido Comentario entre los cálculos y todo el puto redibujado :D

¿Cuál es el truco?

ArraySetAsSeries(true) para los buffers de los indicadores.

 
Igor Makanu:

de los ready-made, así es como se buscan los fractales:

Tienes que llamarte 2 veces para encontrar el primer fractal y el siguiente, así:

Gracias, funciona, sólo se cumple una condición:

        if(barfrup_1<barfrup_2 && barfrdown_1<barfrdown_2)

Y necesito

        if(barfrup_1<barfrup_2 && barfrdown_1>barfrdown_2)

Y no puedo abrir posiciones con él por alguna razón.