Kütüphaneler: MultiTester - sayfa 41

 
10 saniye uyku da yardımcı olmuyor. Sadece o klasörü temizlemek sorunu çözüyor.
 
klycko uyku da yardımcı olmuyor. Yalnızca o klasörü temizlemek sorunu çözüyor.

MQL5\Experts\Examples\MACD\MACD Sample.mq5'i optimize etmek için kodu gönderin. Sonra yeniden üretmeyi deneyebilirsiniz. Şu anda neredeyse hiç yapıcı çalışma yok.

 
fxsaber #:

MQL5\Experts\Examples\MACD\MACD Sample.mq5'i optimize etmek için kodu yükleyin. Sonra yeniden üretmeyi deneyebilirsiniz. Şu anda neredeyse hiç yapıcı çalışma yok.

Teşekkür ederim! Dosyaları hazırlamaya ve göndermeye çalışacağım. Şu anda her şey hala dağınık durumda.

 
fxsaber #:

MQL5\Experts\Examples\MACD\MACD Sample.mq5'i optimize etmek için kodu yükleyin. Sonra yeniden üretmeyi deneyebilirsiniz. Şu anda neredeyse hiç yapıcı çalışma yok.

İyi günler!

Dosyaları hazırladım ve ekledim.

M1 zaman diliminde 25.03'ten 20.05.2024'e kadar optimizasyon.

Mevduat 17000. Kaldıraç 40. Karmaşık kriterin maksimum değeri.


Öncelikle deneyin saflığı için "C:\Users\ASUS\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\Tester\cache" klasörünü temizlememiz gerekiyor.

Nocturne betiği optimize etmek için her seferinde bir parametre çalıştırılmalıdır.

Daha sonra çıktı verir:

İlk parametre için: ProfitNow -1478 ParamMax 0,37 ilk kez.

İkinci parametre için: ProfitNow -379 ParamMax 30 ilk kez.

Üçüncü parametre için: ProfitNow -379 ParamMax 6 ilk kez.


Üçüncü parametre için: ProfitNow -379 ParamMax 6 tekrar tekrar

Üçüncü parametre için: ProfitNow -379 ParamMax 6 tekrar tekrar

Üçüncü parametre için: ProfitNow -379 ParamMax 6 tekrar tekrar.


Bu, üçüncü parametrede veri önbelleğinin takıldığını gösterir.


Ve şimdi "C:\Users\ASUS\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\Tester\cache" klasörünü tekrar temizlememiz gerekiyor

Ve sonra bir tekrar:


İlk parametre için: ProfitNow -1478 ParamMax 0,37 ilk kez.

İkinci parametre için: ProfitNow -379 ParamMax 30 ilk kez.

Üçüncü parametre için: ProfitNow -379 ParamMax 6 ilk kez.


Üçüncü parametre için: ProfitNow -379 ParamMax 6 tekrar tekrar

Üçüncü parametre için: ProfitNow -379 ParamMax 6 tekrar tekrar

Üçüncü parametre için: ProfitNow -379 ParamMax 6 tekrar tekrar


Nocturne komut dosyasının 151-154. satırları bana talimat verdiğiniz gibi her şeyi söylüyor:

Run(Odinar);

int GLOC = MTTESTER::GetLastOptCache(Bytes); // Opt dosyasını bir bayt dizisine al Bytes

TESTERCACHE<ExpTradeSummary> Cache;

bool CL = Cache.Load(Bytes); // Bytes bayt dizisini Cache'e besle


Hata elbette yazdığım kodda, ancak henüz nasıl düzelteceğimi bilmiyorum.

Ancak, deneysel olarak, Çalıştır'ı çalıştırmadan önce tüm opt dosyalarını "C:\ bytes" klasöründen manuel olarak kaldırırsanız.

"C:\Users\ASUSAppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\Tester\cache" klasöründen,

o zaman kodum doğru çalışır ve seçilen parametre üzerinde optimizasyon gerçekleştirir.


Bu klasör temizlenmezse, Test Cihazı tekrarlanan optimizasyonları gerçekleştirmez (aynı değişmemiş verilerle), ancak şunları okur

bu klasörden zaten mevcut opt dosyası. Bu, aynı optimizasyon manuel olarak tekrar tekrar çalıştırıldığında açıkça görülebilir.

Gerçek optimizasyonun yalnızca ilk kez gerçekleştirildiği ve ardından yalnızca opt dosyasını klasörden okuduğu görülebilir.

Bu tekrarlanan okuma, önbelleğin içeriğini güncellemiyor gibi görünüyor ve kodumdaki hataya neden olan da bu.


Söz konusu klasörü temizlemek hatayı çözmeye yardımcı olabilir. Tabii ki bu kötü bir çözüm ve önbellekteki doğru verileri geri yükleyebilmek daha şık olurdu.

Ama bunu nasıl yapacağımı bilmiyorum. Şimdilik, önceki gerçek optimizasyondan gelen veriler önbellekte asılı duruyor (klasörden yeniden okuma ile eşleşmiyor).

Ne yazık ki, bu klasör FolderClean kullanılarak koddan temizlenemez, çünkü MQL5'te yasaklanmıştır.

"sanal alan" dışındadır ve yalnızca Strateji Test Cihazı tarafından doldurulur.


Belki de C++ aracılığıyla harici bir eklenti oluşturmalı ve bunu komut dosyasından çalıştırmalısınız.


Saygılarımla, Alexander

Dosyalar:
 

Metinde hata var:



İyi günler!

Dosyaları hazırladım ve ekledim.

M1 zaman diliminde 25.03'ten 20.05.2024'e kadar optimizasyon.

Mevduat 17000. Kaldıraç 40. Karmaşık kriterin maksimum değeri.


İlk olarak, deneyin saflığı için "C:\Users\ASUS\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\Tester\cache" klasörünü temizlememiz gerekir.

Nocturne betiği optimize etmek için her seferinde bir parametre çalıştırılmalıdır.

Sonra çıktı verir:

İlk parametre için: ProfitNow -1478 ParamMax 0,37 ilk kez.

İkinci parametre için: ProfitNow -379 ParamMax 30 ilk kez.

Üçüncü parametre için: ProfitNow -379 ParamMax 6 ilk kez.


İlk parametre için: ProfitNow -379 ParamMax 6 tekrar tekrar

İkinci parametre için: ProfitNow -379 ParamMax 6 tekrar tekrar

Üçüncü parametre için: ProfitNow -379 ParamMax 6 tekrar tekrar.


Bu, üçüncü parametre için veri önbelleğindeki takılmayı gösterir.


Ve şimdi "C:\Users\ASUS\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\Tester\cache" klasörünü tekrar temizlememiz gerekiyor

Ve sonra bir tekrar:


İlk parametre için: ProfitNow -1478 ParamMax 0,37 ilk kez.

İkinci parametre için: ProfitNow -379 ParamMax 30 ilk kez.

Üçüncü parametre için: ProfitNow -379 ParamMax 6 ilk kez.


İlk parametre için: ProfitNow -379 ParamMax 6 tekrar tekrar

İkinci parametre için: ProfitNow -379 ParamMax 6 tekrar tekrar

Üçüncü parametre için: ProfitNow -379 ParamMax 6 tekrar tekrar.


Nocturne komut dosyasının 151-154. satırları bana talimat verdiğiniz gibi her şeyi söylüyor:

Run(Odinar);

int GLOC = MTTESTER::GetLastOptCache(Bytes); // Opt dosyasını bir bayt dizisine al Bytes

TESTERCACHE<ExpTradeSummary> Cache;

bool CL = Cache.Load(Bytes); // Bytes bayt dizisini Cache'e besle


Hata elbette yazdığım kodda, ancak henüz nasıl düzelteceğimi bilmiyorum.

Ancak, deneysel olarak, Çalıştır'ı çalıştırmadan önce tüm opt dosyalarını "C:\ bytes" klasöründen manuel olarak kaldırırsanız.

"C:\Users\ASUSAppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\Tester\cache" klasöründen,

o zaman kodum doğru çalışır ve seçilen parametre üzerinde optimizasyon gerçekleştirir.


Bu klasör temizlenmezse, Test Cihazı tekrarlanan optimizasyonları gerçekleştirmez (aynı değişmemiş verilerle), ancak şunları okur

bu klasörden zaten mevcut opt dosyası. Bu, aynı optimizasyon manuel olarak tekrar tekrar çalıştırıldığında açıkça görülebilir.

Gerçek optimizasyonun yalnızca ilk kez gerçekleştirildiği ve ardından yalnızca opt dosyasını klasörden okuduğu görülebilir.

