- Спреды - Для продвинутых пользователей - Торговые операции
- Миграция - Виртуальный хостинг для круглосуточной работы
- Стилизатор - Разработка программ
Скажите, как сделать ограничение количества знаков после запятой для конкретных переменных типа double, которые предназначены для настроек пользователем. Мне когда-то это делал программист, когда я был только как заказчик. Сейчас не могу найти где это подсмотреть...
NormalizeDouble(...)
Так неинтересно. Это понятное дело. А вот как сделать, чтобы невозможно было написать больше знаков чем разрешает программист - это не понятно... Ведь я видел такое, значит оно есть и не может не есть. Вот и хочу узнать как это делается... )))
Может быть разговор о пунктах и десятых долях пункта? Как задать SL и TP в пунктах чтобы советник сам разобрался для каких котировок какое значение должно быть?
Тогда так
double point; /*******************Expert initialization function*******************/ int OnInit() { point = _Digits%2 == 0 ? _Point : _Point*10; return(INIT_SUCCEEDED); }/*******************************************************************/
И дальше использовать вместо _Point переменную point.
Может быть разговор о пунктах и десятых долях пункта? Как задать SL и TP в пунктах чтобы советник сам разобрался для каких котировок какое значение должно быть?
Тогда так
И дальше использовать вместо _Point переменную point.
Ну, это совсем просто.
Я не заморачиваюсь с этим. Сначала рассчитываю котировку, а потом округляю до необходимого количества знаков после запятой в установке ордеров и т.д.. В место этого гемора можно просто рассчитанную котировку double Price заменить на NormaliseDouble(Price,_Digits).
А если пункты double point на NormaliseDouble(point*_Point,_Digits)
Сколько нужно цифр после запятой?
Где-то 3, где-то 1, где-то 0.
Но надо чтобы пользователь смог ввести не более этого количества цифр после запятой в самих настройках.
Я не спрашиваю как обойти этот момент - мне нужен именно этот момент...)))
Например,
input double Lot = 0.01; //Здесь 2 знака после запятой
input double FiboLevel = 0.236; //Здесь 3 знака после запятой
input double SumBars = 20; //Здесь 0 знаков после запятой
небывает такое, если целочисленное то int если с запятой то double дальше сами смотрите что пользователь указал в double и округляете.
Какая разница указали в лоте 0.01 или 0.0101010001, округлили и всё
Где-то 3, где-то 1, где-то 0.
Но надо чтобы пользователь смог ввести не более этого количества цифр после запятой в самих настройках.
Я не спрашиваю как обойти этот момент - мне нужен именно этот момент...)))
Например,
input double Lot = 0.01; //Здесь 2 знака после запятой
input double FiboLevel = 0.236; //Здесь 3 знака после запятой
input double SumBars = 20; //Здесь 0 знаков после запятой
Мне это надо не для "дебила пользователя", а для себя на будущее. Просто я такое видел и хочу найти способ это сделать, чтобы использовать в своих работах.
Я же написал - "Нестандартный вопрос". Следовательно и жду - нестандартное решение. Может найдется нестандартный программист, который покажет как это делается...
Я не тороплюсь. Подожду еще мнения...)))
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования