Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 94

 
Vikon:
В том то все и дело как вызвать функцию внутри класса, а именно как работают между собой  private: public:, как передать данные классу и получить результат из класса. Пока вот это!

Внутри класса результат как-то же должен быть посчитан. А как класс без вашего участия будет понимать что вот сейчас нужно результат вернуть, а вот в иной момент - не нужно?

Значит нужен метод внутри класса, который можно вызвать снаружи. Значит он должен быть публичным.

Хотя конечно можете сделать приватный метод, который будет считать все данные, находящиеся внутри класса, и записывать их в переменную класса, а публичный метод будет вызывать приватный. Но вызов какого-то метода всё равно должен быть. А уж что там будет считаться в приватном методе, насколько сложные будут вычисления, и какие переменные для вычислений будут задействованы - всё только по вашему усмотрению, и на вашей же ответственности.

 
Vikon:
В том то все и дело как вызвать функцию внутри класса, а именно как работают между собой  private: public:, как передать данные классу и получить результат из класса. Пока вот это!
#property version   "1.00"
#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 );
  }
//+------------------------------------------------------------------+
Вроде, должно сработать, правильность не проверял)
 
Alexey Kozitsyn:
Вроде, должно сработать, правильность не проверял)

Вот, Спасибочки, уже начинаю двигатся - 

скрипт:

#include <ASD.mqh>
ASD ar;
void OnStart()
  {
   ar.fg (3,5);
   ar.sf ();
  }

класс:

class ASD
  {
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, но это алерт из класса, а мне теперь алерт нужен из скрипта
 

 
Vikon:

Вот, Спасибочки, уже начинаю двигатся - 

скрипт:

#include <ASD.mqh>
ASD ar;
void OnStart()
  {
   ar.fg (3,5);
   ar.sf ();
  }

класс:

class ASD
  {
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 значение?
 
Alexey Kozitsyn:
Ок, объявляете в классе метод Alert() и вызываете его ar.Alert(), хотя сейчас то же самое делает метод sf(). Не совсем понимаю, что Вы хотите увидеть после того, как записали в поле d значение?
Если Вы хотите получить значение d не вызывая метода sf(), тогда нужно добавить публичный метод int GetD() const { return( d ); }. А в скрипте написать Alert( ar.GetD() );
 
Alexey Kozitsyn:
Вроде, должно сработать, правильность не проверял)

Все! Огромное Спасибо! Получилось-

скрипт:

#include <ASD.mqh>
ASD ar;
void OnStart()
  {
   ar.fg (3,5);
   Alert ( ar.sf ());
  }

класс:

class ASD
  {
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);}    
  
  };


 Ща буду прежевывать!

 

Не помню кто писал мне в этой теме что тестер сломался, но отвечу что вполне может и сломаться. Он или глотает разные куски времени или начинает отсчет с произвольного отрезка(хотя все котировки есть.)

Думаю кому надо увидит поймет. 

 
Доброго времени суток подскажите пожалуйста можно ли импортировать из MSDN 
функцию MRoubd ?
 (возвращает число округлённое до кратного заданной значимости)

или как округлять например 2285,13 что бы было кратным (0,25)  2285,00 __ 2285,25 ___ 2285,50 ___ 2285,75
 
как узнать кредитное плечо не счета а пары? 
 
SAMER:
как узнать кредитное плечо не счета а пары? 

Размер предоставляемого плеча:

long liverage=AccountInfoInteger(ACCOUNT_LEVERAGE);
Причина обращения: