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

 
fxsaber :

Tek geçişte, giriş parametrelerinizi bulmanız gerekir. Bu tür bir işlevin tanıtılması pek olası değildir, bu yüzden bunun nasıl yapılabileceğine dair düşüncelerinizi paylaşın? WinAPI yapacak.

En son MT5 Tester ayarlarını alma.

 #include <WinAPI\fileapi.mqh>
#include <WinAPI\handleapi.mqh>

// Получает имя файла настроек последнего запуска MT5-Тестера.
string GetTesterINIFileName( ulong &Size )
{
   string Str = NULL ;
   const string Path = :: TerminalInfoString ( TERMINAL_PATH )+ "\\MQL5\\Profiles\\Tester\\" ;
  
  FIND_DATAW FindData;
   const HANDLE handle = kernel32::FindFirstFileW(Path + "*.ini" , FindData);
  
   if (handle != INVALID_HANDLE )
  {     
     ulong MaxTime = 0 ;
    Size = 0 ;
    
     do
    {
       const ulong TempTime = (( ulong )FindData.ftLastWriteTime.dwHighDateTime << 32 ) + FindData.ftLastWriteTime.dwLowDateTime;
      
       if (TempTime > MaxTime)
      {
        MaxTime = TempTime;
        
        Str = :: ShortArrayToString (FindData.cFileName);
        Size = (( ulong )FindData.nFileSizeHigh << 32 ) + FindData.nFileSizeLow;;
      }      
    }
     while (kernel32::FindNextFileW(handle, FindData));    
    
    kernel32::FindClose(handle);
  }
  
   return ((Str == NULL ) ? NULL : Path + Str);   
}

#define GENERIC_READ   0x80000000
#define SHARE_READ     1
#define OPEN_EXISTING 3

// Получает настройки последнего запуска MT5-Тестера.
string GetTesterINI( void )
{
   string Str = NULL ;
  
   ulong Size;
   const string FileName = GetTesterINIFileName(Size);
  
   if (FileName != NULL )
  {
     const HANDLE handle = kernel32::CreateFileW(FileName, GENERIC_READ, SHARE_READ, 0 , OPEN_EXISTING, 0 , 0 );
    
     if (handle != INVALID_HANDLE )
    {
       uint Read;
       ushort Buffer[];
      
      :: ArrayResize (Buffer, ( int )Size / sizeof ( ushort ));
            
       if (kernel32::ReadFile(handle, Buffer, ( int )Size, Read, 0 ))      
        Str = :: ShortArrayToString (Buffer);
      
      kernel32::CloseHandle(handle);        
    }
  }
  
   return (Str);
}


Başvuru

 // Советник при запуске одиночного прогона возвращает свои настройки.
input int inInput1 = 1 ;
input int inInput2 = 2 ;

int OnInit ()
{
   if ( MQLInfoInteger ( MQL_TESTER ) && ! MQLInfoInteger ( MQL_OPTIMIZATION ))
     Print (GetTesterINI());
  
   return ( INIT_FAILED );
}


Sonuç

 2019.04 . 01 00 : 00 : 00    ;Одиночный тест советника: Test9, EURUSD M1, цены открытия, 2019.04 . 01 - 2019.09 . 18
2019.04 . 01 00 : 00 : 00    [Tester]
2019.04 . 01 00 : 00 : 00    Expert=Test9.ex5
2019.04 . 01 00 : 00 : 00    Symbol =EURUSD
2019.04 . 01 00 : 00 : 00    Period =M1
2019.04 . 01 00 : 00 : 00    Optimization= 0
2019.04 . 01 00 : 00 : 00    Model= 2
2019.04 . 01 00 : 00 : 00    FromDate= 2019.04 . 01
2019.04 . 01 00 : 00 : 00    ToDate= 2019.09 . 18
2019.04 . 01 00 : 00 : 00    ForwardMode= 0
2019.04 . 01 00 : 00 : 00    Deposit= 10000
2019.04 . 01 00 : 00 : 00    Currency=EUR
2019.04 . 01 00 : 00 : 00    ProfitInPips= 1
2019.04 . 01 00 : 00 : 00    Leverage= 100
2019.04 . 01 00 : 00 : 00    ExecutionMode= 0
2019.04 . 01 00 : 00 : 00    OptimizationCriterion= 6
2019.04 . 01 00 : 00 : 00    Visual= 0
2019.04 . 01 00 : 00 : 00    [TesterInputs]
2019.04 . 01 00 : 00 : 00    inInput1= 123 || 1 || 1 || 10 ||N
2019.04 . 01 00 : 00 : 00    inInput2= 2 || 2 || 1 || 20 ||N
 

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

MetaTrader 5 platformunun yeni sürümü build 1640: kendi finansal araçlarınızı oluşturma ve test etme

fxsaber , 2017.08.04 19:55

Optimizasyon sırasında, bilgisayarı Uyku moduna almaktan bir tür koruma (en azından sesli sinyalli bir uyarı şeklinde) yapmak mümkün müdür?

Optimizasyonun devam ettiğini tamamen unuttum ve dizüstü bilgisayarın kapağını kapattım ... bağlantı koptu, uyandıktan sonra geri yüklendi ve Optimizasyon devam etti. Ama Optimizasyonun devam ettiğini hatırlatırsam kapağı kapatmazdım. Bulutu kullandığınızda ne diyebilirim ki...

Ayrıca, Optimizasyon sırasında, Test Cihazı gizlenmiş durumdayken Terminalde Optimizasyonun devam ettiğinin tek işareti simgedeki yeşil çubuktur (tarayıcıda dosya indirirken olduğu gibi). Terminali kapattığınızda, Optimizasyonun devam ettiğine dair bir uyarı yoktur.

 

Tester'da bool giriş parametrelerinin görüntülenmesiyle ilgili sorunu yeniden oluşturma.

Bu danışman

 input int i = 0 ;
input bool b = false ;

double OnTester () { return (i); }


ekrandaki gibi optimize ediyoruz.


Geçişlerden birini başlatmayı seçiyoruz.


Parametrelerde false yerine sıfır görüyoruz.


 

Nasıl çoğalacağımı bilmiyorum. Bazen, günlükteki Optimizasyon sonuçlarından tek bir çalıştırma başlatırken, giriş parametrelerinin değerleri doğru şekilde gösterilir (ve değiştirilir) (optimize edilmemiş girişler dahil önbellekte olduğu gibi). Ancak aynı zamanda Parametreler sekmesinde bazı girişler güncellenmez.


Optimizasyondan tek bir tane çalıştırdığınız ortaya çıktı - mükemmel (Optimizasyon sonucuyla çakışıyor).

Ardından Tekli moda girersiniz ve Başlat düğmesinden aynı geçişi çalıştırırsınız - farklı değerler alırsınız (çünkü bazı girişler önceki adımdakinden farklı değerlere sahiptir).

 

Geniş bir martının vahşi boyutları hakkında zaten konuşulmuştu. Günlük görüntülendiğinde, vakaların% 99'unda girişleri en başında ve sonunda ilgi çekicidir. Yani, vahşi boyuttan dolayı, başlangıç hiç görülemez.

Belki sonunda günlüğün başlangıcını çoğaltın? Özellikle, lansmanın hangi giriş parametrelerinde olduğunu görmek için.

 
Önceki optimizasyonların sonuçlarını görmenin imkansız olduğu bir duruma girdim. Yalnızca yeniden başlatma yardımcı oldu.
 

Bunlar, Test Kullanıcısının şimdi yayınladığı mesajlardır.

 
fxsaber :

Bunlar, Test Kullanıcısının şimdi yayınladığı mesajlardır.

Test eden kişi daha önce bu tür mesajlar verdi. Opt dosyalarını yüklemek mümkün hale geldiğinden beri. Bu, optimizasyon başlatılırsa bu opt dosyasının üzerine yazılacağına ve optimizasyonun yeniden başlayacağına dair bir uyarıdır.

 
Slava :

optimizasyon başlatılırsa , bu tercih dosyasının üzerine yazılacaktır

İsim eşleşiyor mu?

Neden: