Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1045

 
Alexandr Sokolov:

Ich erhalte immer noch nicht normalisierte Werte nach der Normalisierung - MQL5

Am ungünstigsten 1e-05, Was ist zu tun?

DoubleToString(....) wird Ihnen helfen.

 

Gibt es einen Trick, um den Wert eines Elements aus einer höheren Klasse zu erhalten?


Code:

class B
  {
   int x
   int               GetA()
     { ????  }
  };

class A
  {
   int               a;
   B                 b;
public:
  };


Ein Element der Klasse B befindet sich innerhalb der Klasse A. Wie kann ich den Wert von a (aus Klasse A) von B aus ermitteln?

 
Sergey Likho:

Gibt es einen Trick, um den Wert eines Elements aus einer höheren Klasse zu erhalten?


Code:


Ein Element der Klasse B befindet sich innerhalb der Klasse A. Wie kann man den Wert von a (aus Klasse A) erhalten, während man sich in B befindet?

Klasse B weiß nichts über Klasse A.
Sie müssen erben. Dann können Sie die Methode der Elternklasse von der Kindklasse aus aufrufen. Bessere Verwendung des Kontextauflösungsoperators ::
 
Sergey Likho:

Gibt es einen Trick, um den Wert eines Elements aus einer höheren Klasse zu erhalten?


Code:


Ein Element der Klasse B befindet sich innerhalb der Klasse A. Wie kann ich den Wert von a (aus Klasse A) von B aus ermitteln?

class A;

class B
  {
   A*  ptr;
   int x;
public:
   B(int mX,A* mPtr):ptr(mPtr),x(mX){}
   void  Print() {Alert("From B\na=",ptr.Get(),"\nx=",x);}
  };

class A
  {
   int               a;
   B*                b;
public:
   A(int mA,int mB):a(mA),b(new B(mB,&this)){}
  ~A() {delete b;}
   void   PrintB() {b.Print();}
   void   PrintA() {Alert("From A\na=",a);}
   int    Get()   {return a;}
  };
  
void OnStart(){
   A a(8,10);
   a.PrintA();
   a.PrintB();   
  }
 
Artyom Trishkin:

Bitte beraten Sie mich:

Können Sie mir sagen, wie man das Problem mit demAufruf Indikator auf MT5 Windows 10 X64 zu lösen, ich bin dabei diesen Weg:

#resource "\\\Indicators\\\MyIndicator.ex5"

handle=iCustom(NULL,0,"::Indicators\\\\MyIndicator");

Früher funktionierte es ohne #resource, dann funktionierte es nur noch mit #resource, jetzt geht nichts mehr, es wird der Fehler 4804 generiert

Способы вызова индикаторов в MQL5
Способы вызова индикаторов в MQL5
  • www.mql5.com
В MQL5 существует несколько вариантов вызова индикаторов, и осуществляются они в основном при помощи функций IndicatorCreate() и iCustom(). Причем эти функции лишь возвращают хендл индикатора, и дальнейшая работа с индикаторами ведется именно через него. Так что же такое хендл? Как работать с функциями IndicatorCreate() и iCustom()? И как...
 
Alexandr Sokolov :

Ich erhalte immer noch nicht normalisierte Werte nach der Normalisierung - MQL5

Am ungünstigsten 1e-05, Was ist zu tun?

Versuchen Sie dies:


if (index <= 65 && index> = 55 ) PrintFormat (index, "" , up, "" , down, "" , sum, "%.5f" , minus);
 
Sergey Likho:

Es gibt einen Trick, um den Wert eines Elements aus einer höheren Klasse zu erhalten


Code:


Ein Element der Klasse B befindet sich innerhalb der Klasse A. Wie kann ich den Wert von a (aus Klasse A) innerhalb von B ermitteln?

class A;

class B
{
public:
   int x;
   int               GetA(A &reference) {  return reference.a;} };
//+------------------------------------------------------------------+
class A
{
public:
   int               a;
   B                 b; };
//+------------------------------------------------------------------+
A obj;
void OnStart()
{
   obj.a = 10;
   int result = obj.b.GetA(obj);
   printf("result = %d",result);
}
//+------------------------------------------------------------------+

2020.01.20 20:30:05.534 tst (EURUSD,H1) result = 10

 
Igor Makanu:

2020.01.20 20:30:05.534 tst (EURUSD,H1) result = 10

Falsch. Sie übergeben einen Zeiger auf ein Objekt in einer Methode. Mein Standpunkt ist folgender:

class A;

class B
  {
   A*  ptr;
   int x;
public:
   B(int mX,A* mPtr):ptr(mPtr),x(mX){}
   void  Print() {Alert("From B\na=",ptr.Get(),"\nx=",x);}
  };

class A
  {
   int               a;
   B                 b;
public:
   A(int mA,int mB):a(mA),b(mB,&this){}
   void   PrintB() {b.Print();}
   void   PrintA() {Alert("From A\na=",a);}
   int    Get()   {return a;}
   B*     GetB() {return &b;}
  };

void OnStart(){
   A a(8,10);
   B* b=a.GetB();
   b.Print();   
  }
Das heißt, Sie können einen Zeiger auf B von A erhalten und damit arbeiten, während B Zugriff auf A hat
 
Vladimir Simakov:

Falsch. Sie übergeben einen Zeiger auf ein Objekt in einer Methode. Mein Standpunkt ist folgender:

Das heißt, Sie können einen Zeiger auf B von A nehmen und damit arbeiten, und B hat Zugriff auf A

Ich habe Ihren Code gesehen

Aber das ist nicht das erste Mal, dass der Fragesteller "mit einem Feigenblatt hantiert" - ich habe diese Frage schon einmal fast auf OOP beantwortet ))))

er brauchte eigentlich nur eine Beschreibung des Klasse-A-Stürmers, aber er ist der Einzige, der das weiß)))


HH: Ich übergebe einen Verweis auf ein Objekt; mit diesem Verweis kann man tun, was man will, aber im Allgemeinen hat solcher Code keinen Sinn. Normalerweise verwendet man, wie Sie in Ihrem Beispiel geschrieben haben, einen Klassenzeiger auf sich selbst, und dann ist es bequem, ihn ganz zu verwenden

 
Ich habe einen einfachen kostenlosen Indikator geschrieben, aber ich kann keine Beschreibung hinzufügen. Ich fülle es nach allen Vorgaben aus, drücke auf "Speichern" - alles ist in Ordnung, keine Fehler. Aber nachdem die Seite geladen ist, gibt es keine Beschreibung...
Grund der Beschwerde: