Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1109

 
Vitaly Muzichenko:

Тогда не получу дробное число.

Нужно видимо что-то на подобии:

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

 
Artyom Trishkin:

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

Не совсем, если ввели во входных параметрах "input" к примеру 15 или 15.0, то отображать в поле ввода просто 15, то есть целое число. Если во входных параметрах ввели 12.3, то в поле ввода и отображать 12.3

 
Vitaly Muzichenko:

Не совсем, если ввели во входных параметрах "input" к примеру 15 или 15.0, то отображать в поле ввода просто 15, то есть целое число. Если во входных параметрах ввели 12.3, то в поле ввода и отображать 12.3

Ну тогда это - определение количества знаков после запятой у любого числа. Где-то такая тема была - там всё обсуждалось.

 
Artyom Trishkin:

Ну тогда это - определение количества знаков после запятой у любого числа. Где-то такая тема была - там всё обсуждалось.

Вроде было, но найти не смог, поэтому написал здесь (

 
Vitaly Muzichenko:

Не совсем, если ввели во входных параметрах "input" к примеру 15 или 15.0, то отображать в поле ввода просто 15, то есть целое число. Если во входных параметрах ввели 12.3, то в поле ввода и отображать 12.3

поэкспериментируй с таким скриптом:

#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


кажется в 7-м знаке после запятой будет иногда ошибаться

 
Vitaly Muzichenko:

Вроде было, но найти не смог, поэтому написал здесь (

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

поэкспериментируй с таким скриптом:

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


кажется в 7-м знаке после запятой будет иногда ошибаться

Artyom Trishkin:

Всем спасибо, попробую!

 
Как записать информацию об открытой позиции (лот, тип) так, чтобы её можно было прочесть из советника в другом терминале МТ5?
 
Ребятки разъясните такой вопрос, если идёт оптимизация на удалённых агентах и советник пишет данные в файл, то я как понимаю этих данных я не получу, так как в папке тестера находятся только мои локальные агенты, а удалённых нет...
Или я не там ищу?
если так, то есть ли способ реализации возможности получения файлов от удалённых агентов?
 
Vitaly Muzichenko:

Вроде было, но найти не смог, поэтому написал здесь (

Так в документации всё описано. В fmod ставим делитель 1 и получаем дробную часть числа или 0. Вам ведь не важно сколько знаков после запятой введено в поле или в input переменную.

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