- [АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3.
- Вопросы от начинающих MQL5 MT5 MetaTrader 5
- Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6.
Alert(NormalizeDouble(0.123456,4));
даст 0.1235
приведение числа с плавающей точкой к формату с определенным количеством знаков после запятой
Вопрос наверное глупый... Недавно занялся изучением языка MQL4. Делаю успехи: пишу советники, скрипты, и т.п. Только ни хрена не понимаю, что дает функция "NormalizeDouble"? В учебнике эта функция постоянно упоминается. А у меня и без нее все замечательно. Она нужна вообще? Обьясните пожалуйста, те кто понимает.
Например можно округлять при расчете лота. Если он конечно считается по формуле.
Alert(NormalizeDouble(0.123456,4));
даст 0.1235
приведение числа с плавающей точкой к формату с определенным количеством знаков после запятой
Некорректный пример.
Алерт сам по себе не может вывести более четырех знаков после запятой.
https://docs.mql4.com/ru/common/Alert
Да, я в учебнике по MQL4 это прочитал. Только понять этого не могу.
Вот например
if (NormalizeDouble(Price,Digits) >= NormalizeDouble(Level,Digits))
я это напишу так
if (Price >= Level)
И у меня все отлично вычисляется. О какой плавающей точке речь? У меня инструмент EUR/USD например. Куда от меня моя точка денется? Зачем мне нужна эта функция? Что она дает?
Я понял практически все, но вот эту мелочь понять не могу. Боюсь что косяки в алгоритме будут, если эта непонятная функция важна.
Допустим, Вы написали:
if (Price >= Level)
и оба параметра вычисляете через свои формулы и получаете:
Price=1.123456 и Level=1.123457
Если нормализации нет - условие не сработает.
Да, я в учебнике по MQL4 это прочитал. Только понять этого не могу.
Вот например
я это напишу так
if (Price >= Level)
И у меня все отлично вычисляется. О какой плавающей точке речь? У меня инструмент EUR/USD например. Куда от меня моя точка денется? Зачем мне нужна эта функция? Что она дает?
Я понял практически все, но вот эту мелочь понять не могу. Боюсь что косяки в алгоритме будут, если эта непонятная функция важна.
Вам уже написали, она нужна в фунукции OrderSend, когда цена или лоты вычисляются по формулам, в этой функции должен быть определенный формат данных.
Если вы не сталкивались с более сложными задачами, то считайте, что вам повезло.
Проще объясню:
Вы вычислили по какой-то формуле цену для открытия ордера. Например, по фибе 0.618*(Пик-Впадина). У вас получится на 3 знака после зпт больше, чем есть в котировках. Если послать это значение в качестве цены, то сервер его не примет. Ему нужно ровно столько, сколько есть для данного инструмента. Для этого полученное значение и нужно нормализовать.
Проще объясню:
Вы вычислили по какой-то формуле цену для открытия ордера. Например, по фибе 0.618*(Пик-Впадина). У вас получится на 3 знака после зпт больше, чем есть в котировках. Если послать это значение в качестве цены, то сервер его не примет. Ему нужно ровно столько, сколько есть для данного инструмента. Для этого полученное значение и нужно нормализовать.
А эта функция везде должна работать? У меня в индикаторе внешняя переменная w типа double.
Для отображения в имени прописываю: IndicatorShortName("SPMA("+NormalizeDouble(w,3)+")");
А результат всё равно такой
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования