Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 94
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В том то все и дело как вызвать функцию внутри класса, а именно как работают между собой private: public:, как передать данные классу и получить результат из класса. Пока вот это!
Внутри класса результат как-то же должен быть посчитан. А как класс без вашего участия будет понимать что вот сейчас нужно результат вернуть, а вот в иной момент - не нужно?
Значит нужен метод внутри класса, который можно вызвать снаружи. Значит он должен быть публичным.
Хотя конечно можете сделать приватный метод, который будет считать все данные, находящиеся внутри класса, и записывать их в переменную класса, а публичный метод будет вызывать приватный. Но вызов какого-то метода всё равно должен быть. А уж что там будет считаться в приватном методе, насколько сложные будут вычисления, и какие переменные для вычислений будут задействованы - всё только по вашему усмотрению, и на вашей же ответственности.
В том то все и дело как вызвать функцию внутри класса, а именно как работают между собой private: public:, как передать данные классу и получить результат из класса. Пока вот это!
#property strict
#property script_show_inputs
//--- input parameters
input int inputA=1;
input int inputB=3;
class ASD
{
private:
// Здесь располагаются переменные и функции, доступные только внутри класса
public:
int Add(int a,int b)
{
Print(__FUNCTION__,": Результат сложения: a",a," + b",b," = ",a+b);
return(a+b);
}
} ar;
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
ar.Add( inputA, inputB );
}
//+------------------------------------------------------------------+
Вроде, должно сработать, правильность не проверял)
Вот, Спасибочки, уже начинаю двигатся -
скрипт:
ASD ar;
void OnStart()
{
ar.fg (3,5);
ar.sf ();
}
класс:
{
private:
int d;
int g (int a_s,int a_d){d=a_s+a_d;return (d=a_s+a_d); }
public:
void fg (int a_s,int a_d) { g (a_s,a_d); }
void sf () {Alert (d);}
};
Алерт выдает результат 8, но это алерт из класса, а мне теперь алерт нужен из скрипта
Вот, Спасибочки, уже начинаю двигатся -
скрипт:
ASD ar;
void OnStart()
{
ar.fg (3,5);
ar.sf ();
}
класс:
{
private:
int d;
int g (int a_s,int a_d){d=a_s+a_d;return (d=a_s+a_d); }
public:
void fg (int a_s,int a_d) { g (a_s,a_d); }
void sf () {Alert (d);}
};
Алерт выдает результат 8, но это алерт из класса, а мне теперь алерт нужен из скрипта
Ок, объявляете в классе метод Alert() и вызываете его ar.Alert(), хотя сейчас то же самое делает метод sf(). Не совсем понимаю, что Вы хотите увидеть после того, как записали в поле d значение?
Вроде, должно сработать, правильность не проверял)
Все! Огромное Спасибо! Получилось-
скрипт:
ASD ar;
void OnStart()
{
ar.fg (3,5);
Alert ( ar.sf ());
}
класс:
{
private:
int d;
int g (int a_s,int a_d) {return (d=a_s+a_d); }
public:
void fg (int a_s,int a_d) { g (a_s,a_d); }
int sf () {return (d);}
};
Ща буду прежевывать!
Не помню кто писал мне в этой теме что тестер сломался, но отвечу что вполне может и сломаться. Он или глотает разные куски времени или начинает отсчет с произвольного отрезка(хотя все котировки есть.)
Думаю кому надо увидит поймет.
функцию MRoubd ?
(возвращает число округлённое до кратного заданной значимости)
или как округлять например 2285,13 что бы было кратным (0,25) 2285,00 __ 2285,25 ___ 2285,50 ___ 2285,75
как узнать кредитное плечо не счета а пары?
Размер предоставляемого плеча: