Hatalar, hatalar, sorular - sayfa 1658

 
Alexey Volchanskiy :

Soru ne olursa olsun, herhangi bir işlevi çağırmak, bu durumda nType, yığındaki bir değişkene erişmekten her zaman daha yavaştır.

Bu barizlikten bağımsız olarak, soru satır içi işlevlerle ilgiliydi. Onlar. OrderType() derleme zamanı, order.type gibi bir şeyle değiştirilmedi mi?

Şahsen, ikinci durumda olduğu gibi, bu tür MQLişlev çağrılarını her zaman önbelleğe alırım.

Ölçümlerin gösterdiği gibi, bu gereksizdir.

 
Sergei Vladimirov :

Bu barizlikten bağımsız olarak, soru satır içi işlevlerle ilgiliydi. Onlar. OrderType() derleme zamanı, order.type gibi bir şeyle değiştirilmedi mi?

Ölçümlerin gösterdiği gibi, bu gereksizdir.

Dizilerin dahili uygulamasına bakılırsa, aynı ArraySize satır içi olmalıdır. Ama ben hep böyle kullanırım (ölçüm yapmadım)

Yerine

 for ( int i = 0 ; i < ArraySize (Array); i++)

yapmak

 const int Amount = ArraySize (Array);

for ( int i = 0 ; i < Amount; i++)
Performans açısından, son zamanlarda bu gerçeğe şaşırdım

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

Sıralı olarak bir enum üzerinde yineleme nasıl yapılır?

fxsaber , 2016.08.22 09:13

Statik diziye eklendi. Anahtardan neredeyse üç kat daha hızlı çalışmaya başladı! Çöpte, böyle bir anahtar . Bahşiş için teşekkürler!
Bu nedenle, derleyici optimizasyonlarına güvenmemek, ancak her zaman en küçük işlev çağrısı yoluyla ve mümkün olan ve mantıklı olan her yerde const ve static kullanarak "yardımcı olmak" daha iyi görünüyor.
 
Sergei Vladimirov :

Bu barizlikten bağımsız olarak, soru satır içi işlevlerle ilgiliydi. Onlar. OrderType() derleme zamanı, order.type gibi bir şeyle değiştirilmedi mi?

Ölçümlerin gösterdiği gibi, bu gereksizdir.

Kendileri şunları yazdı:

Sergei Vladimirov 2016.09.01 02:53 TR

Kendim kontrol ettim. İkinci kod 4 kat daha hızlı çalışır. Her şey açık, soru kaldırıldı.

 
Sergei Vladimirov :
Kendim kontrol ettim. İkinci kod 4 kat daha hızlı çalışır. Her şey açık, soru kaldırıldı.
Yalnızca profil oluşturma/hata ayıklama modunda ölçüm yapmayın. Hiç satır içi yok. Yalnızca Release-varyantı olmalıdır.
 
Inv Андрей Иващенко :

Tünaydın!

Lord memurlar, bana bir böcek yakalamaya nereden başlayacağımı söyleyin?

Çoklu para birimi danışmanı. İlk işlemden sonra test cihazı durur.

Kodunu bulamadığım bir hata veriyor.

Evet, test cihazı 2016.05.01 başlangıç tarihinden beri iyi çalışıyor. Bu tarihi değiştirirsem test cihazı durdurulur ve bir hata oluşur, log aşağıdadır.

Bana yardım et lütfen!

kendime cevap veriyorum:

Bu bir test hatasıdır. Şimdilik, EA'nın üzerinde çalıştığı tüm semboller için OnInit'e herhangi bir teknik göstergenin tutamağını eklemeniz gerekiyor.

 
Alexey Volchanskiy :

Kendileri şunları yazdı:

Sergei Vladimirov 2016.09.01 02:53 TR

Kendim kontrol ettim. İkinci kod 4 kat daha hızlı çalışır. Her şey açık, soru kaldırıldı.

Bir sonraki yorumda sayıları yazdım: Tek bir işlem için kazanç 1 nanosaniyedir. Stratejiyi iki yıllık bir süre ve birkaç bin koşu boyunca tiklerle optimize ederken, bir ns'yi kurtarmak mantıklı olabilir. Ama gerçek ticarette...
 
A100 :

1398 derlemesinde, 'EX5 yükleme başarısız' hatası kaldı (görünüşe göre bu örnekle ilgili değildi)

Sabit yapı 1400'de, benzer bir durumdaki hata şimdi 'saf sanal işlev çağrısı' olarak yeniden üretilir. yorum yok tamam

 //Script1.mq5
typedef void (*fn)();
#import "Script2.ex5"
         void g( fn );
#import
void h() /*export*/ {} //если export без комментария - нормально
void OnStart () { g( h ); }
 //Script2.mq5
#property library
typedef void (*fn)();
void g( fn f ) export { f(); }
 

Belirsizliği çözmek için :: kullanılamaz


#import "Script1.ex5"
         void g();
#import "Script2.ex5"
         void g();
#import
typedef void (*fn)();
void OnStart ()
{
        Script1::g(); //нормально
        Script2::g(); //нормально
        fn f = Script1::g; //Error
}
 
Inv Андрей Иващенко :

kendime cevap veriyorum:

Bu bir test hatasıdır. Şimdilik, EA'nın üzerinde çalıştığı tüm semboller için OnInit'e herhangi bir teknik göstergenin tutamağını eklemeniz gerekiyor.

Dahası, sorun yeni bir çubukta yalnızca ilk onay işareti alındığında ortaya çıkıyor, test cihazı olduğu gibi "sıkışıyor" ve 1 çubuk daha geride kalıyor, yani uzman çubuk olmadığını düşünüyor henüz ve görselleştirmede gerçekten görünmüyor ve birkaç saniye sonra çubuk beliriyor, M1 için test durumunda ikinci tikte doğru değer geliyor (doğru anladıysam), geliştiricilerin bu can sıkıcı durumu düzelteceğini umuyorum en kısa zamanda...

ek:

Bu anı atlatmak için şimdi yeni çubuğun ilk işaretini yapay olarak atlamanız gerektiği ortaya çıktı...

 
RTS-9.16 BCS-MetaTrader5 üzerinde CTRL+F5 kullanarak bir Uzman Danışmanda hata ayıklamak mümkün değildir. Test eden yazar
Tester  Leverage 1 : 1 set error