Hatalar, hatalar, sorular - sayfa 1747

 

NOT LABEL nesnelerinin çubukların zaman koordinatlarına görsel olarak yapıştırılması nasıl kaldırılır?

Nesnenin zaman koordinatını saniye doğruluğu ile ayarladım ve sanki bir zaman dilimi doğruluğu ile ayarlanmış gibi görselleştirildi.

soruyu çıkardım

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

Andrew Petras , 2014.11.26 13:34

Üçgen, elips, dikdörtgen, bağlantı noktaları türündeki nesneleri hareket ettirirken orantısız bir şekilde "yüzer".

Bu ayarlar etkilemez


ben yaratırım


sürüklüyorum


Bir dikdörtgen ikinci noktayı "yüzer", bir üçgen ve bir elips - üçüncü.

Bu nasıl düzeltilebilir? Kesin ölçümlere ihtiyacınız var.

"Doğru zaman ölçeği"ni seçtiğimde bahsedilen bağlama kayboluyor ve her şey olması gerektiği gibi gösteriliyor. Ancak bu parametrenin nasıl etkinleştirileceğini/devre dışı bırakılacağını MQL5'te hiçbir yerde bulamadım. sağlanmadı mı?

 

Gerçekten yardıma ihtiyacım var! Birkaç saat boyunca garip davranışların nedenini bulmaya çalıştım. Sonuç olarak, tamamen beklenmedik bir sonuçla bir danışman yazdım

#define TOSTRING(A) #A + " = " + ( string )A + "\n"

string TimeToString ( const ulong Time )
{
   return ( TimeToString ( Time / 1000 , TIME_DATE | TIME_SECONDS ) + "." + :: IntegerToString ( Time % 1000 , 3 , '0' ));
}

void OnTick ()
{
   static MqlTick PrevTick = { 0 };
  
   MqlTick NowTick;
  
   if ( SymbolInfoTick ( _Symbol , NowTick) && (PrevTick.time_msc > NowTick.time_msc))
     Alert (TOSTRING( TimeToString (PrevTick.time_msc)) + TOSTRING( TimeToString (NowTick.time_msc)));
    
  PrevTick = NowTick;  
}

Sonuç (aşağıdan yukarıya)

2016.10 . 31 11 : 55 : 51.031 Test10 (Si- 12.16 ,M1)     TimeToString (NowTick.time_msc) = 2016.10 . 31 12 : 58 : 10.698
2016.10 . 31 11 : 55 : 51.031 Test10 (Si- 12.16 ,M1)     TimeToString (PrevTick.time_msc) = 2016.10 . 31 12 : 58 : 10.702
2016.10 . 31 11 : 55 : 50.979 Test10 (Si- 12.16 ,M1)    
2016.10 . 31 11 : 55 : 50.979 Test10 (Si- 12.16 ,M1)     TimeToString (NowTick.time_msc) = 2016.10 . 31 12 : 58 : 10.654
2016.10 . 31 11 : 55 : 50.979 Test10 (Si- 12.16 ,M1)     TimeToString (PrevTick.time_msc) = 2016.10 . 31 12 : 58 : 10.656
2016.10 . 31 11 : 55 : 45.792 Test10 (Si- 12.16 ,M1)    
2016.10 . 31 11 : 55 : 45.792 Test10 (Si- 12.16 ,M1)     TimeToString (NowTick.time_msc) = 2016.10 . 31 12 : 58 : 05.458
2016.10 . 31 11 : 55 : 45.792 Test10 (Si- 12.16 ,M1)     TimeToString (PrevTick.time_msc) = 2016.10 . 31 12 : 58 : 05.464
2016.10 . 31 11 : 53 : 45.807 Test10 (Si- 12.16 ,M1)    
2016.10 . 31 11 : 53 : 45.807 Test10 (Si- 12.16 ,M1)     TimeToString (NowTick.time_msc) = 2016.10 . 31 12 : 56 : 05.474
2016.10 . 31 11 : 53 : 45.807 Test10 (Si- 12.16 ,M1)     TimeToString (PrevTick.time_msc) = 2016.10 . 31 12 : 56 : 05.476

SymbolInfoTick bazen bir öncekinden daha kısa süreli bir onay işareti verir (beklemeniz gerekir).

Bu nasıl bir saçmalık?! Yapılandırma

Network 'xxx': authorized on BCS-MetaTrader5 through Access Server #2 (ping: 112.19 ms)
Terminal        C:\Program Files\BCS Broker MetaTrader 5 Terminal
Terminal        Windows 7 Ultimate (x64 based PC), IE 09.00, Intel Core i7-2700K  @ 3.50GHz, RAM: 11327 / 16301 Mb, HDD: 4346 / 30000 Mb, GMT+02:00
Terminal        MetaTrader 5 x64 build 1455 started (MetaQuotes Software Corp.)
 
fxsaber :

Gerçekten yardıma ihtiyacım var! Birkaç saat boyunca garip davranışların nedenini bulmaya çalıştım. Sonuç olarak, tamamen beklenmedik bir sonuçla bir danışman yazdım

#define TOSTRING(A) #A + " = " + ( string )A + "\n"

string TimeToString ( const ulong Time )
{
   return ( TimeToString ( Time / 1000 , TIME_DATE | TIME_SECONDS ) + "." + :: IntegerToString ( Time % 1000 , 3 , '0' ));
}

void OnTick ()
{
   static MqlTick PrevTick = { 0 };
  
   MqlTick NowTick;
  
   if ( SymbolInfoTick ( _Symbol , NowTick) && (PrevTick.time_msc > NowTick.time_msc))
     Alert (TOSTRING( TimeToString (PrevTick.time_msc)) + TOSTRING( TimeToString (NowTick.time_msc)));
    
  PrevTick = NowTick;  
}

Sonuç (aşağıdan yukarıya)

2016.10 . 31 11 : 55 : 51.031 Test10 (Si- 12.16 ,M1)     TimeToString (NowTick.time_msc) = 2016.10 . 31 12 : 58 : 10.698
2016.10 . 31 11 : 55 : 51.031 Test10 (Si- 12.16 ,M1)     TimeToString (PrevTick.time_msc) = 2016.10 . 31 12 : 58 : 10.702
2016.10 . 31 11 : 55 : 50.979 Test10 (Si- 12.16 ,M1)    
2016.10 . 31 11 : 55 : 50.979 Test10 (Si- 12.16 ,M1)     TimeToString (NowTick.time_msc) = 2016.10 . 31 12 : 58 : 10.654
2016.10 . 31 11 : 55 : 50.979 Test10 (Si- 12.16 ,M1)     TimeToString (PrevTick.time_msc) = 2016.10 . 31 12 : 58 : 10.656
2016.10 . 31 11 : 55 : 45.792 Test10 (Si- 12.16 ,M1)    
2016.10 . 31 11 : 55 : 45.792 Test10 (Si- 12.16 ,M1)     TimeToString (NowTick.time_msc) = 2016.10 . 31 12 : 58 : 05.458
2016.10 . 31 11 : 55 : 45.792 Test10 (Si- 12.16 ,M1)     TimeToString (PrevTick.time_msc) = 2016.10 . 31 12 : 58 : 05.464
2016.10 . 31 11 : 53 : 45.807 Test10 (Si- 12.16 ,M1)    
2016.10 . 31 11 : 53 : 45.807 Test10 (Si- 12.16 ,M1)     TimeToString (NowTick.time_msc) = 2016.10 . 31 12 : 56 : 05.474
2016.10 . 31 11 : 53 : 45.807 Test10 (Si- 12.16 ,M1)     TimeToString (PrevTick.time_msc) = 2016.10 . 31 12 : 56 : 05.476

SymbolInfoTick bazen bir öncekinden daha kısa süreli bir onay işareti verir (beklemeniz gerekir).

Bu nasıl bir saçmalık?! Yapılandırma

Network 'xxx': authorized on BCS-MetaTrader5 through Access Server #2 (ping: 112.19 ms)
Terminal        C:\Program Files\BCS Broker MetaTrader 5 Terminal
Terminal        Windows 7 Ultimate (x64 based PC), IE 09.00, Intel Core i7-2700K  @ 3.50GHz, RAM: 11327 / 16301 Mb, HDD: 4346 / 30000 Mb, GMT+02:00
Terminal        MetaTrader 5 x64 build 1455 started (MetaQuotes Software Corp.)
Evet, burada yardıma ihtiyacı olan tek kişi sen değilsin. Birkaç haftadır tiki'yi normal bir şekilde mum haline getirmeye çalışıyorum. Yani... tikler hala nemli. SD'de Uygulama #1598238
 

sihirli dize

#include "key.mqh"
virtual int f( const ABCDEFGHIJK ) const { return ABCDEFGHIJK; }

Eylemlerin sırası (katı)

  1. Ekli dosyaları bir klasöre yerleştirin. MetaEditor'da fare ile sonraki
  2. Dosya->Aç->Test.mqh->Aç düğmesini seçin
  3. Düzenle->Bul ve Değiştir->Değiştir->Bul: ve 'Şununla değiştir:' alanlarını aşağıda gösterildiği gibi doldurun->Tümünü Değiştir düğmesi

Sonuç:

Buradaki ayarlar: https://www.mql5.com/en/forum/1111/page1127#comment_795376

Dosyalar:
Test.mqh  1 kb
key.mqh  1 kb
 
Alexey Kozitsyn :
Evet, burada yardıma ihtiyacı olan tek kişi sen değilsin. Birkaç haftadır tiki'yi normal bir şekilde mum haline getirmeye çalışıyorum. Yani... tikler hala nemli. SD'de Uygulama #1598238
Tiki normalde bir muma dönüşür.
 
fxsaber :
Tiki normalde bir muma dönüşür.
Gerçekten? Ve boyutları aynı mı? ve kontrol ettin mi? Günlükleri de gösterebilir misin?
 
Alexey Kozitsyn :
Gerçekten? Ve boyutları aynı mı? ve kontrol ettin mi? Günlükleri de gösterebilir misin?

Kontrol yaptı - kod tabanına bakın. Mumların hacimleri ile hesaplananlar arasındaki tutarsızlık hakkında hiçbir şey düşünmeyin, çünkü. orada bir çubuğa ya da diğerine çarpabilen bir sınır işaretinden bahsediyoruz. Ve bu önemli değil. Ayrıca forumda işlem hacmi göstergesini yayınladım. Öyleyse mesele yok.

Sizin durumunuzda, çok sıkıcıysanız, çubuk oluşturma mekanizmasında hata bulabilirsiniz, ancak CopyTicks ile değil.

 

Derleme sırasında hata

class A {
protected :
         void f(   int ) {} //(*)
};
class B : public A {
public :
         void f( uint ) {}
};
void OnStart ()
{
        B b;
        b.f( 1 ); //'A::f' - cannot call protected member function
}

Ve (*) çizgisini kaldırırsanız, her şey yolunda demektir. B::f(uint) size neden uymadı? Duruma diğer taraftan bakmak

class A {
public :
         void f(   int ) {} //(**)
};
class B : public A {
public :
         void f( uint ) {}
};

daha sonra uygun bir fonksiyon bulmak için MQL algoritmasının temel eksiklikleri ortaya çıkar. 2. örnekte henüz string (**) yok - B::f(uint) çağrılacak. (**) dizesi görünür görünmez A::f(int) çağrılır. Bu nedenle, temel sınıftaki değişiklikler nihai sonucu etkiler - C++'da, nihai sonucun kararlılığını garanti eden temel sınıftaki değişikliklerden bağımsız olarak her zaman B::f(uint) çağrılır.

MQL'de, A sınıfının geliştiricisinin yeni bir public\protected\private işlevi bulduğu ortaya çıktı ve bu nedenle, B sınıfı kullanıcısı kodu derlemeyi bıraktı ve/veya daha kritik olarak, nihai sonuç değişti

 
A100 :

sihirli dize

#include "key.mqh"
virtual int f( const ABCDEFGHIJK ) const { return ABCDEFGHIJK; }

Eylemlerin sırası (katı)

  1. Ekli dosyaları bir klasöre yerleştirin. MetaEditor'da fare ile sonraki
  2. Dosya->Aç->Test.mqh->Aç düğmesini seçin
  3. Düzenle->Bul ve Değiştir->Değiştir->Bul: ve 'Şununla değiştir:' alanlarını aşağıda gösterildiği gibi doldurun->Tümünü Değiştir düğmesi

Sonuç:

Buradaki ayarlar: https://www.mql5.com/en/forum/1111/page1127#comment_795376

Mesajınız için teşekkürler, bir sonraki güncellemede hata düzeltilecektir.
 
A100 :

Derleme sırasında hata

class A {
protected :
         void f(   int ) {} //(*)
};
class B : public A {
public :
         void f( uint ) {}
};
void OnStart ()
{
        B b;
        b.f( 1 ); //'A::f' - cannot call protected member function
}

Ve (*) çizgisini kaldırırsanız, her şey yolunda demektir. B::f(uint) size neden uymadı? Duruma diğer taraftan bakmak

class A {
public :
         void f(   int ) {} //(**)
};
class B : public A {
public :
         void f( uint ) {}
};

daha sonra uygun bir fonksiyon bulmak için MQL algoritmasının temel eksiklikleri ortaya çıkar. 2. örnekte henüz string (**) yok - B::f(uint) çağrılacak. (**) dizesi görünür görünmez A::f(int) çağrılır. Bu nedenle, temel sınıftaki değişiklikler nihai sonucu etkiler - C++'da, nihai sonucun kararlılığını garanti eden temel sınıftaki değişikliklerden bağımsız olarak her zaman B::f(uint) çağrılır.

MQL'de, A sınıfının geliştiricisinin yeni bir public\protected\private işlevi bulduğu ortaya çıktı ve bu nedenle, B sınıfı kullanıcısı kodu derlemeyi bıraktı ve/veya daha kritik olarak, nihai sonuç değişti

Sadece bf( 1 ) çağrısındaki "1" sabiti bir int olarak yorumlanır. Açık bir oyuncu kadrosu yapın ve işe yarayacaktır:

b.f( ( uint ) 1 );