Hatalar, hatalar, sorular - sayfa 1747
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
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
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 (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
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.)
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
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 (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
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.)
sihirli dize
virtual int f( const ABCDEFGHIJK ) const { return ABCDEFGHIJK; }
Eylemlerin sırası (katı)
Sonuç:
Buradaki ayarlar: https://www.mql5.com/en/forum/1111/page1127#comment_795376
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.
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
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
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
sihirli dize
virtual int f( const ABCDEFGHIJK ) const { return ABCDEFGHIJK; }
Eylemlerin sırası (katı)
Sonuç:
Buradaki ayarlar: https://www.mql5.com/en/forum/1111/page1127#comment_795376
Derleme sırasında hata
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
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 );