Fan sayfamıza katılın
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın
Denge ve öz sermaye grafiklerini kaydeden ve ek optimizasyon kriterlerini hesaplayan kod - MetaTrader 5 için kütüphane
- Görüntülemeler:
- 41
- Derecelendirme:
- Yayınlandı:
- Güncellendi:
-
Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git
Büyük bir projesinden kodunupaylaşmayakarar verdim ayrı bir kütüphanesinde tasarladı.
Uzman Danışman koduna erişiminiz varsa, bu kütüphaneden ek kod ekleyerek bakiye ve öz sermaye grafiklerini kaydedebilir ve ek optimizasyon kriterlerini hesaplayabilirsiniz.
Advanced Optimization Report Saver.mqh dosyasını ekteki bağlantıdan indirin ve terminal klasörüne kaydedin \MQL5\Include\
İndirilen dosyayı bağlayan kodu ekleyin: (Uzman Danışman kodunuzun son satırının altına veya başka bir yere ekleyebilirsiniz)
#include <Advanced Optimization Report Saver.mqh> Ardından, Uzman Danışmanınızdaki mevcut işlevlere dışa aktarılan işlevlere çağrılar eklemeniz gerekir: (işlev yoksa ekleyin)
void OnTick(){ //... kodunuz //Bakiye ve özkaynak grafiklerini kaydedin save_OnTick(TimeCurrent(), AccountInfoDouble(ACCOUNT_BALANCE), AccountInfoDouble(ACCOUNT_EQUITY)); } void OnTesterInit() { //... kodunuz save_OnTesterInit();//print to chart "Optimizasyon tamamlanana kadar bu pencereyi kapatmayın!" } void OnTesterDeinit(){ //... kodunuz save_OnTesterDeinit();// çerçeveleri al } double OnTester(){ //... kodunuz //her türlü özel değeri kaydedin: double AvgPips=0; save_Add( AvgPips, 2, "Custom 1", true);//value, digits, name, sort_min_to_max save_Add( TesterStatistics( STAT_PROFIT ), 2, "Custom 2"); double Custom = 0;//özel fitness'ınız saveCharts(Custom);//son özkaynakları, tüm anlaşmaları saklayın... return Custom; }
save_Add fonksiyonları, Raporunuza dahil etmek istediğiniz kendi kriterlerinizi eklemenize olanak tanır:
save_Add( AvgPips, 2, "Custom 1", true);//value, digits, name, sort_min_to_max
save_Add( TesterStatistics( STAT_PROFIT ), 2, "Custom 2");
Örneğin, bu kodu Örnekler klasöründeki Hareketli Ortalama Uzman Danışmanına ekleyelim (...\MQL5\Experts\Examples\Moving Average\MovingAverage.mq5). İlk olarak, orijinal Uzman Danışmanı kopyalayın ve Moving Average Charts.mq5 olarak adlandırın. Şimdi, yukarıdaki talimatlardaki kodu buna ekleyin.
Değişiklikler yalnızca kodun en sonunda, CheckForOpen(); satırından sonra OnTick() işlevinden başlayarak yapılır:
void OnTick(void) { //--- if(SelectPosition()) CheckForClose(); else CheckForOpen(); //Bakiye ve özkaynak grafiklerini kaydedin save_OnTick (TimeCurrent(), AccountInfoDouble( ACCOUNT_BALANCE), AccountInfoDouble( ACCOUNT_EQUITY)); } void OnTesterInit() { //... kodunuz save_OnTesterInit();//print to chart "Optimizasyon tamamlanana kadar bu pencereyi kapatmayın!" } void OnTesterDeinit(){ //... kodunuz save_OnTesterDeinit();// çerçeveleri al } double OnTester(){ //... kodunuz //her türlü özel değeri kaydedin: double AvgPips=0; save_Add( AvgPips, 2, "Custom 1", true);//value, digits, name, sort_min_to_max save_Add( TesterStatistics( STAT_PROFIT ), 2, "Custom 2"); double Custom = 0;//özel fitness'ınız saveCharts(Custom);//son özkaynakları, tüm anlaşmaları saklayın... return Custom; } #include <Advanced Optimization Report Saver.mqh>
Gördüğünüz gibi, oldukça basit ve sadece birkaç dakika sürüyor.
Bundan sonra, optimizasyonu çalıştırabilirsiniz:


Son ekran görüntüsü, bağlı kodun 2 parametre eklediğini göstermektedir:
- İstatistikleri Kaydet - istatistiklerin toplanmasını etkinleştirir veya devre dışı bırakır
- Denge ve öz sermaye grafiklerindeki pikseller - mini grafiklerin genişliğindeki piksel sayısını belirtir.
Optimizasyon tamamlandığında, bir rapor oluşturabilir (kaydedilen kareleri ayrıştıran bir program kullanarak) ve aşağıdakileri görebilirsiniz:
| MovingPeriod ile 100 satır | MovingShift ile10 satır |
Eğer 20'den fazla satır varsa, ortalama değerlerin sadece 3 yatay satırı görüntülenecektir: 3 üstte ve 3 altta.
100 satırın algılanması zordur, bu nedenle sayılarını azaltmanız gerekir.
Giriş değişkenlerini aynı adımla değil, bir numaralandırıcı (enum) aracılığıyla bir ölçekle kullanırsınız, örneğin: 1,2,3,5,7,10,15,20,30,50,70,100 - 100 yerine sadece 12 satır olacaktır.
enum nums1 {__0=0, __1=1, __2=2, __3=3, __5=5, __7=7, __10=10, __15=15, __20=20, __30=30, __50=50, __70=70, __100=100, __150=150, __200=200, __300=300, __500=500}; input nums1 MovingPeriod = 10; // Hareketli Ortalama dönemiUzman Danışmanın enum sürümünü ekli dosyalardan indirebilirsiniz.
1000 optimizasyon geçişi yerine 120 olacak ve hesaplama süresi ~ 8 kat daha hızlı olacak ve dosya boyutu ~ 8 kat daha küçük olacaktır.
Sonuç daha görünür:

MovingPeriod = 15 ile elde edilen sonuç, en yüksek ortalama çizgisi ve en yüksek maksimum ile hemen göze çarpmaktadır.
Ancak, genellikle olduğu gibi, geriye dönük testteki en iyi sonuçlar ileriye dönük testteki en iyi sonuçlar değildir.
Kaydedilen çerçeveleri ayrıştıran programınız bu gibi Grafikleri görüntüleyebilir:

Ve bunun gibi ek kriterler:
Başka ilginç kriterler için bir kodunuz varsa, bunları kütüphaneye eklemek için önerebilirsiniz.
Güncellemeler:
- 2026-02-02: Özel Kriter adlarında UTF karakterleri için destek eklendi.
MetaQuotes Ltd tarafından İngilizceden çevrilmiştir.
Orijinal kod: https://www.mql5.com/en/code/68706
Previous Day highs and lows
Draws the previous day High, Low, and Close as horizontal reference lines on the chart for a configurable number of past days. Yesterday's levels extend into today as live support and resistance, with optional touch alerts.
Trade With MA
Trade using MA. An easy indicator to identify the trend direction on a specific timeframe.
Binary tradng based on candle colors
Mum renklerini sayan basit bir ikili ticaret stratejisi.
ShowTradeLines Service
Bu, mevcut pozisyonların/işlemlerin giriş/çıkış noktalarını grafikler üzerinde trend çizgileri ve/veya oklar olarak gösteren bir hizmettir.


