Hatalar, hatalar, sorular - sayfa 1954

 
Andrey Barinov :
İşaretçileri döndür.
Fikir için teşekkürler. Onları tamamen unutmuştum.
 
Alexey Kozitsyn :
Fikir için teşekkürler. Onları tamamen unutmuştum.

Garip. Kodunuz bana bir derleme hatası veriyor.

object of 'B' cannot be returned, copy constructor 'B::B(const B &)' not found

GetBMember işlevinin açıklamasında (saf İngilizce'de bir kopya oluşturmaktan bahseder). En son derleyici sürümü mü?

Bu sorun kopya yapıcı B eklenerek çözüldüğünde, GetBMember yönteminden const B'yi döndürebilirsiniz.

Ardından derleyici, Reset'i döndürülen bir değişken yapma girişiminde bulunacaktır:

'Reset' - call non-const method for constant object

 
Stanislav Korotky :

Garip. Kodunuz bana bir derleme hatası veriyor.

object of 'B' cannot be returned, copy constructor 'B::B(const B &)' not found

GetBMember işlevinin açıklamasında. En son derleyici sürümü mü?

Bu sorun kopya yapıcı B eklenerek çözüldüğünde, GetBMember yönteminden const B'yi döndürebilirsiniz.

Ardından derleyici, Reset'i döndürülen bir değişken yapma girişiminde bulunacaktır:

'Reset' - call non-const method for constant object

Bu kod sadece bir tarayıcıda yazılmış bir örnektir. Derleyicinin neden hiçbir şey bildirmediğini merak ediyordum. Ama zaten anlaşıldı.

Ve benim örneğimde hiç yapıcı yok :)

 

Merhaba! 2017.08.03_18:45 GMT+3. OOP dosyasını SignalIchimoku.mqh yazdı. Fakat ayrı bir fonksiyonda LongCondition() ve ShortCondition() öncesinde basit hesaplamalar yapmanız gerektiğinde fonksiyon yazılır, derleyici 0 hata, 0 uyarı verir. Ve bu fonksiyon çalışmaz, hesaplamalar yapılmaz. Program ticaret açmaz. Kontrol ediyorum: Print() değişken değerlerini fonksiyona ekledim. Bu işlev, standart kitaplıktan standart bir dosya olan SignalStoch.mqh içindeki StateStoch(int ind), ExtStateStoch(int ind) ve CompareMaps() işlevlerine benzer. Standart dosyada her şey çalışıyor, ama benim için çalışmıyor. Niye ya? Yine mi bu "basit kurallar"? Kim bilir - söyle bana. Daha fazla ayrıntıya ihtiyacınız varsa veya herhangi bir sorunuz varsa, lütfen yazın. 18:59 GMT+3.

Dosyalar:
 

CCanvas. FillCircle daire işlevinin uygulanmasında küçük bir söve. Bu GIF'den de görebileceğiniz gibi, bir piksel daha dar :

Ve algoritma da çok mantıksız bir şekilde inşa edilmiştir, çünkü noktaların yaklaşık %30'u iki kez çekilir. Hız ortalama %30 artarken, iki kod satırını hareket ettirirseniz bunu düzeltmek kolaydır.
İşte FillCircle'ın orijinal versiyonu:

 void CCanvas::FillCircle( int x, int y, int r, const uint clr)
  {
   int f   = 1 -r;
   int dd_x= 1 ;
   int dd_y=- 2 *r;
   int dx  = 0 ;
   int dy  =r;
//--- draw
   while (dy>=dx)
     {
      LineHorizontal(x-dx,x+dx,y-dy,clr);
      LineHorizontal(x-dx,x+dx,y+dy,clr);
      LineHorizontal(x-dy,x+dy,y-dx,clr);
      LineHorizontal(x-dy,x+dy,y+dx,clr);
       //---
       if (f>= 0 )
        {
         dy--;
         dd_y+= 2 ;
         f+=dd_y;
        }
      dx++;
      dd_x+= 2 ;
      f+=dd_x;
     }
  }

Ve işte düzeltilmiş olan:

 void CCanvas::FillCircle( int x, int y, int r, const uint clr)
  {
   int f   = 1 -r;
   int dd_x= 1 ;
   int dd_y=- 2 *r;
   int dx  = 0 ;
   int dy  =r;
//--- draw
   while (dy>=dx)
     {
      LineHorizontal(x-dy- 1 ,x+dy,y-dx,clr);
      LineHorizontal(x-dy- 1 ,x+dy,y+dx,clr);
       //---
       if (f>= 0 )
        {
         LineHorizontal(x-dx- 1 ,x+dx,y-dy,clr);
         LineHorizontal(x-dx- 1 ,x+dx,y+dy,clr);
         dy--;
         dd_y+= 2 ;
         f+=dd_y;
        }
      dx++;
      dd_x+= 2 ;
      f+=dd_x;
     }
  }
 

Bekleyen sipariş hakkında silindi ( yeterli para yok )

Danışmanın doğru çalışması, çalışması sırasında hiçbir hata olmadığı zamandır.

bekleyen sipariş silinir (yeterli para yok) bir hatadır.

Sorun şu ki, kayma ile açılıyorsa, bir emir açmak için gerekli marjı takip etmek teorik olarak imkansız.

Örneğin, 1.500 fiyattan satış yapmak için bekleyen bir stop emri açmak için yeterli fon olduğunu belirledik ve hesapladık. (1.499 fiyatına zaten gitti.)

Güncel fiyat 1.501.

Bir sonraki kene ve 1.499 fiyatımız var.

Bir sipariş açma girişimi ve bir hata.

Bu nedenle, böyle bir durum başlangıçta, bu hatanın meydana gelmesinin %100 baypas edilemediği durumlarda ortaya konmuştur.

Yoksa bir şey mi kaçırıyorum?

 

Experrts klasöründeki komşu bir dizinden mqh dosyalarının nasıl çekileceğini çözemiyorum.

mqh dosyalarını Bir klasörden İki klasöre nasıl çekebilirim?

 
Vladimir Pastushak :

Experrts klasöründeki komşu bir dizinden mqh dosyalarının nasıl çekileceğini çözemiyorum.

mqh dosyalarını Bir klasörden İki klasöre nasıl çekebilirim?


çözüm bulundu. Kapsayıcıyı bağlamak istediğiniz dosya Test\Bir'deyse ve kapsayıcı Test\İki'deyse, o zaman...

Bunun gibi:

 #include " ..\Two\name.mqh ""
Görünüşe göre: ..\ - Bir'den Test'e ve İki\name.mqh'ye gidin - Test'ten İki'ye gidin ve name.mqh dosyasını seçin
 
profil "mesajlarımı" göstermiyor

ve diğer kişilerin profilleri
 
Vladimir Pastushak :

çözüm bulundu. Kapsayıcıyı bağlamak istediğiniz dosya Test\Bir'deyse ve kapsayıcı Test\İki'deyse, o zaman...

Bunun gibi:

Görünüşe göre: ..\ - Bir'den Test'e ve İki\name.mqh'ye gidin - Test'ten İki'ye gidin ve name.mqh dosyasını seçin

Bu tür yapılar da vardır:

 #include "..\..\Two\name.mqh"