Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1109

 
Vitaly Muzichenko:

Então não vou obter um número fracionário.

É provável que precise de algo do género:

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

 
Artyom Trishkin:

typename(TralingStop)=="double" ?

Não exactamente, se introduziu "input" nos parâmetros de entrada, por exemplo 15 ou 15.0, então exibe apenas 15 no campo de entrada, ou seja, um número inteiro. Se introduziu 12.3 nos parâmetros de entrada, mostrar 12.3 no campo de entrada

 
Vitaly Muzichenko:

Não exactamente, se introduziu "input" nos parâmetros de entrada, por exemplo 15 ou 15.0, então exibe apenas 15 no campo de entrada, ou seja, um número inteiro. Se introduziu 12,3 nos parâmetros de entrada, mostrar 12,3 no campo de entrada.

Bem, então é uma questão de determinar o número de casas decimais de qualquer número. Houve um tópico como este algures - foi discutido ali.

 
Artyom Trishkin:

Bem, então trata-se de determinar o número de casas decimais de qualquer número. Houve um tópico como este algures - foi discutido ali.

Penso que havia um, mas não o consegui encontrar, por isso escrevi-o aqui (

 
Vitaly Muzichenko:

Não exactamente, se introduziu "input" nos parâmetros de entrada, por exemplo 15 ou 15.0, então exibe apenas 15 no campo de entrada, ou seja, um número inteiro. Se introduziu 12,3 nos parâmetros de entrada, então o campo de entrada deve mostrar 12,3.

Experiência com um guião como este:

#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 a 7ª casa decimal por vezes estará errada

 
Vitaly Muzichenko:

Parece ter sido, mas não consegui encontrá-lo, por isso escrevi aqui (

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

experimentar um guião 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


Penso que a 7ª casa decimal estará por vezes errada

Artyom Trishkin:

Obrigado a todos, vou experimentá-lo!

 
Como posso registar informação sobre uma posição aberta (lote, tipo) para que possa ser lida a partir de um EA noutro terminal MT5?
 
Rapazes, podem explicar esta questão, se há optimização nos agentes remotos e a EA escreve dados num ficheiro, então compreendo que não vou obter estes dados, porque só os meus agentes locais estão na pasta de teste, e não há agentes remotos...
Ou estou a procurar no sítio errado?
se sim, há alguma forma de implementar a possibilidade de obter ficheiros de agentes remotos?
 
Vitaly Muzichenko:

Penso que havia um, mas não o consegui encontrar, por isso coloquei-o aqui (

É assim que é descrito na documentação. Em fmod coloca-se o divisor 1 e obtém-se parte fracional do número ou 0. Não se importa quantas casas decimais são introduzidas no campo ou variável de entrada.

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