Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1109

 
Vitaly Muzichenko:

Entonces no obtendré un número fraccionario.

Probablemente necesites algo así:

typename(TralingStop)=="double" ? ...

 
Artyom Trishkin:

typename(TralingStop)=="double" ?

No exactamente, si introdujo "entrada" en los parámetros de entrada, por ejemplo 15 o 15,0, entonces muestra sólo 15 en el campo de entrada, es decir, un número entero. Si ha introducido 12,3 en los parámetros de entrada, visualice 12,3 en el campo de entrada

 
Vitaly Muzichenko:

No exactamente, si introdujo "entrada" en los parámetros de entrada, por ejemplo 15 o 15,0, entonces muestra sólo 15 en el campo de entrada, es decir, un número entero. Si ha introducido 12,3 en los parámetros de entrada, aparecerá 12,3 en el campo de entrada.

Entonces se trata de determinar el número de decimales de cualquier número. Hubo un tema como este en algún lugar - se discutió allí.

 
Artyom Trishkin:

Entonces se trata de determinar el número de decimales de cualquier número. Hubo un tema como este en algún lugar - se discutió allí.

Creo que había uno, pero no lo encontré, así que lo escribí aquí (

 
Vitaly Muzichenko:

No exactamente, si introdujo "entrada" en los parámetros de entrada, por ejemplo 15 o 15,0, entonces muestra sólo 15 en el campo de entrada, es decir, un número entero. Si ha introducido 12,3 en los parámetros de entrada, el campo de entrada debería mostrar 12,3.

Experimenta con un guión como éste:

#property script_show_inputs
input double inp1 = 15.0;
input double inp2 = 12.3;
//+------------------------------------------------------------------+
void OnStart()
  {
   int dig1 = GetDigitsInDouble(inp1);
   int dig2 = GetDigitsInDouble(inp2);
   printf("inp1 = %f --> %s",inp1,DoubleToString(inp1,dig1));
   printf("inp2 = %f --> %s",inp2,DoubleToString(inp2,dig2));
  }
//_______________________________________________________________________
int      GetDigitsInDouble(double doublevalue)
  {
   long l=long(doublevalue/0.0000001);int result=0,i=10000000; while(result<7 && l%i>0)
     {i/=10; result++;}return result;
  }

2019.08.06 22:40:44.668 tst1 (EURUSD,H1) inp1 = 15.000000 --> 15

2019.08.06 22:40:44.668 tst1 (EURUSD,H1) inp2 = 12.300000 --> 12.3


parece que el 7º decimal a veces se equivoca

 
Vitaly Muzichenko:

Parece que sí, pero no pude encontrarlo, así que escribí aquí (

Получаем количество десятичных знаков после запятой любых чисел (не только котировок) в обход Digits() на MQL4 и MQL5
Получаем количество десятичных знаков после запятой любых чисел (не только котировок) в обход Digits() на MQL4 и MQL5
  • 2018.11.03
  • www.mql5.com
Думаю не у одного меня была редкая ситуация когда нужно было получить количество десятичных знаков после запятой, а функция Digits() работает тольк...
 
Igor Makanu:

experimenta con un script como este:

2019.08.06 22:40:44.668 tst1 (EURUSD,H1) inp1 = 15.000000 --> 15

2019.08.06 22:40:44.668 tst1 (EURUSD,H1) inp2 = 12.300000 --> 12.3


Creo que el 7º decimal estará mal a veces

Artyom Trishkin:

Gracias a todos, ¡lo probaré!

 
¿Cómo puedo registrar información sobre una posición abierta (lote, tipo) para que pueda ser leída desde un EA en otro terminal MT5?
 
Chicos, podéis explicar esta cuestión, si hay optimización en los agentes remotos y EA escribe los datos en un archivo, entonces entiendo que no voy a recibir estos datos, porque sólo mis agentes locales están en la carpeta tester, y no hay remotos...
¿O estoy buscando en el lugar equivocado?
si es así, ¿hay alguna manera de implementar la posibilidad de obtener archivos de agentes remotos?
 
Vitaly Muzichenko:

Creo que había uno, pero no lo he encontrado, así que lo he publicado aquí (

Así es como se describe en la documentación. En fmod se pone el divisor 1 y se obtiene la parte fraccionaria del número o el 0. No importa cuántos decimales se introducen en el campo o en la variable de entrada.

Документация по MQL5: Математические функции / MathMod
Документация по MQL5: Математические функции / MathMod
  • www.mql5.com
Функция MathMod рассчитывает вещественный остаток f от val / y таким образом, что val = i * y + f , где i является целым числом, f имеет тот же знак, что и val, и абсолютное значение f меньше, чем абсолютное значение y.