Kütüphaneler: MultiTester - sayfa 17

 

Kendiminkine baktım, gerçekten de bazı semboller için tik geçmişi olan dosyalar görünmüyordu, günlüğe bak tım ve işte orada:

2020.02.12 16:02:30.144 Core 1  NZDUSD : real ticks begin from 2017.01.02 00:00:00

Şimdi anlıyorum, gerisi bir simülasyondu.


Bu arada MultiTester sembolü simge durumuna küçültülmüş terminalde değiştirmez, yeni bir geçişe başlamadan önce bir pencere açmayı eklemek daha iyidir. Şimdilik fInit'e böyle bir fonksiyon ekledim.

bool ActivateTerminalWindow(){
   HANDLE ChartWindow = (HANDLE)ChartGetInteger(0, CHART_WINDOW_HANDLE);
   if(ChartWindow){
      HANDLE TerminalWindow = GetParent(ChartWindow);
      TerminalWindow = GetParent(TerminalWindow);
      TerminalWindow = GetParent(TerminalWindow);
      if(TerminalWindow){
         ShowWindow(TerminalWindow, 3);
         return true;
      }
   }
   return false;
}
 
Evgenii Kuznetsov:

Bu arada MultiTester simge durumuna küçültülmüş terminalde sembolü değiştirmez, yeni bir geçişe başlamadan önce bir pencere açmayı daha iyi ekleyin.

Kontrol etmedim, böyle bir şeyle karşılaşmadım.

 
fxsaber:

Sonunda bunu yaptım. Ini dosyalarından bir görev grubu oluşturun ve yürütme için gönderin.

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi üzerine forum

Uzman Danışmanlar: Doğrulama

fxsaber, 2020.02.22 10:46 AM

Çok sayıda farklı Test Cihazı görevi gerçekleştirmem gerektiğinde Validate'i kullanıyorum.


1. Tester'da çalıştırmak istediğim bir görev ayarlıyorum.

2. Ayarlar sekmesinde CTRL+C tuşlarına basıyorum. Tüm ayarlar panoda görünür.

3. CTRL+V tuşlarını kullanarak bu ayarları bir ini-dosyasına kopyalıyorum ve bu dosyayı görevlerin bulunduğu klasöre yerleştiriyorum.

4. Gerekli sayıda görevi bu şekilde oluşturuyorum - ini-dosyaları (ekranda dört görev).


5. Validate'i başlatırken, görevlerin bulunduğu klasörün adını belirtiyorum.


İşte bu kadar, şimdi Validate tüm hileleriyle bu görevleri yürütecek.


MultiTester türevlerini yalnızca belirli durumlarda, görevleri çalıştırırken oluşturmam gerektiğinde kullanıyorum.

Hazır görevlerden oluşan bir toplu işi çalıştırmak için Validate'i kullanmanızı öneririm.

 

Lütfen GA'nın nasıl doğru bir şekilde yapılacağına dair deneyimlerinizi paylaşın. GA'nın gerekli yerel ekstremalardan yalnızca birini bulduğu bir durumla karşılaştım.

Belirli bir TS/sembol için nereye bakacağımı anlıyorum, bu yüzden GA'yı farklı aralıklarda yapıyorum. Ancak genel olarak nasıl ilerleyeceğim net değil.

 
fxsaber:

Lütfen GA'nın nasıl doğru bir şekilde yapılacağına dair deneyimlerinizi paylaşın. GA'nın gerekli yerel ekstremalardan yalnızca birini bulduğu bir durumla karşılaştım.

Belirli bir TS/sembol için nereye bakacağımı anlıyorum, bu yüzden farklı aralıklarda GA yapıyorum. Ancak genel olarak, nasıl ilerleneceği açık değildir.

Sanırım burada konuyla ilgili bir şey vardı - https://www.mql5.com/ru/forum/87536.

Ya da yazarı arayın(@Andrey Dik).

Чемпионат Алгоритмов Оптимизации.
Чемпионат Алгоритмов Оптимизации.
  • 2016.06.09
  • www.mql5.com
Чемпионат алгоритмов оптимизации задуман как соревнование для людей ищущих, любознательных, для которых стоять на месте означает движение назад...
 
Andrey Khatimlianskii:

Sanırım burada konuyla ilgili bir şey vardı - https://www.mql5.com/ru/forum/87536

Ya da yazarı(@Andrey Dik) arayın.

MT5-Tester kullanımı bağlamında sorular soruyorum. Bu nedenle, özel Optimizasyon algoritmaları uygun değildir.

 
fxsaber:

Lütfen GA'nın nasıl doğru bir şekilde yapılacağına dair deneyimlerinizi paylaşın. GA'nın gerekli yerel ekstremalardan yalnızca birini bulduğu bir durumla karşılaştım.

Belirli bir TS/sembol için nereye bakacağımı anlıyorum, bu yüzden farklı aralıklarda GA yapıyorum. Ancak genel olarak, nasıl ilerleneceği açık değildir.

Şimdi düşüş büyükse test etmeyi bırakıyorum

Genel Kurulu biraz neşelendirmek için bunu yapıyorum:

#define  TESTER_STOP(ret) { EA_STOP = true; TesterStop(); return ret; }
double OnTester()
{
   srand((int)TimeCurrent());
// if(StartHour==20 && CountHours==22) return (-(rand() % 1000));// GA çalışma süresine göre bir maksimum etrafında yakınsamaya başladıysa bunu kullanıyorum

   if(EA_STOP) return (-(rand() % 1000));                                                               // başarısız test, büyük bir düşüşle kesintiye uğradı

   int o_count = 0;
   for(int i = OrdersHistoryTotal() - 1; i >= 0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && OrderType() < 2) o_count++;
   }
   if(o_count < 160) return (-(rand() % 1000));                                                         // altı ay içinde en az 160 anlaşma arıyor

   return(AccountInfoDouble(ACCOUNT_BALANCE));
}


void OnTick()
{
   if(IS_OPTIMIZATION)
   {
      double balance = AccountInfoDouble(ACCOUNT_BALANCE);
      MaxBalance = fmax(MaxBalance, balance);
      if(MaxBalance - balance > 200) TESTER_STOP();                                                     // 200$'lık bir düşüşte testi durdurun
   }


Geçen hafta test ettiğim yöntem buydu, şimdi GA'dan çok memnunum.

 

Optimizatörümde GA'yı 4 kez son sonuçta hiçbir gelişme olmayana kadar tekrarlıyorum. Bu bir düzine veya daha fazla deneme gerektirebilir. Genellikle iyi sonuçlar alıyorum. Uzun zaman alsa da.

Güncel tarihlerde yeniden optimizasyon yaparken, yeni bir iyileştirilmiş yerel maksimum elde edebilirim ve değilse - eskisinden başlarım ve yavaş optimizasyonla yeni pazar için iyileştiririm (birbirine bağlı bir grup değişken seçerim ve her kombinasyonu çiftler halinde yinelemeli olarak optimize ederim).

Ek olarak, OnTester'a mikro cezalar (ek mutajen) ekledim. Bu durumda, GA daha sık mutasyonlar nedeniyle daha fazla geçiş gerçekleştirir ve sonuç olarak yeni maksimumlar daha sık bulunur.

// Sonuçlar eşit olduğunda daha küçük bir parametre değeri seçmek için mikro cezalar
res -= BP * 0.0001 / 200;       // Optimizasyon aralığına bölün (0...200)
 
Igor Makanu:

Büyük bir düşüş olursa testi şimdi durduruyorum.

Genel Kurulu biraz neşelendirmek için bunu yapıyorum:

Geçen hafta bu yöntemi kullanarak test yapıyordum, şimdi GA'dan çok memnunum.

Ben de yaklaşık olarak aynı şekilde yapıyorum. Düşüş kontrolü daha hızlı optimizasyon içindir ve işlem sayısının kontrolü GA'yı daha iyi yönlendirmek, çöpleri filtrelemek içindir.

Ancak bu yeterli değil.


ZY Daha ucuz.

TesterStatistics(STAT_TRADES)
 
Edgar Akhmadeev:

OnTester'da mikro cezalar (ek mutajen) getirmiştir. Bu durumda, GA daha sık mutasyonlar nedeniyle daha fazla geçiş gerçekleştirir ve sonuç olarak yeni maksimumlar daha sık bulunur.

Lütfen açıklayın.