Errores, fallos, preguntas - página 1233

 
Preguntó durante mucho tiempo en la 4 pero nunca obtuvo una respuesta más que la burla))

devuelveTimeGMT() cuandoStringToTime es incorrecto; por ejemplo, cuandoStringToTime("0") - cuando el argumento no es analizado.

Y devuelve la hora normal cuando se analiza el argumento, por ejemplo cuandoStringToTime(" 24.10.2014") - D'2014.10.24 00:00:00'

¿Es esto normal? ¿Por quéTimeGMT() específicamente? Esto es -2 horas de mi tiempo actual en MT4 y en mi ordenador.

 
La pregunta sobre el error 4806 fue planteada hace mucho tiempo " ¿Por qué la función CopyBuffer colocada en un indicador personalizado, conduce al error 4806?

mientras que la misma función con los mismos parámetros en el código del EA funciona bien? "

mi código funciona desde el depurador, pero no funciona en modo normal (o mejor dicho, funciona a veces y no he podido establecer un patrón sencillo de por qué funciona y por qué no)

¿por qué necesitamos indicadores como iXXX si no se pueden utilizar normalmente?

 
tyn:
La pregunta sobre el error 4806 "¿Por qué la función CopyBuffer colocada en un indicador personalizado provoca el error 4806?

mientras que la misma función con los mismos parámetros en el código del EA funciona bien? "

mi código funciona bajo el depurador, pero no funciona en el modo normal (en realidad, funciona a veces y no he podido establecer el patrón simple de por qué funciona y por qué no)

¿Para qué necesitamos indicadores de tipo iXXX si no se pueden utilizar correctamente?

Por la tarde. ¿Los datos del CopyBuffer se toman del mismo TF en el que se ejecuta su indicador?

¿Ha intentado utilizar la función BarsCalculated() para resolver el problema?

 
marketeer:
En MQL OOP, ¿cómo se comprueba si un puntero es miembro de una determinada clase - como instanceof en JavaScript o typeid en C++?
CObject *ob;
datetime t;

typename(ob); // CObject
typename(t);  // datetime
Документация по MQL5: Основы языка / Объектно-ориентированное программирование / Шаблоны функций
Документация по MQL5: Основы языка / Объектно-ориентированное программирование / Шаблоны функций
  • www.mql5.com
Основы языка / Объектно-ориентированное программирование / Шаблоны функций - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
¿Puedo establecer mi propio valor (que se muestra) para la etiqueta de precio en lugar del precio al que está fijado? Si es así, ¿cómo?
 
Tapochun:

Buenas tardes. ¿Los datos del CopyBuffer se toman del mismo TF donde se ejecuta su indicador?

¿Ha intentado utilizar la función BarsCalculated() para resolver el problema?

Gracias por la pregunta. Tomé los datos de iATR en D1 el indicador principal se ejecuta en marcos de tiempo más pequeños, BarsCalculated() también devuelve -1 y el mismo error. Como estoy suponiendo, hay una función pero no un indicador (en tiempo de ejecución). Si creo un indicador en otra ventana en la misma herramienta, todo funciona. En el modo de depuración también funciona. Pero mi pregunta ¿Es un bug o no entiendo algo?
 

Buenas tardes.

Problema con las llamadas a funciones desde la dll del sistema. La tarea consiste en escribir un simple servidor TCP en MQL5, que se ejecuta en un determinado puerto y sólo recibe mensajes.

Importado de ws2_32.dll funciones WSAStartup(), WSAClenup(), socket(), bind(), accept(), listen(), recv(). Todo funciona exactamente hasta que se intenta detener el servidor. Cuando intento detener el servidor y terminar el script correctamente, el terminal simplemente se cierra.

Desde entonces, la función recv() se utiliza como método científico.

En el archivo adjunto hay una línea (171):

  int bytesCnt = recv(clientSocket, rcvBuffer, RCVBUFFSIZE, 0);

si está configurado para que se vea así:

  int bytesCnt = 10; //recv(clientSocket, rcvBuffer, RCVBUFFSIZE, 0);

entonces el servidor se detiene sin ningún error. Estuve mirando ejemplos de uso de funciones de red en MSDN y lo hice todo por analogía.

¿Alguien tiene alguna idea de cómo resolver este problema?

Archivos adjuntos:
 
tyn:
Gracias por preguntar. Tomé datos de iATR en D1 el indicador principal funciona en marcos de tiempo más pequeños, BarsCalculated() también devuelve -1 y el mismo error. Como estoy suponiendo, hay una función pero no un indicador (en tiempo de ejecución). Si creo un indicador en otra ventana en la misma herramienta, todo funciona. En el modo de depuración también funciona. Pero mi pregunta ¿Es un bug o no entiendo algo?

Yo mismo he estado luchando con este problema recientemente. Lo resolví, no sé si de forma óptima, pero lo resolví. Sólo los datos fueron tomados de iFractals, pero no importa. ¿Por qué he preguntado por el TF? Según mis observaciones, ocurre lo siguiente. Por ejemplo, el indicador funciona en M15. Si los datos del indicador se solicitan de M1 a M15 - todo está bien, los datos están disponibles en el momento en que se solicitan (si no es la primera llamada). Si se solicitan datos de M30 (repito, el indicador funciona en TF M15), entonces en el momento de la solicitud no hay datos en M30 para una nueva vela (o bien necesitamos una solicitud preliminar, o los datos se retrasan por el tick). Lo he resuelto de la siguiente manera. Recuerdo el resultado de BarsCalculated() en la vela actual. En cuanto la próxima vez que BarsCalculated() devuelva el valor 1 más (ha aparecido una nueva vela), recordamos el nuevo valorde BarsCalculated() y copiamos los datos. Pero este momento (cuando los datos del indicador aparecen en la TF superior) no coincide con la formación de una nueva vela en la TF actual.

Sí,BarsCalculated() devuelve -1 cuando no hay datos, esto ocurre, por lo que sé, sólo durante la primera ejecución. Es decir, cuando se obtiene el mango del indicador y se solicitan inmediatamente los datos. También hay que esperar.

 

Inmediatamente después de la creación de la manija del indicador, los datos no pueden ser consultados ya que no están listos. El proceso de inicialización y recálculo es complejo y depende de muchos factores.

La estrategia correcta es crear un handle en oninit y trabajar con los datos cuando llegue el primer tick.

 
Renat:

Inmediatamente después de la creación de la manija del indicador, los datos no pueden ser consultados ya que no están listos. El proceso de inicialización y recálculo es complejo y depende de muchos factores.

La estrategia correcta es crear un handle en oninit y trabajar con los datos cuando llegue el primer tick.

Entonces esta pregunta. Si el indicador se ejecuta en M15. Se forma una nueva vela. Al solicitar datos para M15 y M30, ¿deben estar disponibles al mismo tiempo?
Razón de la queja: