MT geliştiricileri için değil! INIT_PARAMETERS_INCORRECT nasıl değiştirilir? - sayfa 10

 
Aleksey Vyazmikin :

Kural olarak hatalı parametreler 3 nedenden dolayı devre dışı bırakılır:

1. Alanın incelenmesi ilgi çekici değildir (örneğin, en anlaşılır seçenek olarak birkaç zaman diliminin hariç tutulması);

 //--- пропустить бесполезные проходы оптимизации
   if (my_timeframe != PERIOD_M15    &&
      my_timeframe != PERIOD_M30    &&
      my_timeframe != PERIOD_H1     &&
      my_timeframe != PERIOD_H3     &&
      my_timeframe != PERIOD_H6       )
   {
       Print ( "ОШИБКА - Период не запланирован" );
       return ( INIT_PARAMETERS_INCORRECT );
   }
 
Сергей Таболин :

Oldukça doğru.

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

Peki, "yanlış" parametreler eklemeden örnekteki MA optimizasyonu nasıl organize edilir?

tamam, katılıyorum, dikkatsizce baktım. optimizasyon için, geçersiz bir boşluk kesimi olan başka bir parametreyi çıkarın

 
TheXpert :

tamam, katılıyorum, dikkatsizce baktım. optimizasyon için, geçersiz bir boşluk kesimi olan başka bir parametreyi çıkarın

Bir örnek mümkün mü?

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

Bir örnek mümkün mü?

 input int period_MA_warp = 15 ;

//...

period_MA = (period_MA_warp <= 31 ) ? period_MA_warp : period_MA_warp + 50 ;
 
TheXpert :

Kabul ediyorum. Peki ya zaman dilimleri?

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

Kabul ediyorum. Peki ya zaman dilimleri?

ayrıca - int'yi sürekli bir aralık içinde bir zaman dilimine dönüştürmek. örneğin, tüm TF değerleriyle bir dizi oluşturun ve dizi indeksine göre optimize edin

 
TheXpert :

ayrıca - int'yi sürekli bir aralık içinde bir zaman dilimine dönüştürmek. örneğin, tüm TF değerleriyle bir dizi oluşturun ve dizi indeksine göre optimize edin

Eh, bence, bu zaten bir koltuk değneği gibi görünüyor ... Belki yanılıyorum, ancak bu, başlangıç örneğimde yapmak zorunda olduğum şeyle pratik olarak aynı. Bu durumda önce tüm diziyi bir dosyaya yüklemek gerekmiyorsa...

 

Genel optimizasyon sırasında OnTester() içindeki "geçersiz" parametreleri filtreleme fikrini buldum:

 double OnTester ()
{
   if ( MQLInfoInteger ( MQL_OPTIMIZATION ) && paramIncorrect())   return (- 99999999.99 );
}

INIT_PARAMETERS_INCORRECT sonuçlarını görünümden kaldırmak için genetiğe müdahale etmeden ortaya çıkıyor.

Hemen başka bir soru ortaya çıktı: Bu durumda karda "derin bir eksi" vermek mümkün mü?

 

Yaptığım gibi: ayrı bir parametre oluşturulur, değerine bağlı olarak diğer değerler değiştirilir.

Basit bir örnek (2 hafta önce yapıldı):

Zaman çerçevesi parametreleri vardır: TF_UP (yüksek) ve TF_DOWN (düşük), eski olanın her zaman genç olandan daha büyük olması gerekir, aksi takdirde input_incorrect ortaya çıkar. Test cihazında çok sayıda sıfır sonuç var ve genetik "hiçbir şey için çalışmıyor" (hızlı da olsa). Ve sonunda, bu 2 parametreyi kaldırdım ve aşağıda açıklanan türe sahip yeni bir parametre oluşturdum ve sadece onu optimize ediyorum ve zaten OnInit işlevinde bu parametreye bağlı olarak diğer 2 parametrede bir ikame var.

 enum TF_only_opt
{
   _H4_H1 = 0 ,
   _H4_M30 = 1 ,
   _H4_M15 = 2 ,
   _H1_M30 = 3 ,
   _H1_M15 = 4 ,
   _H1_M5 = 5 ,
   _M30_M15 = 6 ,
   _M30_M5 = 7 ,
   _M30_M1 = 8 ,
   _M15_M5 = 9 ,
   _M15_M1 = 10 ,
   _M5_M1 = 11
};