Можно ли в коде изменить математический знак (только знак) по выбранному условию? - страница 4

 
Alexey Viktorov #:

Так это ещё проще чем макросы. Вот на примере ниже

Или без тернарного оператора, за одно условие типа позиции меняется цена и коэффициент.

Хитро! :)
Приму к сведению, хм... пока еще не могу осознать как это будет работать с делением и умножением, но решу это когда голова посвежее будет)
В любом случае спасибо за метод! Пару раз даже сам так делал на коленке, но видимо не осознал всего потенциала умножения на -1

 
Koldun Zloy #:

По-моему этот пример ничего не решает с точки зрения дублей копипаста одного и того же кода. 

 
leon_17 #:

Хитро! :)
Приму к сведению, хм... пока еще не могу осознать как это будет работать с делением и умножением, но решу это когда голова посвежее будет)
В любом случае спасибо за метод! Пару раз даже сам так делал на коленке, но видимо не осознал всего потенциала умножения на -1

Осознал... и да, жаль, что этот поход не помогает, когда нужно использовать также и умножение и деление. 

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

 
leon_17 #:

По-моему этот пример ничего не решает с точки зрения дублей копипаста одного и того же кода. 

Смотрите внимательнее.

 
Koldun Zloy #:

Смотрите внимательнее.

Думаю, проблема в том, что я пока не понимаю 1 строку... видимо это как раз какое-то решение с указателями. Поразбираюсь на досуге, но надеюсь в этом коде учтено, что данный подход должен быть применим не только к отдельным значениям (переменным), но и к целым кускам кода, о чем многократно обсуждалось выше и в частности  fxsaber привел классный пример на эту тему: https://www.mql5.com/ru/forum/453757/page3#comment_49236554 

 
leon_17 #:

Думаю, проблема в том, что я пока не понимаю 1 строку... видимо это как раз какое-то решение с указателями. Поразбираюсь на досуге, но надеюсь в этом коде учтено, что данный подход должен быть применим не только к отдельным значениям (переменным), но и к целым кускам кода, о чем многократно обсуждалось выше и в частности  fxsaber привел классный пример на эту тему: https://www.mql5.com/ru/forum/453757/page3#comment_49236554 

В первой строке объявляется тип указателя на функцию.

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

Документация по MQL5: Основы языка / Типы данных / Пользовательские типы
Документация по MQL5: Основы языка / Типы данных / Пользовательские типы
  • www.mql5.com
Пользовательские типы - Типы данных - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Koldun Zloy #:

В первой строке объявляется тип указателя на функцию.

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

Спасибо!

 
leon_17 #:

Осознал... и да, жаль, что этот поход не помогает, когда нужно использовать также и умножение и деление. 

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

Почему? Для умножения и деления можно использовать возведение в степень.

x*y == x*pow(y,1)
x/y == x*pow(y,-1)
 
Dmitriy Gizlyk #:

Почему? Для умножения и деления можно использовать возведение в степень.

Ну, тут или + использовать или *, а в коде шаблонной функции пишется только один знак. Я про это. 

Причина обращения: