- Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
- Market Execution VS Instant Execution
- CCI - можно ли определить програмно направление линии?
А пример кода, где это нужно, можно ?
Для классов, наследованных от общего предка с их полиморфизмом это делается несложно, но чтобы цифру и строку перепутать ?
А пример кода, где это нужно, можно ?
например функция по модернизации ордеров
в нее через глобальные переменные мы можем отправить тип int и тогда функция сделает перевод значений используя поинт или мы можем отправить тип double и тогда функция не будет делать лишних вычислений....
То есть если мы отправляем в функцию значение 300 то функция переводит 300 в 0,00300 а если мы отправляем значение типа 1,23456 то функция не делает лишних вычислений..
//+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { double d_value =0.0; int i_value =0; Print("d_value: type=",GetTypeName(d_value)); Print("i_value: type=",GetTypeName(i_value)); } //+------------------------------------------------------------------+ //| Возвращает в строковом виде тип | //+------------------------------------------------------------------+ template<typename T> string GetTypeName(const T &t) { return(typename(T)); }
От спасибо тебе умный человек! Помог! Плюсанул бы в репу, но негде....
Пожалуйста. Этот пример есть в справке. )
в нее через глобальные переменные мы можем отправить тип int и тогда функция сделает перевод значений используя поинт или мы можем отправить тип double и тогда функция не будет делать лишних вычислений....
На мой взгляд, опасная практика.
Но, насколько я понимаю, после преобразования в double ты никак не можешь понять, что это былa int переменная, а не округленная до целого double.
З.Ы.
Да, с шаблонами можно одну функцию для двух разных типов сделать.
На мой взгляд, опасная практика.
Но, насколько я понимаю, после преобразования в double ты никак не можешь понять, что это былa int переменная, а не округленная до целого double.
А перегрузкой методов (функций) не пробовали пользоваться. Имена функций одинаковые но тело функции выполняет разные действия в зависимости от типа переданного ей параметра
double fun(double P) { //действие с переменной типа double P return(P); } int fun (int P) { //действие с переменной типа int P return(P); }
Я хочу написать функцию при отправке в которую чначения типа 1,23456 тейк ставится напрямую на эту цену, а при отправке значения 300 что бы пересчитывался в 0,00300 и ордер опен прайс + 0,00300
Лучше сделать перегрузку функции: на вход то что Вы спрашиваете, выход - уровень тейка, например.
double f(int a){} double f(double a){}
в каждой функции свой метод расчета.
Лучше сделать перегрузку функции: на вход то что Вы спрашиваете, выход - уровень тейка, например.
в каждой функции свой метод расчета.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования