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

 
Igor Makanu:

este código funciona, hazlo por analogía:

Se han realizado cambios mínimos: se ha eliminado el análisis de OrderMagicNumber() y se han añadido tres registros.
El resultado, por desgracia, es el mismo: ver pr. - En la primera captura de pantalla, hay un comienzo (no está claro por qué no empieza por 0), y en la segunda, donde empieza por 124 a 99.

int NúmeroDePedidos()
{
int,res=0,k=TotalDePedidos(); string sy=Símbolo();

for(i=0; i<k; i++)
{
log("k = " + k +"; ");
log("i = " + i +"; ");
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderSymbol()==sy)) res++; //if((OrderMagicNumber()==magic_) && (OrderSymbol()==sy)) res++;
log("res = " + res +"; ");

}
}
return(res);
}

Archivos adjuntos:
test_1.png  6 kb
test_2.png  6 kb
 
Alexey Viktorov:
¿Realmente este código compila sin errores? No lo creo...
¿Qué te hace dudar? En cualquier caso, MQL4 no produce ningún error.
 
Algotrader18:

(no está claro por qué no empieza por 0), y en el segundo lugar donde viene de 124 a 99.

debido a que la terminal se "comió" una parte de Print(), la salida en MQL tiene la menor prioridad, agregue Slepp(123) antes de Print() y no habrá saltos

aunque según el registro sólo está imprimiendo el contador del bucle

 
Igor Makanu:

debido a que la parte de Print() que se "comió" el terminal, en la salida de MQL tiene la menor prioridad, agregue Slepp(123) antes de Print() y no habrá saltos

aunque según el registro sólo está imprimiendo el contador del bucle

Esto es muy interesante, ¿puede ser un poco más específico? ¿Cómo funciona este proceso de "comer"?

Tu respuesta me da la impresión de que "me lo comí", simplemente significa que no lo imprimí en el registro, porque había cosas más importantes, pero mi verdadera tarea era revisar todas las órdenes y eliminar algunas y me di cuenta de que el EA se saltaba algunas (no salía la información con la prioridad más baja). Simplifiqué la tarea para entender la razón y como resultado, sólo tenemos la salida en el registro, pero sigo viendo órdenes omitidas, es decir, el Asesor Experto salta sobre varias órdenes. La prioridad de orden más baja explica muy bien que la salida no comience desde 0, pero esto puede explicar la salida inconsistente cuando salta de 124 a 99, por ejemplo.

Si por "comer" se entiende otra cosa, me gustaría entender qué.
Archivos adjuntos:
test_2.png  6 kb
 
neverness:

¡Esto es impresionante!

¡Romano!

Yo, por ejemplo, soy un comerciante de éxito con 20 años de experiencia.

No entiendo por qué necesitas "la diferencia entre los cierres de los pares que has introducido, yuna media móvil de los mismos".

Además, ¿sabes cómo construir una media móvil de estas diferencias? - ¡Fantástico!

¿Puedes simplemente dibujar la media móvil de las cotizaciones? - ¿También no?

¿Cuál es el problema?

la diferencia de medias de cierre no es igual a la diferencia de medias de cierre, ay y ah

 
Algotrader18:
¿Cuáles son las dudas? De todos modos, no hay errores en MQL4.

1. Aprende a insertar código.

Algotrader18:

Hice cambios mínimos - eliminé el análisis de OrderMagicNumber() y añadí tres registros.
El resultado, desgraciadamente, es el mismo - ver arriba. - En la primera captura de pantalla el principio (no sé por qué no empieza con 0), y en la segunda - el lugar donde empieza con 124 a 99.

int NumberOfOrders()
  {
   int i,res=0,k=OrdersTotal(); string sy=Symbol();
  
   for(i=0; i<k; i++)
     {
      log("k = " + k +"; ");
      log("i = " + i +"; ");
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if((OrderSymbol()==sy)) res++;  //if((OrderMagicNumber()==magic_) && (OrderSymbol()==sy)) res++;
         log("res = " + res +"; ");
        
        }
     }
   return(res);
  }

2. ¿log es un logaritmo?

Nota

Puede utilizar log()en lugar de MathLog().

MathLog - Математические функции - Справочник MQL4
MathLog - Математические функции - Справочник MQL4
  • docs.mql4.com
MathLog - Математические функции - Справочник MQL4
 
Roman Sharanov:

También encontré un grave inconveniente, hay demasiadas llamadas a CopyClose()

¿Pueden decirme cómo copiar las cotizaciones de un array de pares de divisas en un bucle?

Eso parecería ser un array doble, pero MQL no lo soporta, como %.

¿Qué quiere decir con "matriz doble"?

 
Alexey Viktorov:

¿Qué quiere decir con "matriz doble"?

Bueno, bidimensional.

 
Roman Sharanov:

Bien bidimensional.

¿Dónde está escrito que CopyClose copia datos en un array 2D? ¿Por qué se mencionó la matriz 2D en primer lugar?

 
Alexey Viktorov:

¿Dónde está escrito que CopyClose copia los datos a un array 2D? ¿Por qué se menciona la matriz bidimensional?

Porque necesito almacenar matrices de comillas en un array

Para copiarlo una vez en un bucle y luego realizar los cálculos utilizando ArrayCopy, pero no CloseCopy

Razón de la queja: