Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 883

 
Askr:
¿Cómo descarga MT5 el archivo de cotizaciones? En MT4 por ejemplo F2 y luego presionas refrescar, pero aquí?

No es necesario descargar nada en MetaTrader 5. Puede utilizar las cotizaciones del servidor de negociación al que está conectado. Si quieres puedes usarCopyRates, si quieres puedes usarCopyTicks.

 
Askr:
¿Cómo descarga MT5 el archivo de cotizaciones? En MT4, por ejemplo, F2 y luego se presiona la actualización, pero aquí?

No puedes hacerlo directamente. A menos que cree un símbolo personalizado para el que pueda importar el historial. El símbolo personalizado sólo puede utilizarse para trabajar con el historial. No te permitirá comerciar con él.

 
Ihor Herasko:

¿Y si el EA no estaba activo en ese momento? Después de todo, nos gustaría obtener los datos del historial de la cuenta. Pero esto, por desgracia, no puede hacerse de forma inequívoca. Sólo se puede hacer con muchas reservas.

Es extraño que los desarrolladores no hayan implementadoOrderCloseTime() en MT5. Al parecer, había una buena razón para ello).

 
lil_lil:

Es extraño por qué los desarrolladores no hicieronOrderCloseTime() en MT5. Al parecer, había razones de peso para ello).

Porque la orden tiene un significado diferente en términos de MT5 y Mql5. Para encontrar la hora de cierre de una posición, tenemos que seleccionar las órdenes y operaciones de esta posición, encontrar entre ellas una operación con el modificador DEAL_ENTRY_OUT y la hora de esta operación será igual al cierre de la posición.

 

Buenas tardes, por favor, aconsejen, no puedo hacer una construcción para la siguiente condición: el indicador se pone en marcha, aparecen los parámetros de precio adecuados en la vela, se dibuja la indicación gráfica, pero digamos, si la vela está lejos del cierre, el indicador puede detectar otra combinación de velas en este lugar. La pregunta es cómo escribir el código en el proceso de cada segundo seguimiento para que elimine el resultado anterior cuando la condición en esta vela deje de funcionar.

Aquí hay un ejemplo correcto de renderización, pero si ejecutara el probador aquí, me daría una lectura de velas incorrecta. ¿Cómo se arregla?

Y otra pregunta - cómo hacer una alerta basada en el siguiente concepto de diseño:

Tarea - dada: TF 1 hora.

La condición - para ejecutar la parte de búsqueda del indicador sólo, digamos, después de 55 minutos y hasta 60 minutos de la vela actual, y luego reiniciar el ciclo.

¿Cómo aplicar esta construcción?

 
clickaider:

Buenas tardes, por favor, aconsejen, no puedo hacer una construcción para la siguiente condición: el indicador se pone en marcha, aparecen parámetros de precios adecuados en la vela, se dibuja una indicación gráfica, pero digamos, si todavía está lejos antes de que la vela se cierre, el indicador puede detectar otra combinación de velas en este lugar. La pregunta es cómo escribir el código en el proceso de cada segundo seguimiento para que elimine el resultado anterior cuando la condición en esta vela deje de funcionar.

Aquí hay un ejemplo correcto de renderización, pero si ejecutara el probador aquí, me daría una lectura de velas incorrecta. ¿Cómo lo arreglo?

1. El probador ha funcionado y funciona correctamente, sin errores.

2. error en su comprensión del proceso de prueba: cuando se produce la primera ejecución del indicador o del historial de paginación (recuerde que el signo de esto es prev_calculado==0), se recorren todas las barras en un bucle. Por lo tanto, en este bucle se utilizan arrays-series de tiempo

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])

que, para cada miembro i-ésimo del bucle, tiene sólo UN valor de Apertura, Alta, Baja y Cierre.

Pero cuando se pasan todas las barras, el probador empieza a trabajar en modo tick en cada barra - por eso se puede ver cómo sube el High y baja el Low.

 
Vladimir Karputov:

1. el probador funcionó y funciona correctamente, no hay errores.

2) Hay un error en su comprensión del proceso de prueba: cuando se produce la primera ejecución del indicador o la paginación del historial (recuerde que el signo de esto es prev_calculado==0) se saltan todas las barras del bucle. Por lo tanto, en este bucle se utilizan arrays-series de tiempo

que, para cada miembro i-ésimo del bucle, tiene sólo UN valor de Apertura, Alta, Baja y Cierre.

Y cuando todas las barras son pasadas, el probador comienza a trabajar en cada barra en modo tic - por eso puedes ver como el Alto sube y el Bajo baja.

Sí, estoy de acuerdo en que cuando el probador se pone en marcha, el resultado es diferente debido a los valores de los precios de llenado, pero la pregunta es cómo insertar una condición cuando en una vela, por ejemplo, primero se forma un patrón, pero al final aparece otro pero no puede ser reemplazado con otra entrada del indicador porque la condición correspondiente no está prescrita. ¿Cómo especificarlo?

if(Cmp(shadow_upper_1,shadow_lower_0)<0 && body_size_0 < body_size_1 && shadow_lower_0 >= 0.7*shadow_upper_0 && 8*body_size_0 >= shadow_lower_0 && 7*body_size_0 <= shadow_upper_0 && close_0 >= Upper1_0 && close_0 <= body_Upper_Upper1_mediane75_0 && Upper1_1 >= Upper1_2)
         if(InpEnablePAT_DOJIUP_UPPER1) DrawPattern(index,PATTERN_TYPE_DOJIUP_UPPER1,high,low,time);

Aquí está el código que forma la indicación de la vela, pero ¿cómo hacer que sea redibujable?

 
clickaider:

Sí, estoy de acuerdo en que cuando se ejecuta el probador el resultado es diferente debido a los valores de los precios de llenado, pero la pregunta es cómo escribir una condición en la construcción, cuando en una vela, por ejemplo, primero se forma un patrón, pero al final aparece otro patrón, pero no puede ser reemplazado por otra entrada del indicador, porque la condición apropiada no está escrita. ¿Cómo especificarlo?

Aquí está el código que forma la indicación de la vela, pero ¿cómo hacer que sea redibujable?

Guarda el número de compás en el índice. Compruébalo antes de dibujar. Si hay un objeto en la barra, elimínalo. Borrar objeto.

 
clickaider:

Sí, estoy de acuerdo en que cuando se ejecuta el probador el resultado es diferente debido a los valores de los precios de llenado, pero la pregunta es cómo poner una condición en la construcción, cuando en una vela, por ejemplo, primero se forma un patrón, pero al final aparece otro patrón, pero no puede ser reemplazado por otra entrada del indicador, porque la condición adecuada no está prescrita. ¿Cómo especificarlo?

Aquí está el código que forma la indicación de la vela, pero ¿cómo hacer que sea redibujable?

Sólo para proporcionar tres estados:

  • Dibujar patrón 1
  • Dibujar patrón 2
  • no dibujar nada (por ejemplo, para DRAW_ARROW pasar"0" en el buffer del indicador, si se ha escrito

//--- установим пустое значение 
   PlotIndexSetDouble(индекс_построения_DRAW_ARROW,PLOT_EMPTY_VALUE,0);
 
Vladimir Karputov:

Simplemente proporciona tres estados:

  • dibujar patrón 1
  • dibujar el patrón 2
  • no dibujan nada (por ejemplo, para DRAW_ARROW se pasa"0" al buffer del indicador, si se ha escrito

Te he enviado el código fuente, ¿podrías ver dónde ponerlo?
Archivos adjuntos:
PatternsBB.ex5  81 kb
Razón de la queja: