Errores, fallos, preguntas - página 1313

 
Konstantin Karpov:
¿Cómo puedo determinar en tiempo de compilación el modo de bits del terminal? El identificador TERMINAL_X64 no encaja ya que está diseñado para funciones. Lo más probable es que haya macros que no se mencionen en la ayuda, pero de vez en cuando aparecen de una forma u otra :)
Por desgracia, no lo hacen. Hay una variable _IsX64 pero funciona en tiempo de ejecución.
 

¿Cómo puedo evitar usar dos dlls, uno para terminales de 32 bits y otro para terminales de 64 bits? No es kasher mantener dos instancias del programa...

Por cierto, ¿quién tiene experiencia, si compila el código en ME x64, funcionará en terminales de 32 bits sin errores o habrá algunas características ocultas de la ejecución del código?

 

Por ejemplo, existe la función funcTest(...) en la biblioteca para terminales de 32 bits library_x86.dll y para terminales de 64 bits library_x64.dll.

Si la importación es visible dentro de todo el archivo, ¿es correcto escribir tal construcción?

void CClass::Test(...) {
  код метода...

   if(TerminalInfoInteger(TERMINAL_X64)) {
      #import  library_x64.dll
         library_x64::funcTest(...);
      #import
   } else {
      #import  library_x86.dll
         library_x86::funcTest(...);
      #import
   }

   код метода...
}
¿o este truco no funcionará?
 
Konstantin Karpov:
¿O este truco no funciona?

Que yo sepa, no. Puedes importar ambas dlls y llamar a las funciones de una u otra dependiendo de la tasa de bits del terminal.

En general, dividir en dos versiones por tasa de bits no es una opción tan delirante.

 

Tomo un indicador (cualquiera del conjunto estándar), lo llamo en el Asesor Experto:

iCustom (NULL, 0, "Momentum", 0, 1);

Después de ejecutar el EA con la visualización en el probador - todo funciona, el indicador se dibuja.

Ahora cambio una línea en el indicador

ExtMomBuffer[i]=close[i]*100/close[i-InpMomPeriod];

a esta línea:

ExtMomBuffer[i]=100;

Y ahora el indicador no dibuja nada en absoluto - incluso una escala vertical no está marcada.

¿Dónde está el error? MetaTrader 4 build 765.

 
¿Necesita dos valores diferentes dentro de la ventana para que aparezca la escala? EL PEIM. No estoy seguro de que esto pueda considerarse un error.
 

Vale, llamémoslo comportamiento no convencional :)

Muchas gracias, pero tengo una pregunta más. Sí, funcionaba así:

ExtMomBuffer[i]=i%2;

Y así es como dejó de funcionar de nuevo:

ExtMomBuffer[0]=i%2;

Lo tenía funcionando en las versiones antiguas de MT, ¿qué pasa con las nuevas?

 

Así que en la segunda versión hay un valor.

En realidad, podría estar equivocado.

 

Bueno, puedes hacerlo así, pero sigue sin funcionar:

ExtMomBuffer[0]=cnt++;

El quid del problema es que al intentar escribir en la barra 0 del indicador en cada paso del EA - no hace nada.

 

Creo que he encontrado dónde cavar. Cambiado

ArraySetAsSeries(ExtMomBuffer,false);

a la verdad y algo se empieza a notar. Me voy a emborrachar.

Razón de la queja: