Расширения стандартных функций

 

‌Обращение к разработчикам mql 4/5:

1) Хотелось бы чтобы стандартная фунция MathRound имела второй параметр, как знак до которого округляем (может принимать положительные и отрацительные значения),

‌если второй параметр отрицательный, то округляем столько знаков после запятой, если положительный, то округляем столько знаков до запятой

примеры:

MathRound(15.193, 1) = 15.2
MathRound(15.193, -1) = 20

2) Хотелось бы чтобы стандартная фунция StringSubstr умела понимать отрицательный второй параметр, это значит отрезать с конца строки указанное количество знаков

пример:

StringSubstr("Hello!", -3) = "lo!"

Понятно что все это можно реализовать через свои функции, но удобно когда язык такое умеет из коробки. Есть языки которые поддерживают такие наборы параметров и это очень удобно.

3) Хотелось бы чтобы встроенный форматтер кода умел‌ ставить пробелы после запятых, знаков сравнения и операций.

А то жуть:‌

   if(DayOfWeek()+1==d3swap ||
      DayOfWeek()==FRIDAY)
      swap=swap*3;

   swap=MathRound(swap*100)/100;‌


 
sinys:

‌Обращение к разработчикам mql 4/5:

1) Хотелось бы чтобы стандартная фунция MathRound имела второй параметр, как знак до которого округляем (может принимать положительные и отрацительные значения),

‌если второй параметр отрицательный, то округляем столько знаков после запятой, если положительный, то округляем столько знаков до запятой

примеры:

2) Хотелось бы чтобы стандартная фунция StringSubstr умела понимать отрицательный второй параметр, это значит отрезать с конца строки указанное количество знаков

пример:

StringSubstr("Hello!", -3) = "lo!"

Понятно что все это можно реализовать через свои функции, но удобно когда язык такое умеет из коробки. Есть языки которые поддерживают такие наборы параметров и это очень удобно.

3) Хотелось бы чтобы встроенный форматтер кода умел‌ ставить пробелы после запятых, знаков сравнения и операций.

А то жуть:‌

   if(DayOfWeek()+1==d3swap ||
      DayOfWeek()==FRIDAY)
      swap=swap*3;

   swap=MathRound(swap*100)/100;‌

по пп1: напишите свой MathRound c двумя параметрами - это разрешено

по пп3: сделайте свой форматтер кода - это несложно ‌(кстати и всякие существующие для С/C++, коим несть числа, могут обрабатывать MQL)

 

Для первого варианта MathRound вполне подойдет NormalizeDouble().

По второму пункту - разве вот так:

StringSubstr("Hello!", StringLength("Hello!") - 3)

 сложно написать? Или тоже оформить в виде своей функции, как и второй вариант MathRound.

 
Ihor Herasko:

Для первого варианта MathRound вполне подойдет NormalizeDouble().

По второму пункту - разве вот так:

StringSubstr("Hello!", StringLength("Hello!") - 3)

 сложно написать? Или тоже оформить в виде своей функции, как и второй вариант MathRound.

‌Как я уже сказал:

Понятно что все это можно реализовать через свои функции, но удобно когда язык такое умеет из коробки. Есть языки которые поддерживают такие наборы параметров и это очень удобно.


по пп3: сделайте свой форматтер кода - это несложно ‌(кстати и всякие существующие для С/C++, коим несть числа, могут обрабатывать MQL)

‌Есть пример/описание подключения внешнего форматтера?

 
sinys:

‌Как я уже сказал:

Понятно что все это можно реализовать через свои функции, но удобно когда язык такое умеет из коробки. Есть языки которые поддерживают такие наборы параметров и это очень удобно.


‌Есть пример/описание подключения внешнего форматтера?

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

но проблем натравить astyle или классический indent на mqh/mq4/mq5, чтобы они расставили пробелы/переносы строк и пробелы нет вообще -

cat somefile.mql | astyle --style=1tbs > somefile.publish.mql

можно извратиться и добавить в хуки VCS чтобы при коммитах код форматировался.

 
Скорее всего разработчики не будут это делать, потому что пожеланий на доработку функций много и каждому надо свое. Я тоже просил когда-то.