Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 578
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
DataCandles es una estructura. El array donde escribimos las velas del historial es array[]. Así que tenemos que hacerlo como una serie de tiempo para que su indexación coincida con la indexación de las velas en el gráfico. Es decir, la celda cero del array[] corresponderá a las velas más cercanas a la fecha actual.
Es decir, 1. copiamos los candelabros en el array array[], 2. lo convertimos en una serie temporal, y luego leemos los valores de la misma en la estructura.
Se puede prescindir de array[] - simplemente escribir los datos directamente desde el gráfico en la estructura, pero sugerí esto por compatibilidad con Five - permite copiar directamente sólo en el indicador usando high[i], low[i] y otros datos, pero en el script o Expert Advisor, tendremos que copiar primero el intervalo de historia necesario en el array, lo cual hice.
Alerta (serie);
¿así?
Ambas alertas siguen devolviendo falso
Alerta (serie);
¿así?
Ambas alertas siguen devolviendo falso
Por lo tanto, se trata de un error que debe ser reportado a "Errores, Bugs, Preguntas".
Aquí hay un script de comprobación, muestra el tiempo de las velas copiadas en las celdas cero y última del array[]:
Por lo tanto, se trata de un error que debe ser reportado a "Errores, bugs, preguntas".
Aquí hay un script de comprobación, muestra el tiempo de las velas copiadas en las celdas cero y última del array[]:
Sale esto:
El array es una serie: falso
tiempo array[0]: 2016.05.12 21:00
matriz de tiempo[9]: 2016.05.12 12:00
Sale esto:
El array es una serie: falso
tiempo array[0]: 2016.05.12 21:00
matriz de tiempo[9]: 2016.05.12 12:00
Lo he comprobado - siempre es falso, pero el tiempo es correcto: si al inicio del script se selecciona Array array como serie temporal "Sí", entonces:
Si selecciona "No", entonces:
los tiempos de las velas escritas en el array están invertidos, lo que significa que ArraySetAsSeriess() funciona correctamente, pero ArrayIsSeries() no, siempre da como resultado false, lo que ya he escrito en el hilo de errores anterior.
Oh, esta programación. Cuanto más se adentre en el bosque....
Entiende que no necesitas saber la dirección de la matriz. El algoritmo busca repeticiones. Así que no le importa el orden en que se procesan las barras.
que necesitas. Porque entonces necesito averiguar qué velas formaron una coincidencia y tomar el precio Bajo de la más cercana al precio actual.
Para ello existe una vela de tiempo en la estructura, mediante la cual puedes encontrar la vela más cercana a cualquier hora que necesites.
Y no es necesario emitir los números de las velas, ya que no coinciden con los números reales de las barras. Porque llenamos el array, y los índices en el array pertenecen sólo al número de la vela en el array, no en el gráfico.
He comprobado lo que produce - siempre falso, pero el tiempo es correcto: si seleccionas Array array como serie temporal "Sí" al ejecutar el script, entonces:
Si selecciona "No", entonces:
Los tiempos de las velas escritas en el array están invertidos, lo que significa que ArraySetAsSeriess() funciona correctamente, pero ArrayIsSeries() no, siempre da como resultado false, lo que ya he escrito en el hilo de errores anterior.
He modificado ligeramente el código:
ArraySetAsSeries(array,true); //aquí sólo hay que poner true
y luego agregó números de velas para la autocomprobación:
Alert("El array es una serie: ",ArrayIsSeries(array),
"+IntegerToString(0,2,'0')+" tiempo array[0]: ",TimeToString(array[0].time,TIME_DATE|TIME_MINUTES),
"\N - Cambia "+IntegerToString(searchperiod-1,2,'0')+" tiempo array[",string(searchperiod-1),"]:",TimeToString(array[ArraySize(array)-1].time,TIME_DATE|TIME_MINUTES));
Da la siguiente salida:
El array es una serie: falso
Vela 00 tiempo array[0]: 2016.05.12 22:00
Vela 09 matriz de tiempo[9]: 2016.05.12 13:00
Para ello, hay una vela de tiempo en la estructura, por lo que puede encontrar la vela más cercana a cualquier hora que usted necesita.
He cambiado un poco el código:
ArraySetAsSeries(array,true); //aquí sólo hay que poner true
y luego agregó números de velas para la autocomprobación:
Alert("El array es una serie: ",ArrayIsSeries(array),
"+IntegerToString(0,2,'0')+" tiempo array[0]: ",TimeToString(array[0].time,TIME_DATE|TIME_MINUTES),
"\N - Cambia "+IntegerToString(searchperiod-1,2,'0')+" tiempo array[",string(searchperiod-1),"]:",TimeToString(array[ArraySize(array)-1].time,TIME_DATE|TIME_MINUTES));
Da la siguiente salida:
El array es una serie: falso
Vela 00 tiempo array[0]: 2016.05.12 22:00
Vela 09 matriz de tiempo[9]: 2016.05.12 13:00