Ticaret robotlarını ücretsiz olarak nasıl indirebileceğinizi izleyin
Bizi Facebook üzerinde bulun!
Fan sayfamıza katılın
Komut dosyasını ilginç mi buldunuz?
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın
Komut dosyasını beğendiniz mi? MetaTrader 5 terminalinde deneyin
Uzman Danışmanlar

Optimizasyon Sonuçlarının Gerçek Zamanlı Olarak Görselleştirilmesi - MetaTrader 5 için Uzman Danışman

Görüntülemeler:
306
Derecelendirme:
(48)
Yayınlandı:
2022.03.21 09:24
Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git

MetaTrader 5 Strateji Sınayıcı, her test geçişinden sonra ticaret sisteminin istatistiksel parametrelerini elde etmenizi sağlar.

İstatistiksel parametreler, OnTester() ve OnDeinit() fonksiyonlarının içinde çağrılan TesterStatistics() fonksiyonu kullanılarak elde edilebilir.

Optimizasyon sonuçlarıyla çalışmak için fonksiyonların (FrameFirst(), FrameFilter(), FrameNext(), FrameInputs() ve FrameAdd()) kullanıma sunulmasıyla, yatırımcılar artık görsel optimizasyon gerçekleştirebilir. Gerekli veriler artık Uzman Danışmanın optimizasyonu veya matematiksel problem çözme sırasında işlenebilir ve görüntülenebilir.

Burada, "MetaTrader 5 Sınayıcıda Strateji Görselleştirme" makalesindeki optimizasyon sırasında Uzman Danışmanın test sonuçlarının görselleştirilmesi örneğinin ayrıntılarını ele alacağız.


1. Optimizasyon sırasında bakiye hareketlerinin görselleştirilmesi

1.1. Dosyaların yerleştirilmesi

Moving Averages_With_Frames.mq5 Uzman Danışmanı, terminal_veri_klasörü\MQL5\Experts klasörüne yerleştirilmelidir.

Uzman Danışmanın çalışması için aşağıdaki dosyalar kullanılır:
  1. FrameGenerator.mqh - optimizasyon sonuçlarını görüntülemek için CFrameGenerator sınıfı;
  2. SpecialChart.mqh - birkaç bakiye grafiği çizmek için CSpecialChart sınıfı;
  3. SimpleTable.mqh - CSimpleTable sınıfı, iki sütuna sahip basit tablodur;
  4. ColorProgressBar.mqh - CСolorProgressBar sınıfı, iki renk kullanan ilerleme çubuğudur.

terminal_veri_klasörü\MQL5\Include klasörüne kopyalanmaları gerekir.

Kod Kütüphanesi programları MetaTrader 5 terminali ("Araç Kutusu" penceresinin Kod Kütüphanesi sekmesi) aracılığıyla otomatik olarak indirilebilir. Bunu yapmak için "İndir"e tıklayın. Tüm kodlar indirilecek ve klasörlerine yerleştirilecektir.

Şekil 1. MetaTrader 5 terminali aracılığıyla Kod Kütüphanesi programlarını indirme

Şekil 1. MetaTrader 5 terminali aracılığıyla Kod Kütüphanesi programlarını indirme


1.2. Uzman Danışmanı test etme

Moving Averages_With_Frames.mq5 Uzman Danışmanı, Strateji Sınayıcıda başlatılmalıdır.

Test ayarları:

Moving Averages_With_Frames.mq5 test ayarları

Şekil 2. Moving Averages_With_Frames.mq5 test ayarları

Optimizasyon ayarları:

Moving Averages_With_Frames.mq5 optimizasyon parametreleri

Şekil 3. Moving Averages_With_Frames.mq5 test ayarları


Optimizasyon sırasında Uzman Danışman, bakiye hareketlerini ve optimizasyon geçişi istatistiksel verilerini görüntüler:

Şekil 4. Moving Averages_With_Frames.mq5 optimizasyonu

Şekil 4. Moving Averages_With_Frames.mq5 optimizasyonu

Optimizasyon süreci:




1.3. Uzman Danışmanın çalışma prensibi

Moving Averages_With_Frames.mq5 Uzman Danışmanı, standart MetaTrader 5 terminal paketinde bulunan Moving Averages.mq5 (MQL5\Experts\Examples\Moving Average) temel alınarak oluşturulur.

Sonuçların görselleştirmesi için şu kod eklenmiştir:
//--- optimizasyon sonuçlarıyla çalışmak için kodu bağla
#include <FrameGenerator.mqh>
//--- frame oluşturucu
CFrameGenerator fg;
//+------------------------------------------------------------------+
//| Sınayıcı fonksiyonu                                              |
//+------------------------------------------------------------------+
double OnTester()
  {
//--- optimizasyon kriteri hesaplama fonksiyonunuzu buraya ekleyin
   double TesterCritetia=MathAbs(TesterStatistics(STAT_SHARPE_RATIO)*TesterStatistics(STAT_PROFIT));
   TesterCritetia=TesterStatistics(STAT_PROFIT)>0?TesterCritetia:(-TesterCritetia);
//--- her testten sonra çağır ve optimizasyon kriterini parametre olarak gönder
   fg.OnTester(TesterCritetia);
//---
   return(TesterCritetia);
  }
//+------------------------------------------------------------------+
//| TesterInit fonksiyonu                                            |
//+------------------------------------------------------------------+
void OnTesterInit()
  {
//--- birkaç bakiye çizgisinin görüntülenmesi için grafik hazırla
   fg.OnTesterInit(3); // parametre, grafikteki bakiye çizgilerinin sayısını ayarlar
  }
