Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1045

 
Alexandr Sokolov:

Ottengo ancora valori non normalizzati dopo la normalizzazione - MQL5

Più sfavorevole 1e-05, Cosa fare?

DoubleToString(....) vi aiuterà.

 

C'è qualche trucco per ottenere il valore di un elemento da una classe superiore


Codice:

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

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


Un elemento della classe B è dentro la classe A. Come posso ottenere il valore di a (dalla classe A) all'interno di B?

 
Sergey Likho:

C'è qualche trucco per ottenere il valore di un elemento da una classe superiore


Codice:


Un elemento della classe B è dentro la classe A. Come si può ottenere il valore di a (dalla classe A) dentro B?

La classe B non sa nulla della classe A.
È necessario ereditare. Poi potete chiamare il metodo della classe padre dalla classe figlia. Meglio usare l'operatore di risoluzione del contesto ::
 
Sergey Likho:

C'è qualche trucco per ottenere il valore di un elemento da una classe superiore


Codice:


Un elemento della classe B è dentro la classe A. Come posso ottenere il valore di a (dalla classe A) all'interno di B?

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:

Si prega di avvisare:

Puoi dirmi come risolvere il problema dichiamare l'indicatore su MT5 windows 10 X64, sto facendo in questo modo:

#resource "\Indicators\\MyIndicator.ex5"

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

Prima funzionava senza #resource, poi ha iniziato a funzionare solo con #resource, ora non funziona nulla, viene generato l'errore 4804

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

Ottengo ancora valori non normalizzati dopo la normalizzazione - MQL5

Più sfavorevole 1e-05, Cosa fare?

Prova questo:


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

C'è qualche trucco per ottenere il valore di un elemento da una classe superiore


Codice:


Un elemento della classe B è dentro la classe A. Come posso ottenere il valore di a (dalla classe A) all'interno di B?

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) risultato = 10

 
Igor Makanu:

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

Sbagliato. Si passa un puntatore a un oggetto in un metodo. Il mio punto è il seguente:

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();   
  }
Cioè, potete ottenere un puntatore a B da A e lavorare con esso, mentre B ha accesso ad A
 
Vladimir Simakov:

Sbagliato. Si passa un puntatore a un oggetto in un metodo. Il mio punto è questo:

Cioè, si può prendere un puntatore a B da A e lavorare con esso, e B ha accesso ad A

Ho visto il tuo codice

Ma non è la prima volta che l'interrogante "maneggia una foglia di fico" senza mezzi termini - ho già risposto a questa domanda quasi su OOP una volta ))))

fondamentalmente aveva solo bisogno di una descrizione dell'attaccante di classe A, ma lui è l'unico che lo sa)))


HH: Sto passando un riferimento ad un oggetto; puoi fare quello che vuoi con quel riferimento, ma non ha senso in generale in un codice del genere. Di solito, come hai scritto nel tuo esempio, usi un puntatore di classe a te stesso e poi lo usi tutto convenientemente

 
Ho scritto un semplice indicatore gratuito, ma non posso aggiungere una descrizione. Lo compilo secondo tutti i requisiti, premo "salva" - tutto è OK, nessun errore. Ma dopo il caricamento della pagina, non c'è nessuna descrizione...
Motivazione: