Hatalar, hatalar, sorular - sayfa 2708

 

Pazardaki ürünlerin otomatik olarak doğrulanmasına bazı özellikler eklemeyi öneriyorum. Doğrulayıcı tarafından bildirilen yaygın hatalara ek olarak, gerçekleştirilen doğrulama bağlamı ve günlükler kesinlikle gereklidir. Özellikle, "test cihazı çok uzun zaman alıyor" hatası nedeniyle birkaç yıldır bir göstergeyi güncelleyemiyorum. İlk sürüm "insan" moderasyonuyla yüklendi ve herhangi bir şikayete neden olmadı. Otomatik doğrulayıcının bu hatayı verme kriterleri tamamen belirsizdir.

İşte çok özel bir soru: "Test cihazının çok uzun sürmesi" oluşmaması için ürün hangi donanımda ne kadar süre boyunca kaç tik sağlamalıdır?

Gösterge, MapReduce algoritması tarafından kenelerin işlenmesi için tasarlanmıştır, tamsayı hesaplamaları kullanılır, bu nedenle algoritmanın kendisi atılmadığı sürece orada sıkıştırılacak hiçbir şey yoktur. Profil oluşturucu kullanıldı, belirli bir süre ile yeni onay işaretlerinin dizisini yeniden hesaplamak için kısma eklendi. Boşuna.

Bilgisayarımda bir yıl birkaç dakika içinde test edilir. Otomatik doğrulayıcıda gerçekte ne olduğunu ve neden yavaşladığını bilmek şu anda imkansız.

Uygun ürün desteğinin olmaması hem kullanıcılar hem de MQ için bir sorundur - uygulamayı etkiler.

 

Böyle mi olması gerekiyor?

 class cA
  {
public :
   int                Add( int i1, int i2)
     {
       return i1+i2;
     };
                     cA()
     {
       Print ( "+++" );
     };
                    ~cA()
     {
       Print ( "---" );
     };
  };

void OnStart ()
  {
   cA a=cA();
  }

Kayıt:

 2020.04 . 17 18 : 39 : 32.996 test3 (EURUSD,M1)       +++
2020.04 . 17 18 : 39 : 32.996 test3 (EURUSD,M1)       +++
2020.04 . 17 18 : 39 : 32.996 test3 (EURUSD,M1)       ---
2020.04 . 17 18 : 39 : 32.996 test3 (EURUSD,M1)       ---

Yapıcı ve yıkıcının çift çağrısı, sanki iki nesne yaratılmış ve silinmiş gibi. Yeni ve sil kullanırken, her şey yolunda.

2380 oluşturun.

 
Aliaksandr Hryshyn :

sanki iki nesne yaratılıyor ve siliniyor.

Ve orada.

 
fxsaber :

Ve orada.

Ve nesnem ikinci olarak yaratıldı:

 class cA
  {
public :
   int                my_i;
   int                Add( int i1, int i2)
     {
       return i1+i2;
     };
                     cA()
     {
       static int i= 0 ;
      my_i=i;
      i++;
       Print ( "+++" );
     };
                    ~cA()
     {
       Print ( "---" );
     };
  };

void OnStart ()
  {
   cA a=cA();
   Print (a.my_i);
  }
 2020.04 . 17 18 : 47 : 34.771 test3 (EURUSD,M1)       +++
2020.04 . 17 18 : 47 : 34.771 test3 (EURUSD,M1)       +++
2020.04 . 17 18 : 47 : 34.771 test3 (EURUSD,M1)       ---
2020.04 . 17 18 : 47 : 34.771 test3 (EURUSD,M1)       1
2020.04 . 17 18 : 47 : 34.771 test3 (EURUSD,M1)       ---
 
Aliaksandr Hryshyn :

Ve nesnem ikinci olarak yaratıldı:

İlk nesne.

cA a= cA() ;


İkinci nesne.

 cA a =cA();
 

O zaman şöyle olmalı:

cA a;
Print (a.my_i);
 
Stanislav Korotky :

Bilgisayarımda bir yıl birkaç dakika içinde test edilir. Otomatik doğrulayıcıda gerçekte ne olduğunu ve neden yavaşladığını bilmek şu anda imkansız.

Birkaç dakika içinde bir yıl çok fazla. Herhangi birinin beklemesi olası değildir (eğer bir danışman olsaydı).
Görsel olarak iyi görünüyor mu? Test cihazını izleyerek bir şey anlamak mümkün mü?

Pazar için bir saplama ekleyin - doğruluk pahasına hesaplamaları hızlandırın (mümkünse) veya hatta "benzer bir şey" çizin. Ürün açıkça spesifiktir ve ihtiyacı olan istediği parametreyi değiştirebilecektir.

 
Andrey Khatimlianskii :

Birkaç dakika içinde bir yıl çok fazla. Herhangi birinin beklemesi pek olası değildir (eğer bir danışman olsaydı).
Görsel olarak iyi görünüyor mu? Test cihazını izleyerek bir şey anlamak mümkün mü?

Pazar için bir saplama ekleyin - doğruluk pahasına hesaplamaları hızlandırın (mümkünse) veya hatta "benzer bir şey" çizin. Ürün açıkça spesifiktir ve ihtiyacı olan istediği parametreyi değiştirebilecektir.

Benim düşünceme göre, kene modunda birkaç dakika içinde bir yıl normaldir. Daha önceki şampiyonalarda 15-20 dakikalık bir limit vardı (tam hatırlamıyorum). Saplama zaten eklendi (zaman kısma). Keneleri atlayabilirsiniz, ancak daha sonra ürünün anlamı kaybolur. Özgüllük göreceli bir kavramdır: Pek çok kişinin tık tık modunda çalıştığını biliyorum (ve herkesin fiyatları ve/veya hacimleri kontrol eden bir eklentisi vardır). Ve daha kesin kriterlere sahip olmak ve ayrıca otomatik doğrulayıcıdan gelen geri bildirimlere sahip olmak daha da önemlidir (forumda "terminaliniz çalışmıyor" dersek, MQ için bizden ne istiyorlar? - bize günlükleri ve çoğaltma koşullarını verin; ve burada bize ürünümüzün çalışmadığını söyledikleri söylendi, ancak hiçbir özellik yok). Ve daha doğrusu - ürünün özelliklerini dikkate almak. Sonuçta, ürünün toplam yürütme süresi sadece MQL kodunun zamanı değil, aynı zamanda terminalin kendisinin zamanıdır. CopyTicksRange gibi daha pahalı aramalar var. Bu genel giderler artık MQL ürünündeki kusurlar olarak dikkate alınmaktadır.

not. Göstergeler söz konusu olduğunda, keneler tarafından değil, tampon sayısı ile çalışmak daha kritik görünmektedir (görevin özelliklerinden dolayı birçoğu vardır). Sayılarını test cihazı için sınırlamaya çalışacağım (bu, ürünü karmaşıklaştırır ve kısma gibi dış koşullar tarafından dayatılan diğer bayraklar gibi hatalarla doludur). Bu, otomatik doğrulayıcının performans puanını çeşitli şekillerde değiştirme ihtiyacını bir kez daha kanıtlıyor.

P.P.S. Son gün için keneler talep ediyorum ve test cihazı bunları 2 yıl boyunca yüklüyor - ve bu da zaman alıyor.

 
Stanislav Korotky :

P.P.S. Son gün için keneler istiyorum ve test cihazı bunları 2 yıl boyunca yüklüyor

Nedense bu davranış resmidir.

Muhtemelen, gösterge kullanmayan, çubuklara atıfta bulunmayan Uzman Danışmanlar için hiç çubuk oluşturmamak mümkün olacaktır.

Örneğin, yalnızca SymbolInfoTick varsa - çubuk oluşturmayın, kopyalar için geçmişi saklamayın.


Bu baro-philia, Tester gibi ciddi bir algoritmik ticaret aracı için hiç de net değil. Ama MO estetisleri bile bu kaktüsü yemeye devam ettiği için muhtemelen bir anlayış olmayacaktır.

 

MQL'de neden kendi fabrika yönteminizden korumalı bir kurucu çağıramıyorsunuz?

 class A1
{
   protected :
    A1( const bool x = false ){}
   public :  
     static A1 *creator()
    {
       return new A1( true );
    }
};

void OnStart ()
{
  A1 *a = A1::creator();
}

Kod, "'A1::A1' - korumalı üye işlevine erişilemiyor" derleme hatası veriyor ve yapıcının çağrıldığı yeri değil, sınıf açıklamasının başladığı satırı gösteriyor (yani, problem şu).

Ancak sonuç olarak, hiçbir hata olmaması gerektiğidir. C++ sorunsuz derlenir.