Hatalar, hatalar, sorular - sayfa 2570

 
Nikolai Semko :

dize, sanki yokmuş gibi bir boşluğa sahiptir, yani. Bellek bile ayrılmamış.

Diğer türlerde bu var. Bir değişken bildirilmişse, bellek zaten tahsis edilmiştir.
Ama sonuçta, aslında, bir dize ilkel bir tür değil, bir başvuru türüdür.

Nasıl olmaz? Yığındaki dize nesnesi için bellek ayrılmıştır ve metnin kendisinin başladığı bellek adresi 0x00'dır.
 
Igor Makanu :

PrintFormat'ı nasıl kontrol edeceğimi bulamıyorum

Not

Optimizasyon modunda strateji test cihazında çalışırken PrintFormat() işlevi yürütülmez.

herhangi bir fikri olan var mı?

Ve eğer StringFormat ve ortaya çıkan dize bir dosyaya girerse? (her geçiş için, paylaşılan klasörde kendi dosyanızı oluşturun - böylece test cihazı bunların üzerine yazmaz).

 
Vladimir Simakov :
Nasıl olmaz? Yığındaki dize nesnesi için bellek ayrılmıştır ve metnin kendisinin başladığı bellek adresi 0x00'dır.

bellek yalnızca ad ve başvuru için ayrılır, ancak nesnenin kendisi için değil, çünkü o henüz orada değil. İlkel türlerde, başlatma olmadan bile değişken oluşturma sırasında belleğin tahsis edildiği böyle bir şey yoktur.
Terminolojiyle uğraşmak istemiyorum. Böylece herkes birbirini anlar.
Bütün bunlar açıktır.

 
Vladimir Karputov :

Ve eğer StringFormat ve ortaya çıkan dize bir dosyaya girerse? (her geçiş için, paylaşılan klasörde kendi dosyanızı oluşturun - böylece test cihazı bunların üzerine yazmaz).

iyi fikir deneyeceğim

Not: Optimizer'da daha hızlı çalışması için bir kez daha kodu yeniden yazdım (sonuçlar 5 saatti, şimdi 1.5 saat !!!)

şimdi yardımda printf() ile karşılaştım ve değiştirmem gereken tüm baskılarımı kontrol etmeye karar verdim .... peki, değiştirdim ve optimizasyon 22 saat sonra başladı .... Nerede hata yaptığımı buldum, ama doğal olarak hemen bunun printf() ile ilgili olduğunu düşündüm!!!

)))


Optimize edicide printf () işlevini şu şekilde kontrol etmeye çalıştım:

 int xx= 10 ;
void OnTick ()
{   printf ( "1/x = %f" , 1 /(xx--));
....

şimdiye kadar beklediğimi aldım:

2019.09.20 11:29:16.611 çekirdek 1 genetik geçiş (0, 607) 0:00:00.048'de "OnTick işlevinde (sıfır bölme, modül Uzmanları\) kritik çalışma zamanı hatası 503" hatasıyla test edildi


" PrintFormat() yürütülmedi " yazıyorsa, alması bekleniyordu.

 
Kod optimizasyonunun yürütmeyi 450 kat hızlandırmasını sağladım :).
 
Igor Makanu :

iyi fikir deneyeceğim

Not: Optimizer'da daha hızlı çalışması için bir kez daha kodu yeniden yazdım (sonuçlar 5 saatti, şimdi 1.5 saat !!!)

şimdi yardımda printf() ile karşılaştım ve değiştirmem gereken tüm baskılarımı kontrol etmeye karar verdim .... peki, değiştirdim ve optimizasyon 22 saat sonra başladı .... Nerede hata yaptığımı buldum, ama doğal olarak hemen bunun printf() ile ilgili olduğunu düşündüm!!!

)))


Optimize edicide printf () işlevini şu şekilde kontrol etmeye çalıştım:

şimdiye kadar beklediğimi aldım:

2019.09.20 11:29:16.611 çekirdek 1 genetik geçiş (0, 607) 0:00:00.048'de "OnTick işlevinde (sıfır bölme, modül Uzmanları\) kritik çalışma zamanı hatası 503" hatasıyla test edildi


" PrintFormat() yürütülmedi " yazıyorsa, alması bekleniyordu.

Aha. Ve tekli test sırasında ve optimizasyon sırasında xx değişkeninin farklı bir değerini alın.

Yalnızca printf işlev çağrısı yürütülmez.

 
Slava :

Aha. Ve tekli test sırasında ve optimizasyon sırasında xx değişkeninin farklı bir değerini alın.

Yalnızca printf işlev çağrısı yürütülmez.

Evet, kullanıcının bunu yapabileceği açık

ama sonra printf() 'in nasıl yapıldığını kontrol edin.

Not: Geliştirici yürütülmediğini söylese de, kontrol edemezsiniz

 
Igor Makanu :


ama sonra printf() 'in nasıl yapıldığını kontrol edin.

Optimizasyondan tek geçiş süresini ve tek geçiş süresini karşılaştırın

 
Slava :

çoğaltacağım:

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

Hatalar, hatalar, sorular

Alexey Kozitsyn , 2019.09.18 09:34

Platformla ilgili birkaç soru:

1. MOEX aracılığıyla VP için izin verilen bir ticaret aralığı eklenecek mi (örn. EURRUB_TOM)? Artık limitin belirlenip belirlenmeyeceğini kesin olarak bilmek mümkün değil çünkü. aralığa erişim yok (maksimum ve minimum olası fiyatlar). Lütfen Ekle.

2. Terminale ve meta düzenleyiciye her N dakikada bir otomatik kaydetme durumu eklemek mümkün müdür? Çok eksik, tk. ani bir bağlantı kesilmesi durumunda, tüm değişikliklerin kaybıyla programın başlatıldığı andaki durumuna geri dönersiniz! Çok sinir bozucu!

İlk noktada: Limitleri bilmiyorsanız normal şekilde ticaret yapmanın imkansız olduğunu anlayın! Neden bazı araçlar için bu kısıtlamaları alıyorsunuz, ancak diğerleri için almıyorsunuz!?

 

yardım yine yanlış, okudum: https://www.mql5.com/en/docs/math/mathmax

Функция возвращает максимальное из двух числовых значений.

 double    MathMax (
   double   value1,     // первое число
   double   value2       // второе число
   );

Hiçbir seçenek olmadığını görüyorum, işlev türü fmax() double , kesirli bir değeri nerede kaybedebileceğimi arıyorum, her şeyi ve her şeyi aradıktan sonra bir test yapıyorum:

 void OnStart ()
{
   long slvl = SymbolInfoInteger ( _Symbol , SYMBOL_TRADE_STOPS_LEVEL );
   int sl = 300 ;
   Print ( typename ( fmax (slvl,sl)));
}

2019.09.20 18:06:34.194 tst (EURUSD,H1) uzun

Not: Hemen cevaplıyorum, yardımı sonuna kadar okuyorum ve şu ifadeyi görüyorum: "Döndürülen değerin türü eski türe karşılık geliyor." ... IMHO, bu ciddi değil, vakaların% 99'unda, satırlar arasında gizli anlam aramak yerine, yardımdaki işlevin açıklamasına bakmak yeterlidir - sonuç türü yazılır fmin () - -> çift - bu, seçenek olmadığı anlamına gelir