//+------------------------------------------------------------------+
//| TesterPass fonksiyonu                                            |
//+------------------------------------------------------------------+
void OnTesterPass()
  {
//--- elde edilen test sonuçlarını yönet ve grafikleri görüntüle
   fg.OnTesterPass();
  }
//+------------------------------------------------------------------+
//| TesterDeinit fonksiyonu                                          |
//+------------------------------------------------------------------+
void OnTesterDeinit()
  {
//--- optimizasyon sonu
   fg.OnTesterDeinit();
  }
//+------------------------------------------------------------------+
//|  grafik olaylarını yönet                                         |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {
//--- headera tıklandığında optimizasyonun sonunda framelerin oynatılmasını başlat
   fg.OnChartEvent(id,lparam,dparam,sparam,100); // 100, frameler arasında ms cinsinden duraklamadır
  }
//+------------------------------------------------------------------+

Bu kod benzer şekilde herhangi bir Uzman Danışmanda kullanılabilir.

Optimizasyon sonuçlarıyla çalışmak için CFrameGenerator sınıfı kullanılır. Sınıf, Strateji Sınayıcı olaylarını (OnTester(), OnTesterInit(), OnTesterPass(), OnTesterDeinit()) ve grafik olaylarını (OnChartEvent()) yönetme metotlarını içerir. Kullanılan grafik nesneleri, CFrameGenerator sınıfının OnTesterInit() metodunda hazırlanır.

Her test geçişinden sonra test temsilcisinde CFrameGenerator sınıfının OnTester() metodu çağrılır. Bu metot, işlem sonuçlarına dayalı olarak bakiye hareketlerinin hesaplanmasını sağlar. Bakiye grafiği, uzunluğu gerçekleştirilen işlemlerin sayısına bağlı olan tek boyutlu bir dizidir.

Ardından, istatistiksel verileri (net kâr, kâr faktörü, düzelme faktörü, işlem sayısı, maksimum drawdown yüzdesi, özel optimizasyon kriteri değeri) istemek için TesterStatistics() fonksiyonu kullanılır ve FrameAdd() fonksiyonu kullanılarak terminale (test temsilcisinden) gönderilen frame (bizim durumumuzda test geçişi veri dizisi) oluşturulur.

Frameler, CFrameGenerator sınıfının OnTesterPass() metodunda alınır ve yönetilir. Frame okuma işlemi FrameNext() fonksiyonu ile yapılır. Framein oluşturulduğu Uzman Danışman girdi parametreleri için istek, FrameInputs() fonksiyonu kullanılarak gerçekleştirilir.

Veriler elde edildikten sonra CSimpleTable, CColorProgressBar ve CSpecialChart sınıfları metotları kullanılarak görüntülenir ve güncellenir.

Diğer mevcut optimizasyon geçişi tamamlandıktan sonra test temsilcisinde OnTester() olay yönetimi fonksiyonlarının yürütüldüğüne dikkat etmelisiniz. Bu, karmaşık matematiksel hesaplamaları gerçekleştirmek için MQL5 Cloud Network dağıtılmış ağ kapasitelerinin kullanılmasına olanak sağlar. Bunu yapmak için hesaplama bölümünü OnTester olay yöneticisine yerleştirin.

Matematiksel hesaplamaları (Weierstrass fonksiyonunun sürekli dalgacık dönüşümü) hızlandırmak için optimizasyonu kullanma örneği "Managing optimization processes in real time and transferring massive data from the agents to MetaTrader 5" konusunda gösterilmiştir.


2. CSimpleTable, CColorProgressBar ve CSpecialChart sınıflarıyla çalışma örnekleri

Ekteki Test_SimpleTable.mq5 ve Test_CSpecialChart.mq5 komut dosyaları, CSimpleTable, CColorProgressBar ve CSpecialChart sınıflarıyla çalışma örnekleri içerir. terminal_veri_klasörü\MQL5\Scripts klasörüne kopyalanmaları gerekir.

Şekil 5. Test_SimpleTable.mq5 komut dosyası çalışma sonucu

Şekil 5. Test_SimpleTable.mq5 komut dosyası çalışma sonucu

Şekil 6. Test_CSpecialChart.mq5 komut dosyası çalışma sonucu

Şekil 6. Test_CSpecialChart.mq5 komut dosyası çalışma sonucu


MetaQuotes Ltd tarafından Rusçadan çevrilmiştir.
Orijinal kod: https://www.mql5.com/ru/code/914

EA_OBJPROP_CHART_ID EA_OBJPROP_CHART_ID

Bu Uzman Danışman, OBJ_CHART nesneleriyle normal grafiklerde olduğu gibi çalışma olanaklarını gösterir. Özel renk ayarları yapabilir, göstergeler ekleyebilirsiniz vb.

DRAW_COLOR_CANDLES DRAW_COLOR_CANDLES

DRAW_COLOR_CANDLES çizim stili, açılış, yüksek, düşük ve kapanış fiyatlarını içeren dört gösterge arabelleğinin değerlerine göre, farklı renklere sahip mumlar çizer.

IndicatorParameters() Fonksiyonuyla Çalışma Örneği IndicatorParameters() Fonksiyonuyla Çalışma Örneği

Bu Uzman Danışman, girdi parametrelerinin sayısı, türleri ve değerleri hakkında bilgi almak için IndicatorParameters() fonksiyonun kullanımını gösterir.

ALGLIB - Sayısal Analiz Kütüphanesi ALGLIB - Sayısal Analiz Kütüphanesi

MQL5'e port edilen ALGLIB (sürüm 3.19) matematiksel fonksiyon kütüphanesi.