[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 248

 
Roman.:
ERR_INVALID_TRADE_VOLUME 131 Volumen incorrecto - conozca esta forma y establezca el volumen "correcto" según su tipo de cuenta, por ejemplo en las cuentas micro el volumen suele ser de 0,01 lote, en las cuentas 'clásicas' de 0,1 lote... Introduzca un valor constante de 0,1 lotes en su función de apertura de órdenes y compruebe si el volumen...
El EA negocia un lote de % específico de ekvit, es decir, sólo puedo introducir el porcentaje como 10, 5, no hay ninguna opción para introducir el lote 0,1 o 0,01. Este problema sólo ha ocurrido con un corredor de 4 dígitos.
 
MeTrade:
MaxZ:
¿Has hecho la prueba entre semana? ¿El diferencial es flotante?
Optimizado toda la semana, probado esta noche y esta mañana. ¿Es eso un problema?
No has respondido a mi pregunta sobre la extensión.
 
¿Por qué aparece esta alerta? Me costó mucho esfuerzo descubrir que al comparar un dígito con una parte fraccionaria, necesito normalizarlo con NormalizeDouble(). Pero hoy he decidido probarlo por diversión y ¡la alerta aparece! ¿Qué son estos fallos? ¿O no hay fallos?
      if (1.3320 == 1.3320)
         Alert("Ku!");
 
ScioMe:
¿Por qué aparece esta alerta? Me costó mucho esfuerzo descubrir que al comparar un dígito con una parte fraccionaria, necesito normalizarlo con NormalizeDouble(). Pero hoy he decidido probarlo por diversión y ¡la alerta aparece! ¿Qué tipo de fallos? ¿O no hay fallos?
¿Qué fallos hay? Estas constantes son iguales. La condición se cumple.
 
MeTrade:
El EA opera con un determinado % del ekvit, es decir, sólo puedo introducir un porcentaje, por ejemplo 10, 5, no hay opción de introducir un lote de 0,1 o 0,01. Este problema sólo ha ocurrido con un corredor de 4 dígitos.
este problema se produce sólo en los corredores de 4 dígitos: "...sólo puedo introducir un porcentaje, por ejemplo, 10, 5" - por lo que su cálculo se realiza sin la normalización del volumen antes de abrir una orden, es decir, al final, su 10 o 5 por ciento resulta en 0,123 o 1,548 lotes, lo que provoca el error número 131, por favor, corrija la función para el cálculo de los lotes o pregunte a un telépata, ya que no hay suficientes datos de "entrada" (en bruto) sobre el tema ...
 
ScioMe:
¿Por qué aparece esta alerta? Anteriormente, me esforcé mucho en averiguar que al comparar un dígito con una parte fraccionaria, necesitaba normalizarlo utilizando la función NormalizeDouble(). Pero hoy he decidido probarlo por diversión y ¡la alerta aparece! ¿Qué tipo de fallos? ¿O no hay fallos?

1). El compilador puede simplemente ignorar esta condición (sentencia if).

2). Sin embargo, si el compilador no ignora esta condición, escribirá cada número en la memoria y asignará 8 bits para cada número. Compara los números, no como hacemos nosotros con los ojos, sino poco a poco. Los números en la memoria son los mismos y la condición se mantendrá.

Estoy muy sorprendido por su pregunta, porque no puedo entender cómo estos dos números (dos registros) no se perciben como iguales?

 
MaxZ:
No has respondido a mi pregunta sobre la extensión.
Lo he probado en un terminal de 4 dígitos con una extensión fija, todo está bien. Pero apareció otro problema, el error número 131, que no se produjo en el terminal de 5 dígitos.
 
MeTrade:
A raíz de tu comentario, lo he probado en un terminal de 4 dígitos con una extensión fija, todo está bien. Pero apareció otro problema, el error número 131, que no se produjo en el terminal de 5 dígitos.
¡Tengo que sentarme aquí y adivinar! :))) Estoy seguro de que también resolverá los demás problemas.
 

Por favor, aconséjeme cómo hacer esto correctamente. Mi función de cálculo de MM es compleja y en una parte de ella, al calcular el lote, la función devuelve 0,18 como lote máximo posible y se puede abrir 0,1, 0,2 o 0,3, es decir, el paso es 0,1.

Si normalizo el lote se redondea hacia abajo a 0,2 y ya no se permite el pedido, aunque el lote máximo permitido es 0,18. ¿Cuál es la forma correcta de redondearlo hacia abajo o de normalizarlo correctamente?

 
MaxZ:

""""...
Я очень удивлён был Вашему вопросу, так как не могу понять как можно два эти числа (две записи) воспринять не равными??""""


Llevo un tiempo luchando con el problema. Casi me rompe el cerebro. El problema era el siguiente: necesitaba realizar una condición de igualdad en if (). Estábamos comparando números reales. No pude recibir una alerta, me preguntaba qué demonios estaba pasando. ¡Estos números, se puede ver a simple vista que son iguales! Pero el terminal no lo imprimiría. Al final sospeché que algo iba mal, pero no pude averiguar qué pasaba. Necesito ayuda de la comunidad mql4. Hice una pregunta aquí, y gracias, los expertos (parece que Roman y otras buenas personas) han respondido que al comparar números reales, necesito normalizarlos con la función NormalizeDouble(). Ayudó. Pero hoy lo he probado y ¿qué pasa? Se comparan con seguridad sin normalización. De todos modos, he llegado a la conclusión de que a veces se comparan y a veces no, así que mejor normalizarlos para estar seguros.
Razón de la queja: