Errores, fallos, preguntas - página 1174

 

Ayer cambié los ordenadores del trabajo de Windows XP/32 a Win7/64. Antes de eso operaba normalmente en MT4 en el trabajo, actualizaba los códigos desde el almacén y volvía al almacén. Ahora puedo usar mi mt4 en 7, mi cuenta de proxy es nueva, el login y la contraseña de la comunidad también son nuevos. El problema es que no puedo sincronizar los códigos con el MetaEditor 4. En mi perfil tengo marcada la opción "Conectar almacenamiento".

Hoy cambié la contraseña en la comunidad, instalé la segunda MT4 en una carpeta diferente, añadí el proxy, el nuevo nombre de usuario y la contraseña, el comercio va, veo todos los servicios MQ, pero no hay sincronización con el almacenamiento, no se puede conectar. Por favor, indíqueme dónde puede estar el problema.


 
paladin800:

Ayer cambié los ordenadores del trabajo de Windows XP/32 a Win7/64. Antes de eso operaba normalmente en MT4 en el trabajo, actualizaba los códigos desde el almacén y volvía al almacén. Ahora puedo usar mi mt4 en 7, mi cuenta de proxy es nueva, el login y la contraseña de la comunidad también son nuevos. El problema es que no puedo sincronizar los códigos con el MetaEditor 4. En mi perfil tengo marcada la opción "Conectar almacenamiento".

Hoy cambié la contraseña en la comunidad, instalé la segunda MT4 en una carpeta diferente, añadí el proxy, el nuevo nombre de usuario y la contraseña, el comercio va, veo todos los servicios MQ, pero no hay sincronización con el almacenamiento, no se puede conectar. Por favor, indíqueme dónde puede estar el problema.


Reinstalar mi terminal MT4 con derechos de administrador y ejecutar el terminal MT4 con derechos de administrador. MT4 en Vista/8/8.1 de esta manera ve tanto el almacenamiento como la carpeta con sus códigos y guarda todos los ajustes de los gráficos.
 
barabashkakvn:
Vuelva a instalar el terminal MT4 con derechos de administrador y ejecute el terminal MT4 con derechos de administrador. MT4 en Vista/8/8.1 con este método ve tanto el almacenamiento como la carpeta con sus códigos y guarda todos los ajustes de los gráficos.
Ya veo. Estoy trabajando en forex aquí en silencio en el trabajo, el administrador (con suerte) no sabe, por lo que con los derechos de administrador no va a durar. El problema no es crítico, voy a trabajar a través de la unidad flash. Gracias por la aclaración.
 
paladin800:
Ya veo. Estoy trabajando en forex aquí a escondidas, el administrador (con suerte) no lo sabe, por lo que no será capaz de mantener los derechos de administrador. El problema no es crítico, voy a trabajar a través de la unidad flash. Gracias por la aclaración.
También puede alquilar un VPS. Entonces puedes entrar a través de una conexión de escritorio remoto y sin problemas con los derechos de administrador.
 
error de comp ilación, build 969
template<typename T>
T plus( T a, T b )      { return ( a + b ); }

template<typename T>
int f( T& array[], int i )
{
        return ( plus( ::ArraySize( array ), i ) );
}

void OnStart()
{
        int a[ 2 ];
        int b = 1;
        Print( f( a, b ));
}

Surge porque en la nueva construcción

template<typename T>
void g( T& array[] ) { Print( typename( ::ArraySize( array ))); }
void OnStart()
{
        int a[ 2 ];
        g( a ); //Результат: uint
}
uint ArraySize(...);
в то время как раньше было
 int ArraySize(...);
¿a quién interrumpo?
int ArraySize(...);

¿Por qué cambiarlo si la ayuda era silenciosa y tales cambios podrían afectar a los cálculos? Y nadie se daría cuenta

 
A100:
Error de compilación, compilación 969Porque en la nueva compilación y que se molestó por ella?

¿Por qué cambiarlo si la ayuda es silenciosa y esos cambios podrían afectar a los cálculos? y nadie se daría cuenta

La ayuda siempre se retrasa un poco. por supuesto uint para el tamaño de la matriz es más razonable, porque el tamaño no puede ser negativo de todos modos // y ulong sería aún mejor :)
 
Otra cosa ilógica es que
template<typename T>
void g( T& array[] )
{
        Print( typename( ::ArrayResize( array, 3 )));
}

void OnStart()
{
        int a[ 2 ];
        g( a ); //Результат: int
}

Resulta que ArraySize ha sido cambiado, pero ArrayResize no - cambiado? ¿Cuál es la diferencia fundamental?

La diferencia es la siguiente

Возвращаемое значение

При успешном выполнении функция возвращает количество всех элементов, содержащихся в массиве после изменения размера;
в противном случае возвращает -1 и массив не меняет размеры.

Resulta que no se puede cambiar el tipo de retorno en ArrayResize (debido a '-1'). Bueno, si no puedes cambiar el tipo ArrayResize, ¿por qué deberías cambiar el tipo ArraySize?

 

Esta es la situación. Necesito ejecutar el Asesor Experto en EURNZD durante un par de años. Ya he borrado todo el historial del símbolo, lo he vuelto a cargar y el resultado es el mismo:

HistoryCenter: 5240 bars imported in 'EURNZD60'

Sólo estamos en septiembre de 2013. El terminal no permite rebobinar la carta. Cuando abro el centro de historia y hago clic en Descargar me aparece el mensaje "No hay datos nuevos para un símbolo EURNZD". No me importa si está mal escrito, pero ¿cómo puedo obtener las cotizaciones? ¿Realmente mi corredor no tiene historial? No sé, nunca he tenido problemas con otros símbolos.

P.D. Eso es todo, la pregunta está eliminada. Después de dejar el EURNZD y descargar el GBPAUD, de repente este milagro de la tecnología ha visto nuevos datos para el EURNZD. Que puede estar en una situación similar - a continuación, no se olvide de "bailar con la pandereta" y la necesidad de provocar persistentemente el terminal de diferentes maneras. ;-)

P.P.S. Ahora ha vuelto a ocurrir lo mismo con el AUDNZD. Tuve que pulsar estúpidamente Descargar un montón de veces seguidas hasta que de repente vio los datos.

 
MetaDriver:
La ayuda siempre se retrasa un poco. por supuesto uint para el tamaño de la matriz es más inteligente, ya que el tamaño no puede ser negativo de todos modos // y ulong sería aún mejor :)

template<typename T>
void g( T& str ) { Print( typename( ::StringLen( str ))); }
void OnStart()
{
        string str = "ABC";
        g( str ); //Результат: int
}

La longitud de las cadenas tampoco puede ser negativa, pero tiene más sentido utilizar int para denotar la longitud/tamaño - por una simple razón: las funciones (buscar, calcular, etc) generalmente devuelven la longitud/tamaño, o -1 en caso de fallo, lo que facilita mucho la gestión de errores.

 
A100:
Error de compilación, build 969
...
¿Por qué cambiarlo si la ayuda es silenciosa y esos cambios pueden afectar a los cálculos? Y nadie lo notará

En cuanto a ArraySize, el otro día planteé un problema similar en MQL4: https://www.mql5.com/ru/forum/152471. Según tengo entendido, todo debería ser igual en MQL5.

Tal vez, mi mensaje ha sido considerado allí :) Con respecto a este problema, el Service Desk ha respondido que la razón era el funcionamiento incorrecto del optimizador y que van a cambiar el tipo a uint en las nuevas construcciones. En realidad es uint ahora, sólo que no está documentado :) Y por cierto, lo cambiarán a uint para ArrayResize también. Les aconsejé que lo cambiaran a ulong, de lo contrario tendrán que volver a este problema en un futuro próximo debido a la falta de valores de 32 bits cuando se almacenan grandes volúmenes.

En cuanto al valor -1 en el error, no debería haber ningún problema con él porque: (int)-1 = (uint)-1 = 0xFFFFFFFF = UINT_MAX, es decir, la representación de los bits es la misma, aunque la operación de comparación dará un resultado diferente, es decir, si fuera así en el código

if (ArrayResize(...) < 0) ...

será incorrecto.

Razón de la queja: