Hatalar, hatalar, sorular - sayfa 2438

 
Slava :

2. OnTesterPass'ta bir tür çerçeve okunur, OnTesterDeinit'te okuma tamamlanır. Kalan çerçeveler OnTesterDeinit'te çıkarılır

Bu özellik, geçiş başına birkaç kare varsa, sayılan geçişlerin sonuçlarıyla gerçek zamanlı çalışmaya izin vermez.

 
Burada tamamen metodolojik bir kusur var gibi görünüyor.

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

Sonucun bir Uzman Danışman olarak otomatik olarak değiştirilmesiyle stratejilerin programlanmış testi

Slava , 2013.04.10 15:04

 void OnTesterDeinit()
  {
   string         name;
   ulong          pass;
   long           id;
   double         value;
   int            handle,i;
   BalanceInTime balance[];
   MqlRates       rates[];
//---
   FrameFirst();
   FrameFilter( "" , 1 );
   while (FrameNext(pass,name,id,value, balance ))
     {
      handle= FileOpen (name+ "_" + string (id)+ "_" + IntegerToString (pass, 5 , '0' )+ ".txt" , FILE_WRITE | FILE_CSV | FILE_ANSI );
       if (handle!= INVALID_HANDLE )
        {
         for (i= 0 ; i< ArraySize (balance); i++)
             FileWrite (handle,balance[i].date, EnumToString (balance[i].entry), DoubleToString (balance[i].price, 5 ), DoubleToString (balance[i].balance, 2 ));
         FileClose (handle);
        }
     }
//---
   FrameFirst();
   FrameFilter( "" , 2 );
   while (FrameNext(pass,name,id,value, rates ))
     {
      handle= FileOpen (name+ "_" + string (id)+ "_" + IntegerToString (pass, 5 , '0' )+ ".txt" , FILE_WRITE | FILE_CSV | FILE_ANSI );
       if (handle!= INVALID_HANDLE )
        {
         for (i= 0 ; i< ArraySize (rates); i++)
             FileWrite (handle,rates[i].time, DoubleToString (rates[i].open, 5 ), DoubleToString (rates[i].high, 5 ), DoubleToString (rates[i].low, 5 ), DoubleToString (rates[i].close, 5 ), string (rates[i].tick_volume));
         FileClose (handle);
        }
     }
//---
  }
Döngüde FrameNext'ten önce, döngünün her geçişinde ArrayFree'yi çağırmak güzel olurdu.
 
Slava :

1. Evet. Fazlalık olabilir.

2. OnTesterPass'ta bir tür çerçeve okunur, OnTesterDeinit'te okuma tamamlanır. Kalan çerçeveler OnTesterDeinit'te çıkarılır

Bu, birkaç tür çerçeve gönderme ve alma yeteneği, test cihazında yeniden üretilmesi zor birkaç hatayı düzeltmemize izin verdi. Ayrıca, çerçeveler yalnızca belirli bir referans değeri ile bir fark olması durumunda iletildi.

Daha önce çerçeve kaybından bahsetmiştim, bir geçişte çok sayıda çerçeve iletilirse ve aracıyla ilgili sorunlar varsa - iletişim kesintiye uğradı - bu durumla ilgili bir şey yapılacak mı?

 
fxsaber :

Opt-formatı açılsın mı?

Evet.

Opt-file okuma kodunu yayınlamak karşılığında

 
fxsaber :

Bu özellik, geçiş başına birkaç kare varsa, sayılan geçişlerin sonuçlarıyla gerçek zamanlı çalışmaya izin vermez.

Evet.

Bu nedenle, "temel olmayan" türdeki çerçeveler, optimizasyonun sonundan sonra çıkarılmalıdır.

 
Aleksey Vyazmikin :

Daha önce çerçeve kaybından bahsetmiştim, bir geçişte çok sayıda çerçeve iletilirse ve aracıyla ilgili sorunlar varsa - iletişim kesintiye uğradı - bu durumla ilgili bir şey yapılacak mı?

Burada ne yapacaksın?

Her durumda, optimizasyon sonucu çerçevesinden daha erken ve daha hızlı ayrılacaktır. Aracı durdurulduysa (bilgisayarı kapattıysa, hizmeti durdurduysa), o zaman kesinlikle yapılacak bir şey yoktur.

Aşağıdakileri yapmayı deneyebilirsiniz: çerçeve gönderilene kadar sonucu göndermeyin. Ama ne zaman hükmedeceğimiz belli değil.

 
fxsaber :
Burada tamamen metodolojik bir kusur var gibi görünüyor.
Döngüde FrameNext'ten önce, döngünün her geçişinde ArrayFree'yi çağırmak güzel olurdu.

Hafızanın gereksiz yere yeniden tahsis edilmesini önleriz.

Bu durumda, dizi arabelleğinin bir kez tahsis edilme olasılığı yüzde 99'dur.

 
Slava :

Burada ne yapacaksın?

Her durumda, optimizasyon sonucu çerçevesinden daha erken ve daha hızlı ayrılacaktır. Aracı durdurulduysa (bilgisayarı kapattıysa, hizmeti durdurduysa), o zaman kesinlikle yapılacak bir şey yoktur.

Aşağıdakileri yapmayı deneyebilirsiniz: çerçeve gönderilene kadar sonucu göndermeyin. Ama ne zaman hükmedeceğimiz belli değil.

Belki, çerçevelerin iletimine başlamadan önce, kaç tane beklendiğini söyleyebilirsiniz ve beklenenden daha az geldiyse ve aracı kullanılamıyorsa, geçişi başka bir aracıya verin ve zaten alınan çerçevelerin üzerine yazın?

Veya her çerçevenin gövdesine toplam tutarı ve seri numarasını bu miktarda yazın ve ayrıca herkes gelmediyse yeniden optimize edin.
 
Slava :

Evet.

Opt-file okuma kodunu yayınlamak karşılığında

Kayıtla daha çok ilgileniyorum. Format belliyse okurum.

 
Aleksey Vyazmikin :

Belki, çerçevelerin iletimine başlamadan önce, kaç tane beklendiğini söyleyebilirsiniz ve beklenenden daha az geldiyse ve aracı kullanılamıyorsa, geçişi başka bir aracıya verin ve zaten alınan çerçevelerin üzerine yazın?

Veya her çerçevenin gövdesine toplam tutarı ve seri numarasını bu miktarda yazın ve ayrıca herkes gelmediyse yeniden optimize edin.

Ya her geçiş bir kare döndürmezse?

Yukarıdaki test cihazında hata yakalama örneği verdim. Çerçeveler yalnızca bazı sonuç değerleri referansla eşleşmediğinde gönderildi