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

 
Igor Makanu :

bellek tahsisi hem örnek 1 hem de örnek 2'de olacaktır

örnek 2 hem bildirim hem de başlatmadır, örnek 1 yalnızca bildirimdir

Bununla ilgili daha açık bir şekilde yardımda yazabilirsiniz. Bunu hemen duyurdum. Sınıflarımda statik hesaplamalar var ve new operatörü aracılığıyla bir nesne oluşturmam gerekmiyor.

Söyleyin bana, böyle bir şey yapmak istiyorum, bu yüzden bir sınıf bildirmek, sonra bir dizi bildirmek ve dizideki sınıfa bir işaretçi depolamak istiyorum, bunu yapmak mümkün mü değil mi?

 
Seric29 :

Söyleyin bana, böyle bir şey yapmak istiyorum, bu yüzden bir sınıf bildirmek, sonra bir dizi bildirmek ve dizideki sınıfa bir işaretçi depolamak istiyorum, bunu yapmak mümkün mü değil mi?

tekrar tekrar .... bir sınıf öncelikle bir veri türüdür, tıpkı int, double gibi...

bu türden bir veri dizisi mi istiyorsunuz? - bir dizi tanımlayın , eğer dizi dinamikse, ardından boyutu değiştirin, ardından HER ELEMENT'i gerekli verilerle başlatın - işaretçilere ihtiyacınız var, ardından sınıfa işaretçilerle başlatın, sınıf örneklerine ihtiyacınız var, o zaman dizinin her bir elemanı olmaz bir işaretçi olun, ancak nesnenin kendisi

OOP'nin özü budur, herhangi bir sınıf, her şeyden önce, kullanıcı tanımlı bir veri türüdür .... Bu konuda ne söyleyeceğimi bilmiyorum, ancak normal bir veri türü ile çalışma tekniği, ancak sınıf içine yazacağınız şey kişisel bir meseledir, ancak yeni bir örneğin başlatılması her zaman kurucunun başlatılmasıyla ve hangi kurucunun orada olduğuyla başlar - varsayılan olarak, parametreli veya parametresiz, bu, nesne başlatıldı ...... ee, ama yine de kitap okuyor, sorular burada çalışmayacak

 
Igor Makanu :

genellikle emrin açılış fiyatlarında en aşırı üst/alt emirleri belirlerler, sonra belirli bir değer eklerler ve yeni bir fiyat alırlar ve bu fiyatın ne zaman bu seviyeyi kırdığını izlerler - bir koşul ve yeni bir emir verirler veya hemen koyarlar maksimum sipariş sayısına odaklanan ve ardından bu ızgaraya eşlik eden bekleyen siparişlerden oluşan bir ızgara

Geçmediğin için teşekkürler, ama bundan bahsetmiyorum, grafikteki noktalı ızgaradan bahsediyorum.


Söyleyin lütfen, MT4 ve MT5'teki ızgara için yatay seviyeler nasıl hesaplanıyor? Sabit olmayan bir ölçekte, grafiği kaydırırken kayarlar ve MT4 ve MT5'te biraz farklı kayarlar. Belki birisi girintiler, ciltler ve diğer şeylerle tahmin etmemek için nasıl hesaplandığını biliyordur.

 
Andrey Sokolov :

Geçmediğin için teşekkürler, ama bundan bahsetmiyorum, grafikteki noktalı ızgaradan bahsediyorum.


Söyleyin lütfen, MT4 ve MT5'teki ızgara için yatay seviyeler nasıl hesaplanıyor? Sabit olmayan bir ölçekte, grafiği kaydırırken kayarlar ve MT4 ve MT5'te biraz farklı kayarlar. Belki birisi girintiler, ciltler ve diğer şeylerle tahmin etmemek için nasıl hesaplandığını biliyordur.

Ekran çözünürlüğüne bağlı olarak pencereyi eşit parçalara böler.

Hem MT4 hem de MT5'te dikey olarak 15 parçaya bölüyorum

 
Igor Makanu :

tekrar tekrar .... bir sınıf öncelikle bir veri türüdür, tıpkı int, double gibi...

bu türden bir veri dizisi mi istiyorsunuz? - bir dizi tanımlayın , eğer dizi dinamikse, ardından boyutu değiştirin, ardından HER ELEMENT'i gerekli verilerle başlatın - işaretçilere ihtiyacınız var, ardından sınıfa işaretçilerle başlatın, sınıf örneklerine ihtiyacınız var, o zaman dizinin her bir elemanı olmaz bir işaretçi olun, ancak nesnenin kendisi

OOP'nin özü budur, herhangi bir sınıf, her şeyden önce, kullanıcı tanımlı bir veri türüdür .... Bu konuda ne söyleyeceğimi bilmiyorum, ancak normal bir veri türü ile çalışma tekniği, ancak sınıf içine yazacağınız şey kişisel bir meseledir, ancak yeni bir örneğin başlatılması her zaman kurucunun başlatılmasıyla ve hangi kurucunun orada olduğuyla başlar - varsayılan olarak, parametreli veya parametresiz, bu, nesne başlatıldı ...... ee, ama yine de kitap okuyor, sorular burada çalışmayacak

Evet, bunun mümkün olmadığını anladım. bir dizi oluştururken, program türü belirtmenizi ister ve o zamandan beri farklı sınıfların işaretçisini tek bir diziye kaydetmek istiyorum, o zaman dizi mql'de farklı türlerde veya farklı türlerde olamayacağı için hiçbir şey yapamam, c++ 'da bunu yaptılar ama bu kadar karmaşık nesnelerle yapmadılar. Yani benim fikrim burada işe yaramaz.

 
Seric29 :

Evet, bunun mümkün olmadığını anladım. bir dizi oluştururken, program türü belirtmenizi ister ve o zamandan beri farklı sınıfların işaretçisini tek bir diziye kaydetmek istiyorum, o zaman dizi mql'de farklı türlerde veya farklı türlerde olamayacağı için hiçbir şey yapamam, c++ 'da bunu yaptılar ama bu kadar karmaşık nesnelerle yapmadılar. Yani benim fikrim burada işe yaramaz.

Her şey yapılıyor. Nesnelerinizi temel sınıftan devralırsınız ve temel sınıfın türüyle bir dizi oluşturursunuz. Ve tüm alt nesneler bir dizide olabilir.
 
Artyom Trishkin :
Her şey yapılıyor. Nesnelerinizi temel sınıftan devralırsınız ve temel sınıfın türüyle bir dizi oluşturursunuz. Ve tüm alt nesneler bir dizide olabilir.

Ve 2 sınıfın olduğu en basit ve en ilkel örneği gösterin, ardından kalıtım ve 2 elemanlı bir dizide her sınıfa bağlantıların nasıl yerleştirileceğini (0 birinci sınıf 1 2.)?

 
Andrey Sokolov :

Makar, neden açıkça doğru olmayan bir şey yazıyorsun? Grafiği kaydırırken, yatay ızgara çizgilerinin ofsetini ile değiştirebilirsiniz ve bunlar MT4 ve MT5'te biraz farklı kaydırılır.

hareket etmiyorum!

Yalnızca bir gösterge penceresi varsa kaydırılırlar, diğer tüm durumlarda kaydırılmazlar.

 
Seric29 :

Ve 2 sınıfın olduğu en basit ve en ilkel örneği gösterin, ardından kalıtım ve 2 elemanlı bir dizide her sınıfa bağlantıların nasıl yerleştirileceğini (0 birinci sınıf 1 2.)?

 class CBase{
protected :
   int v;
   public :
                  CBase(): v( 0 )  {            }
           int     getV()         { return (v); }
   virtual int     calc() = 0 ;
};

class A: public CBase
{
   public :
   virtual int calc() { return (--v);} //декремент 
};

class B: public CBase
{
   public :
   virtual int calc() { return (++v);} //инкремент
};

//+------------------------------------------------------------------+
void OnStart ()
{
// 2 указателя которые инициализируем экземплярами обьектов  A и B
   CBase *arr_base[ 2 ];
   arr_base[ 0 ] = new A;
   arr_base[ 1 ] = new B;
// вызовем 10 раз метод calc() для каждого обьекта   
   for ( int j= ArraySize (arr_base)- 1 ; j>= 0 ; j--)
   {
       for ( int i= 0 ; i< 10 ; i++)
         {
            arr_base[j].calc();
         }
   }
   
   Print ( "A.v = " ,arr_base[ 0 ].getV());
   Print ( "B.v = " ,arr_base[ 1 ].getV());
//удалим обьекты   
   for ( int j= ArraySize (arr_base)- 1 ; j>= 0 ; j--)
   {
       delete arr_base[j];
   }   
}
//+------------------------------------------------------------------+

2020.03.22 21:21:38.544 tst (EURUSD,H1) Av = -10

2020.03.22 21:21:38.544 tst (EURUSD,H1) sd = 10

 
Igor Makanu :

2020.03.22 21:21:38.544 tst (EURUSD,H1) Av = -10

2020.03.22 21:21:38.544 tst (EURUSD,H1) sd = 10

Teşekkürler. Ve fonksiyonlar sanal olmalı, basit olamaz, kendim deneyeceğim.