Bu tekrarlanan okuma, önbelleğin içeriğini güncellemiyor gibi görünüyor ve kodumdaki hataya neden olan da bu.


Söz konusu klasörü temizlemek hatayı çözmeye yardımcı olabilir. Tabii ki bu kötü bir çözüm ve önbellekteki doğru verileri geri yükleyebilmek daha şık olurdu.

Ama bunu nasıl yapacağımı bilmiyorum. Şimdilik, önceki gerçek optimizasyondan gelen veriler önbellekte asılı duruyor (klasörden yeniden okuma ile eşleşmiyor).

Ne yazık ki, bu klasör FolderClean kullanılarak koddan temizlenemez, çünkü MQL5'te yasaklanmıştır.

"sanal alan" dışındadır ve yalnızca Strateji Test Cihazı tarafından doldurulur.


Belki de C++ aracılığıyla harici bir eklenti oluşturmalı ve bunu komut dosyasından çalıştırmalısınız.


Saygılarımla, Alexander

 

Nocturne parametre listesine odaklandığı için robotumu optimizasyon için gönderdim.

Ancak MQL5\Experts\Examples\MACD\MACD Sample.mq5 için çok fazla değişiklik yapılması gerekiyor.


Bu arada, neden int inNum = 0 parametre girişine ihtiyacınız var?

Yoksa bu sadece bir atavizm mi?

 
fxsaber #:

MQL5\Experts\Examples\MACD\MACD Sample.mq5'i optimize etmek için kodu yükleyin. Sonra yeniden üretmeyi deneyebilirsiniz. Şu anda neredeyse hiç yapıcı çalışma yok.

İyi günler!

Alexander Slavsky'nin yardımıyla tüm sorunlarımı çözmeyi başardım: https://www.mql5.com/tr/users/s22aa.

Bana Cache içeriğini silmek için kod gönderdi.

Sandbox'ın dışında olduğu için Cache 'i doğrudan temizleyemedim.

Belki Çalıştır prosedürünü çalıştırmadan önce birileri için yararlı olabilir, böylece geçmiş optimizasyonların sonuçları yenileriyle etkileşime girmez.

Bu betiği ekliyorum.

Kütüphaneleriniz ve bu temizleme prosedürü robotu tutarlı bir şekilde optimize edebilmemi sağladı.

Bu kodlar ve yardımlarınız için çok teşekkür ederim.

Saygılarımla, Alexander

Aleksandr Slavskii
Aleksandr Slavskii
  • 2024.05.27
  • www.mql5.com
Профиль трейдера
Dosyalar:
 
klycko tekrarlanan optimizasyonları gerçekleştirmez (aynı değişmemiş verilerle), ancak bunları okur

bu klasörden zaten mevcut opt dosyası. Bu durum, aynı optimizasyon manuel olarak tekrar tekrar çalıştırıldığında açıkça görülebilir.

Gerçek optimizasyonun yalnızca ilk seferde yapıldığını ve ardından yalnızca opt dosyasını klasörden okuduğunu görebilirsiniz.

Bu tekrarlanan okuma, önbelleğin içeriğini güncellemiyor gibi görünüyor ve kodumdaki hataya neden olan da bu.

sinput uint Range = 2;

void OnTesterInit( void )
{
  ::MathSrand((int)::TimeLocal());

  const int Start = ::MathRand();
  const int Step = ::MathRand();

  const uint TmpRange = (::Range < 2) ? 2 : ::Range;

  ::ParameterSetRange("Range", true, TmpRange, Start, Step, Start + (TmpRange - 1) * Step);
}
 
klycko #:

Önbellek içeriğini silmek için kod.

MTTester.mqh'de, çok sayıda tekli çalıştırma yaptığınızda çok talep edilen bir işlev vardır.

  static bool DeleteLastTST( void )
  {
    const string Path = ::TerminalInfoString(TERMINAL_DATA_PATH)+ "\\Tester\\cache\\";
    string FileNames[];

    const int Size = MTTESTER::GetFileNames(Path, "*.tst", FileNames);

    return(Size && kernel32::DeleteFileW(Path + FileNames[Size - 1]));
  }

Eğer tst'yi opt ile değiştirirseniz, son opt dosyasını silecektir. Tüm Cache klasörünü temizlemek gereksiz görünüyor.

 
Teşekkür ederim!