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

 
Alexey Viktorov:
Artyom Trishkin:
Gracias, por favor, perdóneme, no he formulado mi pensamiento correctamente.
Quiero obtenerel precio de apertura del año, no especificando una fecha concreta, sino pasando un índice, como si hubiera una barra de 1 año en el terminal. El último mes tiene el índice 1, también hacer el último año el índice 1.¿Ayuda para implementar esto?
 
mila.com:
Gracias, por favor, discúlpeme, he formulado mal el pensamiento.
Quiero obtenerel precio de apertura del año, no especificando una fecha concreta, sino pasando un índice, como si hubiera una barra de 1 año en el terminal. El último mes tiene el índice 1, de la misma manera para hacer el índice del último año 1.¿Ayuda para implementar esto?

Muy sencillo.

double f(int numYear)
 {
   MqlDateTime newYear = {0}; // Обнулить обязательно.
   newYear.year = numYear;
   double priceOpenYear[1];
   CopyOpen(_Symbol, PERIOD_MN1, StructToTime(newYear), 1, priceOpenYear);
   return(priceOpenYear[0]);
}

Y no depende de la jornada laboral/no laboral en ningún caso. PERIOD_MN1 es siempre el primer día del mes, también PERIOD_W1 es siempre domingo.

 

¡Chicos!

Uno de los clientes se queja de que los EAs caen cuando el precio se mueve bruscamente. Esto ha ocurrido con diferentes empresas de corretaje.

No hay nada en su código que pueda provocar el borrado. Nunca me he enfrentado a este problema.

¿Cuál puede ser el problema?

 
Vladimir Tkach:

¡Chicos!

Uno de los clientes se queja de que los EAs caen cuando el precio se mueve bruscamente. Esto ha ocurrido con diferentes empresas de corretaje.

No hay nada en su código que pueda provocar el borrado. Nunca me he enfrentado a este problema.

¿Cuál puede ser el problema?


¿No ves nada en los registros? ¿Ni siquiera sobre la descarga?

 
Aleksey Vyazmikin:

¿No hay nada sencillo en los registros? ¿Ni siquiera sobre la descarga?


2017.08.08 23:31:29.035 Expert DEBUT 3.0 GBPUSD,M1: eliminado

 
Vladimir Tkach:

2017.08.08 23:31:29.035 Expert DEBUT 3.0 GBPUSD,M1: eliminado


Si el experto no utiliza patrones - se reabre en su gráfico, entonces no tengo ninguna hipótesis...

 
Aleksey Vyazmikin:

Si el experto no utiliza patrones - reabre en su propio gráfico, entonces no tengo ninguna hipótesis...

Vladimir Tkach:

2017.08.08 23:31:29.035 Expert DEBUT 3.0 GBPUSD,M1: eliminado

¿Hay suficiente memoria libre? ¿Experto no obstruye la RAM con nada?

 

Buenas noches.

Por favor, dígame por qué la funciónOrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES) no funciona.

Devuelve un error: la expresión no pudo ser evaluada. Billete - el valor se llena.

No puedo entender nada ((((

Gracias.

 
rabanik:

Buenas noches.

Por favor, dígame por qué la función OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES) no funciona.

Devuelve un error: la expresión no pudo ser evaluada. Billete - el valor se llena.

No puedo entender nada ((((

Gracias.

Al seleccionar una orden por ticket, no necesitamos especificar pool - MODE_TRADES es redundante aquí - este parámetro se ignora al seleccionar por ticket y la orden se selecciona de una de las dos listas - de la lista de posiciones cerradas o de la lista de posiciones de mercado - dependiendo de si la posición está cerrada o no todavía.

Después de la selección exitosa de una orden basada en el ticket, para entender de cuál de las dos listas se selecciona la orden, es necesario comprobar la hora de cierre de la posición - si es mayor que cero, entonces la orden ya ha sido cerrada y fue seleccionada de la lista de órdenes históricas, de lo contrario - la orden todavía está en el mercado.

Pero para entender cuál es tu error, necesitas adjuntar el código - dar más información, porque en esta línea, en principio, no hay ningún error (salvo que no compruebas el resultado de retorno de la función, utilizas un modificador que se ignora en este caso y no hay ";" después del corchete de cierre).

 
Alexey Viktorov: Muy sencillo.

Gracias, pero me devuelve cero. ¿Cuál podría ser la razón?

Comment("OpenYear : ",DoubleToString(f(1)));