Evet, neler oluyor??? - sayfa 2

 

Başka bir şakam var. EA yerleri her saat başında satış yapar. Euro için her şey düzgün çalışıyor, ancak özel sembol için nasıl olduğu belli değil.

Görsel modda mumların bazıları eksik


Dosyalar:
MySymbol.mq5  4 kb
Test.mq5  2 kb
 
Сергей Таболин :

Bu bir kez daha test edici/iyileştirici ile ilgili ...

Optimizasyon ve tekli test sonuçlarında tutarsızlıklar fark ettim. Terminali yeniden başlattı, parametrelerin ayarlarını değiştirdi (emin olmak için). Optimizasyon başladı.

Tek bir test başlattı...

Evet, nasıl yani? Bu saçmalık nereden geliyor?

Ayrıca vardı. Optimizasyon geçişleri arasında, değişkenler her zaman tek bir geçişten önceki gibi başlatılmaz veya tümü başlatılmaz. Her şeyi başlatmaya başladım ve sorun ortadan kalktı.

Bir kez daha minimum adımlarda iSAR nedeniyle benzer bir sorun vardı.

 

Bir müşterinin bir sorunu vardı. Uzman Danışmanı test edildi ve test cihazında sonuçlar verdi ve optimize edicide tüm çalıştırmalar sıfırdı.

Uzman Danışmanının anlaşma açma algoritması, duruma göre değişen butondan yazının okunmasına dayanıyordu. Ve optimizasyon sırasında hiçbir grafik nesnesi oluşturulmadığından, bu sorgu her zaman başarısız oldu.

Uzman Danışmanınızın algoritması grafik nesnelerin verilerini kullanıyorsa, test ve optimizasyon arasında da önemli farklılıklar olabilir.

 
Сергей Таболин :


Neye benziyor? Ve orada ve aynısı var. Nasıl bir fark olabilir? Ayrıca, hemen hemen tüm verilerin başlatılması bir döngüde gerçekleşir. Ve orada bir şey başlatılmazsa - hatalı bir çıktı.


Mümkünse - daha ayrıntılı olarak. Döngüde başlatmayı görmek istiyorum. Torunuma göstereceğim.

 
Bunu asla yapmamak için.
 
Алексей Тарабанов :

Mümkünse - daha ayrıntılı olarak. Döngüde başlatmayı görmek istiyorum. Torunuma göstereceğim.

 int sum = 0 ;

for ()

  sum = 0 ;

   for ()

    sum += ....

ama böylesi daha iyi, yoksa torun anlamını anlamayacak:

 int sum;

for ()

  sum = 0 ;

   for ()

    sum += ....
 
Andrey Barinov :
Kodda bir şeyi başlatmayı unutmak yeterlidir ve bir fark olacaktır. Kodu kontrol edin.

Her şeyi tekrar kontrol ettim - tüm değişkenler başlatıldı.

@Andrey Kaunov , teşekkürler, ama hiç grafik nesne kullanmıyorum.

Alexey Tarabanov :

Mümkünse - daha ayrıntılı olarak. Döngüde başlatmayı görmek istiyorum. Torunuma göstereceğim.

Evet, Tanrı aşkına))) Biraz abarttım, hepsi değil, elbette, ama sadece gösterge kolları)))

 int       ind_handle[];

int OnInit ()
{
...........
   if (!nc_getHandles()) return ( INIT_FAILED );
...........
}
//+------------------------------------------------------------------+
bool   nc_getHandles( void )
{
   ind_nums = ArraySize (indicators);
   ArrayResize (ind_handle, ind_nums);

   for ( int i = 0 ; i < ind_nums; i++)
   {
      ind_handle[i]  = iCustom ( Symbol (), Period (), folder+indicators[i]);
       if (ind_handle[i] == INVALID_HANDLE )
      {
         Print ( "Ошибка получения хандла индикатора >>> " +indicators[i]);
         writeErrorFile(program_name,program_version, "Ошибка получения хандла индикатора >>> " +indicators[i]);
         return ( false );
      }
   }
   Print ( "Получены хэндлы всех индикаторов >> " , ArraySize (indicators));
//-----------------------------------
   return ( true );
}
 

Şimdi konuya.

Tüm günlükleri ve önbellekleri tamamen temizledi.

Editörü başlattı, danışmanı yeniden derledi.

Terminali açtı.

Genetik optimizasyonu başlattı.

Bekleriz...


Solo bir test yapıyorum.

Aktarılan parametrelerin doğruluğunu kontrol ediyorum - doğru aktarılıyorlar.

Backtest sekmesini açıyorum.

Kar - 697 / 247

İşlemler - 44 / 56

Şimdi günlükleri toplayacağım ve ekleyeceğim.

Dosyalar:
mt5logs.zip  288 kb
 

Koda bir göz atın ve optimizasyon içindeki ve tek bir geçiş yapan kişiyle olan anlaşmalara ne olduğunu anlamaya çalışın.

Çıktı alın, kendiniz bir dosyaya çıktı alın.

Bu, programınızın içindeki mantıkla ilgilidir. Senden başka kimsenin görmediği ve bu yüzden yardımın olmayacağı.

 
Renat Fatkhullin :

Koda bir göz atın ve optimizasyon içindeki ve tek bir geçiş yapan kişiyle olan anlaşmalara ne olduğunu anlamaya çalışın.

Çıktı alın, kendiniz bir dosyaya çıktı alın.

Bu, programınızın içindeki mantıkla ilgilidir. Senden başka kimsenin görmediği ve bu yüzden yardımın olmayacağı.

Renat, teşekkürler. Sadece burada bana karanlık açıkla, optimize edicideki 2 * 2 + 2 * 3 ile tek geçiş arasındaki fark nedir? Peki, en azından tam olarak nerede bir tutarsızlık olabileceğine dair ipucu?

Peki, bundan bahsetmişseniz, aynı zamanda, danışmanın test cihazında ve gerçek bir hesapta çalışmasındaki tutarsızlıkları nerede ve ne arayacağınıza dair ipucu ?

Görünüşe göre kendi aptallığımdan dolayı, yazılı kodun (hataları olup olmaması, optimize edilmiş olup olmaması önemli değil) sonunda derlendiğine ve bu nedenle aynı şekilde çalışması gerektiğine her zaman kesin olarak inandım. optimize edici, test cihazında ve gerçek hayatta...

Peki, basit bir programcının pozisyonunu alın - nerede, nasıl ve hangi yollarla aramalısınız, bu üç durumda bir (derlenmiş) kodun yürütülmesindeki farkın ne olduğu açık değil mi?

Bir kullanıcı olarak, optimize edici ve test cihazında yalnızca bir yürütülebilir dosyanın farklı çalıştığını görüyorum, bu da gerçek hayatta genel olarak çalışacağı anlamına geliyor xs nasıl olduğunu biliyor ....


Düşünce içeri girdi, ya bir danışmanı test ederseniz ve o ... şey, hayır. Ve eğer gerçek hayatta atarsan? Ya Kâse ise? ))))