MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1045

 
Alexandr Sokolov :

Normalleştirmeden sonra hala normalleştirilmemiş değerler alıyorum - MQL5

En olumsuz 1e-05, ne yapmalı?

DoubleToString (....) size yardımcı olacaktır.

 

Bir öğenin değerini daha yüksek bir sınıftan almanın bir hilesi var mı?


kod:

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

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


A sınıfı içinde B sınıfı bir öğe. B içindeyken (A sınıfından) a değerini nasıl elde edebilirsiniz?

 
Sergey Likho :

Bir öğenin değerini daha yüksek bir sınıftan almanın bir hilesi var mı?


kod:


A sınıfı içinde B sınıfı bir öğe. B içindeyken (A sınıfından) a değerini nasıl elde edebilirsiniz?

B sınıfı, A sınıfı hakkında hiçbir şey bilmiyor.
Miras alman gerekiyor. Ardından, alt sınıftan üst sınıfın yöntemini çağırabilirsiniz. Bağlam çözünürlüğü operatörünü kullanmak daha iyi ::
 
Sergey Likho :

Bir öğenin değerini daha yüksek bir sınıftan almanın bir hilesi var mı?


kod:


A sınıfı içinde B sınıfı bir öğe. B içindeyken (A sınıfından) a değerini nasıl elde edebilirsiniz?

 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 :

Lütfen bana söyle:

MT5 windows 10 X64'te göstergeyi çağırarak sorunu nasıl çözeceğimi söyle, bunu şu şekilde yapıyorum:

#resource "\\Göstergeler\\Göstergem.ex5"

handle=iCustom(NULL,0,"::Göstergeler\\Göstergem");

Eskiden #resource olmadan çalışıyordu, sonra #resource ile çalışmaya başladı, şimdi çalışmıyor, 4804 hatası yazıyor

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

Normalleştirmeden sonra hala normalleştirilmemiş değerler alıyorum - MQL5

En olumsuz 1e-05, Ne yapmalı?

dene:


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

Bir öğenin değerini daha yüksek bir sınıftan almanın bir hilesi var mı?


kod:


A sınıfı içinde B sınıfı bir öğe. B içindeyken (A sınıfından) a değerini nasıl elde edebilirsiniz?

 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) sonuç = 10

 
Igor Makanu :

2020.01.20 20:30:05,534 tst (EURUSD,H1) sonuç = 10

Bu değil. Bir nesneye bir işaretçiyi bir yönteme geçiriyorsunuz. Benim anlamım şudur:

 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 ();   
  }
Yani, A'dan B'ye bir işaretçi alabilir ve onunla çalışabilirsiniz, B'nin A'ya erişimi varken
 
Vladimir Simakov :

Bu değil. Bir nesneye bir işaretçiyi bir yönteme geçiriyorsunuz. Benim anlamım şudur:

Yani, A'dan B'ye bir işaretçi alabilir ve onunla çalışabilirsiniz, B'nin A'ya erişimi varken

kodunu gördüm

ama sorgulayıcı ilk kez "incir yaprağı yontmak" değil, nerede olduğunu anlamıyorum - ona zaten soruyu neredeyse OOP'de bir kez cevapladım))))

prensipte, A sınıfının yalnızca ileriye dönük bir tanımına ihtiyaç duyuyordu ve orada bir kez daha yonttuğu şeyi, sadece bunu biliyor)))


Not: Bir nesneye bir bağlantı iletiyorum, gelecekte istediğinizi referans olarak yapabilirsiniz, ancak prensipte böyle bir kodda hiçbir anlam yoktur, genellikle, örneğinizde yazdığınız gibi, bir sınıf işaretçisi kullanırlar. kendileri ve sonra tüm bunları kullanmak uygundur

 
Basit bir ücretsiz gösterge yazdım, ancak bir açıklama ekleyemiyorum. Tüm gereksinimlere göre dolduruyorum, "kaydet" e basıyorum - her şey ipucu, hata yazmıyor. Ama sayfayı yükledikten sonra açıklama yok...