Hatalar, hatalar, sorular - sayfa 2749

 
Roman :

Bir önceki sayfada fxsaber ölçüler vermişti.
Bunun neden olduğunu açıkladım.
Her zaman statik veya dinamik olarak bellek ayırın.

Ölçüler tam olarak nedir? Büyük bir masadan bahsediyorsanız, ekranda sadece sol kısım görünür, gerisi kesilir. Yani içinde ne olduğunu bilmiyorum.

Ama koda bakılırsa, bu makro orada karşılaştırılırsa

GetCurrentTick2(Tick, !i)

o zaman 100 yineleme başına yalnızca birişlev çağrısı vardır. Ve ilk makroda - her yinelemede bir çağrı. Yani bu bir tür saçmalık.

 
Alexey Navoykov :

Ölçüler tam olarak nedir? Büyük bir masadan bahsediyorsanız, ekranda sadece sol kısım görünür, gerisi kesilir. Yani içinde ne olduğunu bilmiyorum.

Ama koda bakılırsa, bu makro orada karşılaştırılırsa

o zaman 100 yineleme başına yalnızca birişlev çağrısı vardır. Ve ilk makroda - her yinelemede bir çağrı. Yani bu bir tür saçmalık.

Derleyici her şeye gücü yeten değildir, bazen ona doğru kodla katılmanız ve ona yardım etmeniz gerekir))

 
Sergey Dzyublik :
ME hata ayıklayıcısındaki (derleme 2370) - StepInto (F11) ve ayarlanan kesme noktalarındaki bir kusur çalışmıyor.
Sorun şu ki, işlevi en az bir kez çağırmak için StepOver eylemini (F10) kullanırsanız, gelecekte bu işlevin hatalarını ayıklamak artık mümkün olmayacaktır.

Oynatma adımları:
1) Kodu hata ayıklama modunda çalıştırın;
2) Kesme noktasına ulaştıktan sonra, StepOver'ı (F10) iki kez yürütün;

Hepsi bu - artık Artış işlevine "girmenin" bir yolu yok, manuel olarak ayarlanan tüm kesme noktaları çalışmaz ve StepInto (F11) işlemi yerine StepOver (F10) gerçekten yürütülür.


Mesaj için teşekkürler.

düzeltildi

 
Roman :

Derleyici her şeye kadir değildir, bazen katılmanız gerekir))

Ne? Tasarımınızın daha hızlı çalıştığını iddia ettiniz ama daha hızlı çalışmıyor. Bu kodda çağrılma olasılığı sadece 100 kat daha azdır.
 
Alexey Navoykov :

o zaman 100 yineleme başına yalnızca birişlev çağrısı vardır. Ve ilk makroda - her yinelemede bir çağrı. Yani bu bir tür saçmalık.

Test, doğrulukla hata bulamazsanız, ancak burada gerekli değildir - artı veya eksi normaldir.
Karşılaştırıldı: SymbolInfoTick'i 100 kez çağırmak VS SymbolInfoTick'i 1 kez çağırmak, "manuel" önbelleğin 99 katı geri döndürmek.
Fonksiyon tek geçişte birden fazla çağrılacaksa, mevcut sembolün standart SymbolInfoTick fonksiyonunu kullanmasının ne kadar karlı olmadığı gösterilmiştir.
Soruna olası bir çözüm olarak, geliştiriciler önceden tanımlanmış bir değişken sunmaya davet edilir:

 const MqlTick _Tick; // Текущий _Symbol-тик.



Sadece fxsaber , şeytanın bacağını kıracağına dair hiçbir şey açıklamadan her şeyi direklere dağıttı.

 
Alexey Navoykov :

o zaman 100 yineleme başına yalnızca birişlev çağrısı vardır. Ve ilk makroda - her yinelemede bir çağrı. Yani bu bir tür saçmalık.

onun örneği, bir MQL programının farklı bölümlerindeki teklif/satış verilerinin özel kullanımıdır, SymbolInfoTick()'i ne kadar sık çağırırsanız, test performansı o kadar az olur

Profil oluşturucumda TimeCurrent()'in performansı hakkında tartışmalı bölümler buldum, farklı şekillerde denedim, sonra tamamen terk ettim,

Değişkenlerin küresel görünürlüğünü nadiren kullanırım, ancak test cihazında her şeyin "uçması" için şunu yazarım:

 MqlTick Tick = { 0 };
#define Ask Tick.ask
#define Bid Tick.bid
#define TimeCurrent_ Tick.time
//+------------------------------------------------------------------+
void OnTick ()
{
   SymbolInfoTick ( _Symbol ,Tick);
  ....
}
 
Alexey Navoykov :
Ne? Tasarımınızın daha hızlı çalıştığını iddia ettiniz ama daha hızlı çalışmıyor. Bu kodda çağrılma olasılığı sadece 100 kat daha azdır.

Bu benim tasarımım değil ve o örnekten de anladığım kadarıyla test için makrolar tek tek çağrıldı.
Ve geçiş raporu, kesilmiş olmasına rağmen birlikte gösterilir, ancak yürütme süresi görünür.

 
Sergey Dzyublik :

Test, doğrulukla hata bulamazsanız, ancak burada gerekli değildir - artı veya eksi normaldir.
Karşılaştırıldı: SymbolInfoTick'i 100 kez çağırmak VS SymbolInfoTick'i 1 kez çağırmak, "manuel" önbelleğin 99 katı geri döndürmek.

Evet, önbelleği anlıyorum. Sadece bu Romalı, hafızanın tahsisi hakkında bir şeyler ovuşturdu ... Trol konusunda haklıymışsın gibi görünüyor)

 
Alexey Navoykov :

Evet, önbelleği anlıyorum. Sadece bu Romalı, hafızanın tahsisi hakkında bir şeyler ovuşturdu ... Trol konusunda haklıymışsın gibi görünüyor)

Ve önbelleğin nereye tahsis edildiğini düşünüyorsunuz? Kaybedenler.

 
Sergey Dzyublik :

Test, doğrulukla hata bulamazsanız, ancak burada gerekli değildir - artı veya eksi normaldir.
Karşılaştırıldı: SymbolInfoTick'i 100 kez çağırmak VS SymbolInfoTick'i 1 kez çağırmak, "manuel" önbelleğin 99 katı geri döndürmek.
Fonksiyon tek geçişte birden fazla çağrılacaksa, mevcut sembolün standart SymbolInfoTick fonksiyonunu kullanmasının ne kadar karlı olmadığı gösterilmiştir.
Soruna olası bir çözüm olarak, geliştiriciler önceden tanımlanmış bir değişken sunmaya davet edilir:

Beni %100 anladın.

Sadece fxsaber , şeytanın bacağını kıracağına dair hiçbir şey açıklamadan her şeyi direklere dağıttı.

Üzgünüm, iyi ifade edemiyorum.