Будет ли востребован такой класс?

 

Есть в заначке класс, написанный мною 15 лет назад на Делфях, для построения графиков функций y=F(x). К примеру "y=sin(x^2)-tg(-x)"

Переписать его на MQL5 думаю очень легко. В классе две главные функции:

   int InitFormula(string Formula);
   int Fx(double X, double &res);

первая задаёт формулу в текстовом виде, интерпретирует её, кеширует....

вторая просто вычисляет для заданного X результат.

Есть возможность подключать свои кастомные функции (но только с одним аргументом).

Будет ли востребован данный класс?

 
AlexSTAL:

Есть в заначке класс, написанный мною 15 лет назад на Делфях, для построения графиков функций y=F(x). К примеру "y=sin(x^2)-tg(-x)"


то есть просто идет синтаксический разбор строки и построение бинарного дерева операций?

ну, как сказать.... потребность в данной функции может быть, если кто делает софт с пользовательским вводом формул,

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


Кстати, во многих универах при изучении программирования в теме "указатели" именно синтаксический разбор строки объясняется как наглядный пример построения дерева.

Так что вы сэкономите время многим студентам с лабораторками :))

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов - Документация по MQL5
 
sergeev:

то есть просто идет синтаксический разбор строки и построение бинарного дерева операций?

ну, как сказать.... потребность в данной функции может быть, если кто делает софт с пользовательским вводом формул,

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


Кстати, во многих универах при изучении программирования в теме "указатели" именно синтаксический разбор строки объясняется как наглядный пример построения дерева.

Так что вы сэкономите время многим студентам с лабораторками :))

Не... всё намного банальнее... Линейная последовательность действий...

К примеру sin(x)+2 - это два последовательных действия: вычисляется sin(x) и к результату прибавляется 2.

P.S. никаких рекурсивных вызовов

 
AlexSTAL:

Не... всё намного банальнее... Линейная последовательность действий...

К примеру sin(x)+2 - это два последовательных действия: вычисляется sin(x) и к результату прибавляется 2.

P.S. никаких рекурсивных вызовов

у вас получается принцип "калькулятора" - слева направо...  а как же приоритет операций и скобки?  со скобками было бы полезнее.

Документация по MQL5: Основы языка / Операции и выражения / Приоритеты и порядок операций
Документация по MQL5: Основы языка / Операции и выражения / Приоритеты и порядок операций
  • www.mql5.com
Основы языка / Операции и выражения / Приоритеты и порядок операций - Документация по MQL5
 
sergeev:

у вас получается принцип "калькулятора" - слева направо...  а как же приоритет операций и скобки?  со скобками было бы полезнее.

Да не... все приоритеты операций и скобки выполняются. Имеется ввиду, что получается не дерево, а линейная последовательность операций

Пример:

Этап подготовительный 0: 1.7+Abs(x)*SIN(-x)
Этап подготовительный 1: 1.7+abs(X)*sin((-1)*X)
Этап подготовительный 2: r000+f000(X)*f001((r001)*X)
Этап подготовительный 3: r000+f000(X)*f001(r001*X)
        r000+!000*f001(!001)
        r000+!000*!002
        r000+!003
        !004
Этап подготовительный 4: !004

т.е. в результате получается 5 последовательных действий

 
имхо, интересная мысль :-)

 
denkir:
имхо, интересная мысль :-)

С какой практической точки зрения, можете описать?
 
AlexSTAL:

Есть в заначке класс, написанный мною 15 лет назад на Делфях, для построения графиков функций y=F(x). К примеру "y=sin(x^2)-tg(-x)"

.......

Будет ли востребован данный класс?

Если быстро будет работать однозначно буду использовать. Конкретнее: если при работе в цикле синтаксический разбор будет делаться один раз.

Живой пример: "накидной" индикатор, строящий некое (задаваемое формулой в окне настройки) преобразование от входящего индикатора.

 
MetaDriver:

Если быстро будет работать однозначно буду использовать. Конкретнее: если при работе в цикле синтаксический разбор будет делаться один раз.

Живой пример: "накидной" индикатор, строящий некое (задаваемое формулой в окне настройки) преобразование от входящего индикатора.

Разбор делается 1 раз. Вычисление происходит в простом цикле (в моём примере цикл выполнится ровно 5 раз, при каждом проходе выполняется одно действие)...
Причина обращения: