Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1738
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
Tu código imprime 0, no -1...
Tal vez -1 se imprima en otro lugar, lo más probable es que todo el código esté en las impresoras...
Sí, tienes razón, cada paso está preimpreso para ver dónde se "estancó".
El ejemplo es incorrecto, lo siento, el código en sí es grande.
¡Pero, la solución de Konstantin resolvió el problema! Realmente cambié i-- y la comprobación de cero en todas partes, y ahora la lógica funciona como debería, en lugar de -1 sale 0 o 1. (antes de 0 o -1, siendo este último un error inmediato).
Tu código imprime 0, no -1...
Es posible que -1 se imprima en otro lugar, lo más probable es que todo el código esté en las impresoras...
Antes de intentar resolver el problema, hay que identificarlo... Asegúrate de que está ahí y localízalo antes de resolverlo...
Coge un bolígrafo y un papel. Y anota cómo cuenta el bucle. En este código.
comprobación de
nunca funcionará en este código. A no ser que se haya configurado inicialmente
un valor impar. Si es par, este código
a
vendrá con un valor impar.
Antes de intentar resolver un problema, hay que identificarlo... Asegúrate de que está ahí y localízalo, y luego resuélvelo...
Entiendo lo que quieres decir.
Coge un bolígrafo y un papel. Y anota cómo se cuenta el ciclo. En este código.
Por qué iba a coger papel y bolígrafo si la condición dice que se imprime =-1, pero en realidad (lo he comprobado) se imprime como 0, es decir, el ejemplo está mal puesto. Y es imposible dar una respuesta correcta a un ejemplo incorrecto...
Por qué iba a coger lápiz y papel si la condición dice que se imprime =-1, pero de hecho (lo he comprobado) se imprime como 0, por lo que el ejemplo es incorrecto. Y es imposible dar una respuesta correcta a un ejemplo incorrecto...
El cero se imprime a partir de esta línea
y no de la salida de comprobación y ruptura.
En general, es más correcto escribir
porque las matrices comienzan con un índice cero
El cero se imprime a partir de esta línea
no de la comprobación de la ruptura y la salida.
El 0 se imprime desde esta línea, para ese código que se dio...
Print(i);
La pregunta no era por qué no funciona el break, la pregunta era por qué la impresora imprimía -1... eso es todo. Y no importa si el inicio de la i es par o impar, nunca imprime -1...
Probando con Close[], pero el índice no da más de 5000.
¿Podríais decirme cómo calcular los ticks o las velas en un periodo de tiempo largo? (Un año, por ejemplo).
He probado con Close[], pero el índice no da más de 5000.
Las garrapatas o las velas marcan una diferencia tan grande que da miedo, como mínimo...
Hay tanta diferencia entre las garrapatas y las velas que da miedo decirlo...
Por ejemplo, un EA, si le especificas cualquier periodo, en el tester irá por ticks o por barras M1, todos lo tendrán en cuenta.
Pero si coges un EA que va al histórico largo en tiempo real y toma datos de ahí, no entiendo cómo organizarlo. El terminal no da más de 5000 velas.
UPD
Voy a tratar de usar esta cosa, el código está en la red
MqlRates rates[];
int copied=CopyRates(NULL,0,0,100,rates);
if(copied<=0)
Print("Ошибка копирования ценовых данных ",GetLastError());
else Print("Скопировано ",ArraySize(rates)," баров");
UPD
Strange. De repente, funciona. Incluso se comprueba la barra del millón. No hice nada, leí la documentación, bebí té. Acabo de ejecutarlo de nuevo y ha funcionado. Tuve el error durante todo el día, aunque había descargado el historial y cambiado la configuración ayer.
Así que tampoco hubo necesidad de comprobar el código adicional (arriba).
MT4 es algo temperamental. O tal vez forex chif tenga esa función. Tendré que poner la estándar en lugar de la del corredor.
Por ejemplo, un Asesor Experto, si se le especifica cualquier período, pasará por el probador por ticks o por barras M1, todos lo tendrán en cuenta.
Pero si se toma un Asesor Experto, que en el modo de tiempo real va al historial largo y toma datos de allí, no entiendo cómo organizarlo. El terminal no da más de 5000 velas.
UPD
Voy a tratar de usar esta cosa, el código está en la red
MqlRates rates[];
int copied=CopyRates(NULL,0,0,100,rates);
if(copied<=0)
Print("Ошибка копирования ценовых данных ",GetLastError());
else Print("Скопировано ",ArraySize(rates)," баров");
UPD
Strange. De repente, funciona. Incluso se comprueba la barra del millón. No hice nada, leí la documentación, bebí té. Acabo de ejecutarlo de nuevo y ha funcionado. Tuve el error durante todo el día, aunque había descargado el historial y cambiado la configuración ayer.
Así que tampoco hubo necesidad de comprobar el código adicional (arriba).
MT4 es algo temperamental. O tal vez forex chif tenga esa función. Tendré que poner la estándar, no la de corretaje.
La primera llamada a CopyRates() ha iniciado el bombeo de datos históricos (no lo ejecutes durante una semana y volverás a tener lo mismo, bueno, quizás no una semana, pero sí algún tiempo).
Sólo tiene que comprobar cuántos datos hay en el servidor y comparar la cantidad disponible con el Asesor Experto. Si es menos de lo que se requiere - deje el EA hasta el siguiente tick. En el siguiente tic, comprueba de nuevo. Si por alguna cantidad de intentos no pudimos obtener la cantidad requerida de historia - en este caso manejaremos este error como se requiere.