Скачать MetaTrader 5

Нестандартный вопрос. Количество знаков после запятой в настройках сова

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Разбираетесь в своей области? Поделитесь этим с миллионами трейдеров!
Dmitry Sumsky
662
Dmitry Sumsky 2016.04.29 14:45 
Скажите, как сделать ограничение количества знаков после запятой для конкретных переменных типа double, которые предназначены для настроек пользователем. Мне когда-то это делал программист, когда я был только как заказчик. Сейчас не могу найти где это подсмотреть...
Vladimir Zubov
4328
Vladimir Zubov 2016.04.29 15:05  
Да пусть вводит сколько хочет после запятой, потом в работе нормализируйте до скольки надо.
Vitaly Muzichenko
3495
Vitaly Muzichenko 2016.04.29 15:31  
Дмитрий:
Скажите, как сделать ограничение количества знаков после запятой для конкретных переменных типа double, которые предназначены для настроек пользователем. Мне когда-то это делал программист, когда я был только как заказчик. Сейчас не могу найти где это подсмотреть...

NormalizeDouble(...)

Dmitry Sumsky
662
Dmitry Sumsky 2016.04.29 17:32  
Так неинтересно. Это понятное дело. А вот как сделать, чтобы невозможно было написать больше знаков чем разрешает программист - это не понятно... Ведь я видел такое, значит оно есть и не может не есть. Вот и хочу узнать как это делается... )))
Anton Zverev
2617
Anton Zverev 2016.04.29 17:43  
Дмитрий:
Так неинтересно. Это понятное дело. А вот как сделать, чтобы невозможно было написать больше знаков чем разрешает программист - это не понятно... Ведь я видел такое, значит оно есть и не может не есть. Вот и хочу узнать как это делается... )))
Сколько нужно цифр после запятой?
Alexey Viktorov
6921
Alexey Viktorov 2016.04.29 18:22  

Может быть разговор о пунктах и десятых долях пункта? Как задать SL и TP в пунктах чтобы советник сам разобрался для каких котировок какое значение должно быть?

Тогда так

double   point;

/*******************Expert initialization function*******************/
int OnInit()
{
 point = _Digits%2 == 0 ? _Point : _Point*10;

  return(INIT_SUCCEEDED);
}/*******************************************************************/

И дальше использовать вместо _Point переменную point.

Dmitry Sumsky
662
Dmitry Sumsky 2016.04.29 22:52  
Alexey Viktorov:

Может быть разговор о пунктах и десятых долях пункта? Как задать SL и TP в пунктах чтобы советник сам разобрался для каких котировок какое значение должно быть?

Тогда так

И дальше использовать вместо _Point переменную point.

Ну, это совсем просто.

Я не заморачиваюсь с этим. Сначала рассчитываю котировку, а потом округляю до необходимого количества знаков после запятой в установке ордеров и т.д.. В место этого гемора можно просто рассчитанную котировку double Price заменить на NormaliseDouble(Price,_Digits).

А если пункты double point на  NormaliseDouble(point*_Point,_Digits)

Dmitry Sumsky
662
Dmitry Sumsky 2016.04.29 22:57  
Anton Zverev:
Сколько нужно цифр после запятой?

Где-то 3, где-то 1, где-то 0.

Но надо чтобы пользователь смог ввести не более этого количества цифр после запятой в самих настройках.

Я не спрашиваю как обойти этот момент - мне нужен именно этот момент...))) 

Например,

input double Lot = 0.01; //Здесь 2 знака после запятой

input double FiboLevel = 0.236; //Здесь 3 знака после запятой

input double SumBars = 20;    //Здесь 0 знаков после запятой 

Vladimir Zubov
4328
Vladimir Zubov 2016.04.30 00:50  

небывает такое, если целочисленное то int если с запятой то double дальше сами смотрите что пользователь указал в double и округляете.

Какая разница указали в лоте 0.01 или 0.0101010001, округлили и всё 

Vitaly Muzichenko
3495
Vitaly Muzichenko 2016.04.30 02:10  
Дмитрий:

Где-то 3, где-то 1, где-то 0.

Но надо чтобы пользователь смог ввести не более этого количества цифр после запятой в самих настройках.

Я не спрашиваю как обойти этот момент - мне нужен именно этот момент...))) 

Например,

input double Lot = 0.01; //Здесь 2 знака после запятой

input double FiboLevel = 0.236; //Здесь 3 знака после запятой

input double SumBars = 20;    //Здесь 0 знаков после запятой 

Ну вот вы сами написали "input double Lot = 0.01; // Здесь 2 знака после запятой" - это отображается в настройках , если пользователь дебил, то пусть вводит больше двух - хоть 10, это уже его проблемы, что не соблюдает рекомендации, ну а вы просто округляйте внутри программы. Если это индикатор, то можно и не округлять, ну а если советник, то лучше выделить больше энергии и внимания, и сделать хорошую и полную обработку торговых ошибок, и не парится что там введёт пользователь - важно предупредить в описании и настройках.
Dmitry Sumsky
662
Dmitry Sumsky 2016.04.30 22:39  

Мне это надо не для "дебила пользователя", а для себя на будущее. Просто я такое видел и хочу найти способ это сделать, чтобы использовать в своих работах.

Я же написал - "Нестандартный вопрос". Следовательно и жду - нестандартное решение. Может найдется нестандартный программист, который покажет как это делается...

Я не тороплюсь. Подожду еще мнения...))) 

123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий