MetaTrader 4 Build 529 beta liberado con nuevo compilador - página 39

 
Fuerade rango indica inequívocamente un error en el código: salirse de la matriz. La cadena y la ubicación del error se indican allí, así que busque el error.
 

Aquí está el código.


datetime   prevtime0 = 0;
double prevVolume0 =0;
double prevClose0 =0;
void init()
{
   Print("_______Test init");
   prevtime0 = iTime(NULL,PERIOD_M1,0); 
   prevVolume0 = iVolume(NULL,PERIOD_M1,0);
   prevClose0 = iClose(NULL,PERIOD_M1,0);
}

void start()
{
  Print(" prevtime0!!!!! = ",prevtime0," iTime(NULL,PERIOD_M1,0) =",iTime(NULL,PERIOD_M1,0) );
  Print(" prevVolume0!!!!! = ",prevVolume0," iVolume(NULL,PERIOD_M1,0) =",iVolume(NULL,PERIOD_M1,0) );
  Print(" prevClose0!!!!! = ",prevClose0," iClose(NULL,PERIOD_M1,0) =",iClose(NULL,PERIOD_M1,0) );
  Print("");

  prevtime0 = iTime(NULL,PERIOD_M1,0); 
  prevVolume0 = iVolume(NULL,PERIOD_M1,0);
  prevClose0 = iClose(NULL,PERIOD_M1,0);

}

Este es el resultado de la ejecución en el terminal Versión 4.0 Build 536

¡¡¡¡¡2013.11.11 22:53:08 Test EURJPY,M1: prevClose0!!!!! ¡¡¡¡¡= 133.02 iClose(NULL,PERIOD_M1,0) =133.02
2013.11.11 22:53:08 Test EURJPY,M1: prevVolume0!!!!! ¡¡¡¡¡= 133.02 iVolume(NULL,PERIOD_M1,0) =133.02
2013.11.11 22:53:08 Test EURJPY,M1: prevtime0!!!!! ¡¡¡¡¡= 2013.11.11 22:38:00 iTime(NULL,PERIOD_M1,0) =2013.11.11 22:38:00
2013.11.11 22:52:25 Test EURJPY,M1:
2013.11.11 22:52:25 Test EURJPY,M1: prevClose0!!!!! ¡¡¡¡¡= 133.02 iClose(NULL,PERIOD_M1,0) =133.02
2013.11.11 22:52:25 Test EURJPY,M1: prevVolume0!!!!! ¡¡¡¡¡= 133.02 iVolume(NULL,PERIOD_M1,0) =133.02
2013.11.11 22:52:25 Test EURJPY,M1: prevtime0!!!!! =2013.11.11 22:38:00 iTime(NULL,PERIOD_M1,0) =2013.11.11 22:38:00

Como puede ver, ni iClose, ni iVolume, ni iTime cambian.

Supongo que sí, al igual que las demás funciones que empiezan por i.

Además, la función iVolume en este ejemplo muestra claramente que no es Volumen.

Al mismo tiempo en el probador, todo funciona y cambia excepto iVolume. Allí tampoco funciona.

Nota.

 
thecore:

Aquí está el código.


Este es el resultado de la ejecución en el terminal Versión 4.0 Build 536

¡¡¡¡¡2013.11.11 22:53:08 Prueba EURJPY,M1: prevClose0!!!!! =133,02 iClose(NULL,PERIOD_M1,0) =133,02
¡¡¡¡¡2013.11.11 22:53:08 Test EURJPY,M1: prevVolume0!!!!! =133,02 iVolumen(NULL,PERIOD_M1,0) =133,02
¡¡¡¡¡2013.11.11 22:53:08 Test EURJPY,M1: prevtime0!!!!! =2013.11.11 22:38:00 iTime(NULL,PERIOD_M1,0) =2013.11.11 22:38:00
2013.11.11 22:52:25 Prueba EURJPY,M1:
¡¡¡¡¡2013.11.11 22:52:25 Prueba EURJPY,M1: prevClose0!!!!! =133,02 iClose(NULL,PERIOD_M1,0) =133,02
¡¡¡¡¡2013.11.11 22:52:25 Test EURJPY,M1: prevVolume0!!!!! =133,02 iVolumen(NULL,PERIOD_M1,0) =133,02
¡¡¡¡¡2013.11.11 22:52:25 Test EURJPY,M1: prevtime0!!!!! =2013.11.11 22:38:00 iTime(NULL,PERIOD_M1,0) =2013.11.11 22:38:00

Como puede ver, ni iClose, ni iVolume, ni iTime cambian.

Supongo que otras funciones que empiezan por i tampoco cambian.

Además, la función iVolume en este ejemplo muestra claramente que no es Volumen.

Al mismo tiempo en el probador, todo funciona y cambia excepto iVolume. Allí tampoco funciona.

Nota.

Bueno, lo hice. ¿Qué pasa?
 
tara:
Bueno, lo hice. ¿Qué pasa?


Bien...

La función iTime(NULL,PERIOD_M1,0) da la hora incorrecta del terminal de la izquierda.

Terminal da 2013.11.11 22:53:08, iTime da 2013.11.11 22:38:00, y debería dar

2013.11.11 22:53:00

iVolume(NULL,PERIOD_M1,0) debería devolver algún número entero, por ejemplo 1, 2, 3, 100, no

como en este ejemplo 133,02

iClose debería dar 133,02 en el primer caso, y 133,03 en el segundo.

 

Todas estas funciones funcionan de forma un poco diferente, minuto a minuto. Su impresión funciona en ticks. El tiempo en MT se cuenta en segundos.

Y el segundo terminal, en general, a la izquierda :)

 
tara:

Todas estas funciones funcionan de forma un poco diferente, minuto a minuto. Su impresión funciona en ticks. El tiempo en MT se cuenta en segundos.

Y el segundo terminal, en general, a la izquierda :)

Mira, entiendo que no tengas a nadie con quien hablar por la noche.

Sé que el acta, es por eso que en la impresión del resultado y mostró ESPECIAL

dos resultados en minutos diferentes.

Y además, este mensaje no era para ti, sino para los desarrolladores.

 
thecore:

iVolume(NULL,PERIOD_M1,0) debería devolver un número entero, por ejemplo 1, 2, 3, 100, pero no

como en este ejemplo 133,02

Parece que iVolume devuelve efectivamente el último precio(precio de cierre) en lugar del volumen.

Pero me ha hecho bastante gracia la descripción de la ayuda (la primera es del archivo, y la segunda está sacada de la web)

1

datetime  iVolume(
   string           symbol,          // символ
   int              timeframe,       // период
   int              shift            // сдвиг
   );

2

double iVolume(string symbol, int timeframe, int shift)
 
thecore:


Bien...

La función iTime(NULL,PERIOD_M1,0) da la hora incorrecta del terminal de la izquierda.

El terminal muestra 2013.11.11 22:53:08, iTime muestra 2013.11.11 22:38:00 y debería mostrar

2013.11.11 22:53:00

iVolume(NULL,PERIOD_M1,0) debería devolver algún número entero, por ejemplo 1, 2, 3, 100, no

como en este ejemplo 133,02

iClose debería dar como resultado 133,02 en el primer caso, y 133,03 en el segundo.


Pruebe a utilizar RefreshRates(), OnTick tiene el mismo problema, la hora y los precios no se actualizan en el probador, pero al utilizar RefreshRates() todo está bien...
 
Dos problemas más con los indicadores, por favor consulte el Servicio de Atención al Cliente.
 
thecore:

Como puede ver, ni iClose, ni iVolume, ni iTime cambian.

Supongo que tampoco lo hacen las demás funciones que empiezan por i.

Además, la función iVolume en este ejemplo muestra claramente que no es Volumen.


Corregido. Gracias