MetaTrader 5 Strateji Test Cihazı: Hatalar, Hatalar, İyileştirme Önerileri - sayfa 47

 
traveller00 :

2280 oluşturun. Borsa, vadeli işlem piyasası. Tüm geçmiş yüklenir, ancak testler çevrimdışı yapılır. iBarShift bir şekilde göstergelerde garip bir şekilde çalışıyor. Ve aynı kod normalde bir komut dosyasında da çalışır. Bir hata mı yoksa bir şeyi mi gözden kaçırıyorum?

Böyle bir kod var. Aslında market saatindeki tüm sembollerin üzerinden geçer ve iBarShift'i çeker. Bir komut dosyasında tam olarak aynı kod normal olarak yerine getirir. Göstergede, geçerli olan (hangi grafikte başlatıldığı) dışındaki tüm semboller için geçmiş olmadığı hatasıyla -1 döndürür. Ve ikinci seferde, görünüşe göre hikayeyi yüklüyor ve zaten normal şekilde gösteriyor.

göstergedeki verilerin mevcudiyeti garanti edilmez, bu nedenle makbuzlarının başarısını kontrol etmek gerekir. Başarısız olursa, OnCalculate'de yeniden deneyin. OnInit'te verilere erişmek kötü bir fikirdir.


#property indicator_separate_window

void OnInit ()
{
}

int OnCalculate ( const int rates_total, const int prev_calculated, const datetime & time[], const double & open[], const double & high[],
   const double & low[], const double & close[], const long & tick_volume[], const long & volume[], const int & spread[])
{
   static bool printed = false ;
  
   if ( !printed ){
    printed = TryToPrint();
  }
   return 0 ;
}

bool TryToPrint(){


   datetime Time[];
   ArraySetAsSeries (Time, true );
   Print ("try");
   if ( CopyTime ( _Symbol , _Period , 0 , 1 ,Time) != 1 ) return false ;

   int Shift= iBarShift ( _Symbol , _Period ,Time[ 0 ]);
  
   bool fail = false ;
   if ( Shift < 0 )fail = true ; 
   string toprint = " Symbol ="+ _Symbol +", Shift="+( string )Shift;
  
  

   for ( int i= 0 ;i!= SymbolsTotal ( true );++i)
  {
     const string SymbName= SymbolName (i, true );
    Shift= iBarShift (SymbName, _Period ,Time[ 0 ]);
    
     if ( Shift < 0 )fail = true ;
    toprint = toprint + "\r\n" + " Symbol ="+SymbName+", Shift="+( string )Shift;

  }
   if ( !fail ) Print ( toprint );
  
   return !fail;
}
 

Sunucu adı, önbellek girişlerinde her zaman görüntülenmez.


 
tst formatında, işlemlerin/emirlerin zamanı sadece saniye cinsindendir (tarih saat). Milisaniye yok.
 
Böyle bir Uzman Danışman için tst dosyasının oluşturulmadığı doğru mu?
 input int i = 0 ;

void OnInit () {}


Tek geçişli bir önbellek oluşturmak için hangi koşulun karşılanması gerekir?

 
fxsaber :
Böyle bir Uzman Danışman için tst dosyasının oluşturulmadığı doğru mu?


Tek geçişli bir önbellek oluşturmak için hangi koşulun karşılanması gerekir?

Evet doğru.

Anlaşma yoksa, tst dosyası kaydedilmez

 
Slava :

Evet doğru.

İşlem yoksa tst dosyası kaydedilmez.

Teşekkür ederim.

 
Sorumu çoğaltacağım (görünüşe göre kayıp):

Geliştiriciler, size bir soru. Genetik algoritmanın parametrelerini özelleştirmek mümkün müdür? Örneğin, durma ve mutasyon kriterlerini belirlemek için mi?

Durmanın uç noktalara varmadan gerçekleştiği gerçeğiyle sık sık karşılaşıyorum.

Ayrıca bir soru. Simüle tavlama gibi başka yöntemler de uygulayacak mısınız?

 
Herkese merhaba, MT4'ten MT5'e geçtim ve set dosyalarını test cihazına nasıl kaydedeceğimi anlamıyorum. Lütfen bana söyle. Yalnızca ini'nin nasıl kaydedileceğini ve seçileceğini bulabilir
 

Robotu test cihazında çalıştırıyorum. Belirli bir sembol üzerinde ticaret yapıyorum. OnTimer ile giriyorum, SymbolInfoTick'ten fiyat teklifi alıyorum.

Bu nedenle, herhangi bir nedenle, farklı semboller üzerinde çalışırsanız (aynı sembol üzerinde işlem yapıyorsanız), sonuçlar birbirinden önemli ölçüde farklılık gösterir. Birisi gelebilir mi? Şimdi bu davranışı daha ayrıntılı olarak inceliyorum.

not. Gecikmeden gerçek yapmaya ve mükemmel uygulamaya dayalı her onay
 

Sorunun ne olduğu anlaşıldı. Kimin umurunda - kaynakları kurtarmak için, TimeCurrent tarafından OnTimer'da zamanı kontrol ediyorum ve son güncellemeden bu yana değişmediyse, hiçbir şey yapılması gerekmiyor. Alıntı yok - durum aynı. İşlem seanslarını takip ederseniz, bu çok pahalı bir işlemdir.

Her şey birçok karakter için iyi çalışıyor. Ancak sadece iki tane olduğunda, her şey gelen tekliflere ve pozisyon açma zamanına bağlıdır ve diğer şeyler değişmeye başlar. Sonuç olarak, strateji test cihazındaki sonuçlar farklıdır.

not. Genel olarak SymbolInfoTick üzerinden sembollerin durumlarını ayrı ayrı kontrol edeceğim.