Kütüphaneler: MultiTester - sayfa 40

 
klycko Optimizasyon sonuçlarının bir Excel tablosuna ve optimizasyon önbellek dosyasına çıktısı nasıl alınır?
Opt dosyalarını okuma bölümüne bakın.
How to open cache optimization file (.opt), MT5
How to open cache optimization file (.opt), MT5
  • 2020.07.30
  • DDamasceno
  • www.mql5.com
Hi, Is there a way to open Metatrader 5 optimization cache file (folder -> tester/cache/) with another software and export the data in...
 
klycko Optimizasyon sonuçlarının Excel elektronik tablosuna çıktısı nasıl alınır?

Çerçevelerle çalışma hakkında bilgiedinin.

Документация по MQL5: Работа с результатами оптимизации
Документация по MQL5: Работа с результатами оптимизации
  • www.mql5.com
Функции для организации собственной обработки результатов оптимизации в тестере стратегий. Могут вызываться при оптимизации в агентах тестирования...
 
İyi günler!

TesterCache, MultiTester, TypeToBytes kütüphanelerinin yardımıyla.
Bir optimizasyon programı geliştirdim, ancak içinde aşılamaz bir hata var.

Bunu yerelleştirdim:
Run(Contr) prosedürünü çalıştırdıktan sonra;
Aşağıdaki satırlar bu Run çalıştırması sırasında bulunan Cache'den en iyi parametreleri okumaya çalışıyor.
Ve sonra bu parametreler yazdırılır ve kod durur.

İşte bu kod:

inNum=0;

Run(Contr); // Seçilen parametrenin değerleri üzerinde optimizasyonu çalıştır

prWrite = MTTESTER::SetSettings2(Sohran); // Kaydedilen ayarları robota geri yükleyin
prRead = MTTESTER::GetSettings(Contr); // Kontrol etmek için robot ayarlarını okuyun
Print("prWriteSettings = ",prWrite," prReadSettings = ",prRead);
Print("SettingEnd Odinar ",Kol," PoseY = ",PoseY," Iteration ",IterNumber,"\n",Contr);

if(prRead && TypPar == 0) // Çift parametre için optimizasyon önbelleğini oku

{ // İlgili optimize edilmiş giriş parametrelerini okuyun


int GLOC = MTTESTER::GetLastOptCache(Bytess);

Print("GLOC = ",GLOC);


const int Size = Cache.GetInputs(inNum,Paramas);
Print(Cache[inNum].ToString()); // İstenen kaydın istatistiklerini yazdır
Print(Cache.Header.ToString()); // Önbelleği optimize etmenin ana verilerini yazdır
Print("Paramas\n");
ArrayPrint(Paramas); // Optimize edilmiş giriş parametrelerini yazdır
Print(Cache[GetMaxProfitPos(Cache)].ToString()); // Maksimum kâra sahip kaydın istatistiklerini yazdır

ProfitNow = Cache[GetMaxProfitPos(Cache)].profit; // Maksimum kar
int NomProchodaMaxProfit = Cache[GetMaxProfitPos(Cache)].Pass; // Maksimum karlı geçiş sayısı
int IndexMaxProfit = GetMaxProfitPos(Cache); // Parametre değerini içeren dizi dizini
Cache.GetInputs(IndexMaxProfit,Paramas);

ParamMax = Paramas[0,1].double_value; // Maksimum kâra ulaşılan parametrenin değeri

Alert("ProfitNow =",ProfitNow," ParamMax=",ParamMax," Odinar ",Kol," PoseY = ",PoseY," PosEq = ",PosEq," TypPar = ",TypPar," Iteration ",IterNumber);
return;



Ancak, bulunan ve yazdırılan parametreler, Run !!!! çalıştırılarak elde edilene değil, eski bir opt dosyasına karşılık geliyor.
Belki de Cache.GetInputs(inNum,Paramas) dosyasına yanlış erişiyorum?

Run prosedürünün kendisi iyi çalıştı, günlükteki önceki çıktılardan anlaşılıyor.

Cache'den taze veri almak neden hala mümkün değil?

Her türlü tavsiye için şimdiden teşekkür ederim.

Saygılarımla, Alexander
Библиотеки: TesterCache - Что такое 0xCACA?
Библиотеки: TesterCache - Что такое 0xCACA?
  • 2019.08.31
  • Good Beer
  • www.mql5.com
Да и дальше взаимодействия с Оптимизатором нет никакого. в кеше Оптимизатора по каждому проходу хранятся все стат. Бонусом идет возможность запуска любого прохода из обновленной таблицы стандартными средствами в два щелчка
 
klycko #:
int GLOC = MTTESTER::GetLastOptCache(Bytess);
Opt dosyasını bir bayt dizisine aldınız. Daha sonra, bunu Önbelleğe beslemeniz gerekir.

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerini test etme üzerine forum.

Kütüphaneler: TesterCache

fxsaber, 2019.11.11 04:45 pm.

void OnStart()
{
  uchar Bytes[];
  
  MTTESTER::GetLastOptCache(Bytes);
  
  TESTERCACHE<ExpTradeSummary> Cache;

  if (Cache.Load(Bytes)) // Optimizasyon önbelleğini okuyun.
  {
 
fxsaber #:
Bir bayt dizisi içinde bir opt dosyası aldınız. Ardından, bunu Cache'e aktarmanız gerekir.

Dediğiniz gibi düzelttim:


string Sohran,Contr;

MTTESTER::GetSettings(Sohran); // Robotun mevcut başlangıç ayarları Sohran'da geçici olarak kaydedilmek üzere okunur.

prWrite = MTTESTER::SetSettings2(Odinar); // Odinar'ı robot ayarlarına ayarla

prRead = MTTESTER::GetSettings(Contr); // Az önce ayarlanmış olan robot ayarlarını okuyun.

Print("prWriteSettings = ",prWrite," prReadSettings = ",prRead);

Print("SettingBeg OdinarContr ",Kol," PoseY = ",PoseY," Iteration ",IterNumber,"\n",Contr);


Run(Contr[0]); // Seçilen Y parametresinin değerleri üzerinde optimizasyonu çalıştırın

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

TESTERCACHE<ExpTradeSummary> Cache;

bool CL = Cache.Load(Bytess); // Bytess bayt dizisini Cache'e besleyin

ProfitNow = Cache[GetMaxProfitPos(Cache)].profit; // Maksimum kar

int NomProchodaMaxProfit = Cache[GetMaxProfitPos(Cache)].Pass; // Maksimum karlı geçiş sayısı

int IndexMaxProfit = GetMaxProfitPos(Cache); // https://www.mql5.com/ru/forum/318998/page2#comment_13846951 parametresinin değerini içeren dizinin indeksi

Cache.GetInputs(IndexMaxProfit,Paramas);

ParamMax = Paramas[0,1].double_value; // Maksimum kârın elde edildiği parametrenin değeri


Alert("CL=",CL," GLOC = ",GLOC," GLOC," ProfitNow =",ProfitNow," ParamMax=",ParamMax," Odinar ",Kol," PoseY = ",PoseY," PosEq = ",PosEq," TypPar = ",TypPar," Iteration ",IterNumber);

return;



Sonuç hala yanlış.

Bazı nedenlerden dolayı, önceki bazı çalıştırmalardan ProfitNow ve ParamMax verileri önbellekten okunuyor.

Saygılarımla, Alexander

Библиотеки: TesterCache - Что такое 0xCACA?
Библиотеки: TesterCache - Что такое 0xCACA?
  • 2019.08.31
  • Good Beer
  • www.mql5.com
Да и дальше взаимодействия с Оптимизатором нет никакого. в кеше Оптимизатора по каждому проходу хранятся все стат. Бонусом идет возможность запуска любого прохода из обновленной таблицы стандартными средствами в два щелчка
Dosyalar:
 
klycko #:

Bazı nedenlerden dolayı, önceki bir çalıştırmaya ait ProfitNow ve ParamMax verileri önbellekten okunur.

Bu komut dosyası Optimizasyondan sonra doğru değerleri gösteriyor mu?

Evet ise, sorun büyük olasılıkla Optimizasyondan hemen sonra opt dosyasının hazır olmamasıdır. Çalıştır'dan sonra Uyku'yu koymayı deneyebilirsiniz. Ya da Run düzgün çalışmıyor.

Библиотеки: TesterCache - Что такое 0xCACA?
Библиотеки: TesterCache - Что такое 0xCACA?
  • 2019.08.31
  • Good Beer
  • www.mql5.com
Да и дальше взаимодействия с Оптимизатором нет никакого. в кеше Оптимизатора по каждому проходу хранятся все стат. Бонусом идет возможность запуска любого прохода из обновленной таблицы стандартными средствами в два щелчка
 
fxsaber #:

Bu komut dosyası Optimizasyondan sonra doğru değerleri gösteriyor mu?

Evet ise, sorun büyük olasılıkla Optimizasyondan hemen sonra opt dosyasının hazır olmamasıdır. Çalıştır'dan sonra Uyku'yu koymayı deneyebilirsiniz. Ya da Run düzgün çalışmıyor.

Teşekkürler! Tüm bunları yarın kontrol edeceğim.

Ancak şimdi, optimizasyonu yeni bir parametre ile ayarlarsam, her şeyin doğru çalıştığını öğrendim.

Bana öyle geliyor ki bütün mesele, daha önce çalışmış olan bir optimizasyonu yeniden ayarlarsanız, test cihazının aslında onu yeniden işlememesi, sadece önceki sonucu hafızadan almasıdır.

Test cihazının bu hafızasını önceden yok edecek bir şey icat edilemez mi?

 
klycko #:

Bana öyle geliyor ki bütün mesele, daha önce çalışan bir optimizasyonu yeniden ayarladığınızda test cihazının aslında bunu yeniden işlememesi, sadece geçmiş sonucu bellekten almasıdır.

Hipotezleriniz yanlış. Sorun yazdığınız kodda.

 
fxsaber #:

Hipotezleriniz yanlış. Sorun yazdığınız kodda.

İyi günler!


"Sorunun yazdığım kodda olduğu" konusunda size katılıyorum. Hata kodun içinde ve henüz nasıl düzelteceğimi bilmiyorum.

Ancak, deneysel olarak, Çalıştır'ı çalıştırmadan önce tüm opt dosyalarını 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

 
Çalıştır prosedürü mükemmel çalışıyor. Ayarlar yazılır ve Başlat düğmesine basılır. Her şey normal.