Fan sayfamıza katılın
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın
- Görüntülemeler:
- 25
- Derecelendirme:
- Yayınlandı:
- 2025.04.03 11:15
-
Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git
Bu kütüphane tst dosyalarını okumanızı/yazmanızı sağlar - MT5-Tester tek geçiş formatı.
Bazı kullanım çeşitleri
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi üzerine forum
fxsaber, 2019.10.04 07:18 pm.
Eğer tst-dosyalarının formatını açarlarsa ve Tester'ın önbellek klasörünü sandbox'a yerleştirirlerse, Tester sonuçlarının analizörleri / düzelticileri olacak yeni bir türde Piyasa ürünleri oluşturmak mümkündür.
Örneğin, önbellekte bulunan tüm tekli geçişleri gösteren bir Market-combine yazmak mümkün olacaktır.
- Gerekli olanları fare ile seçersiniz ve birleştirilmiş istatistikleri gösterir.
- Önbelleği gereksiz geçişlerden temizler.
- Geçişlerden uygun ağırlık katsayıları ile optimum portföyü hesaplar.
- Her geçiş için en iyi işlem aralıklarını gösterir.
- Filtreler de dahil olmak üzere istatistiklerin kendi etkileşimli görselleştirmesini sunar.
- Optimal MM'yi hesaplar.
- Geçmişteki her bir hedge pozisyonu için OrderOpenPriceBest (pozisyonun ömrü boyunca en iyi açılış fiyatı), OrderClosePriceBest (benzer), OrderOpenPriceLength (pozisyonun ömrü boyunca fiyatın OrderOpenPrice'dan ne kadar süre daha kötü olmadığı), OrderClosePriceLength (benzer), OrderProfitBest (orijinal pozisyonun ömrü boyunca benzer bir pozisyonun mümkün olan en yüksek karı) gösterir.
- Her bir hedge pozisyonunun verimliliğini gösterir.
- Gecikme etkinleştirildiğinde sonucu hesaplar.
- Farklı emir gerçekleştirme ayarlarında (kayma vb.) ve komisyonlarda sonucu hesaplar.
- TS'nin sonucunu farklı bir tik geçmişinde gösterir.
- ...
Her bir öğeyi uygulamak için Tester'ı başlatmanıza gerek yoktur.
Önbellek klasörünü mklink aracılığıyla sandbox'a koyarsanız, tüm bunlar şimdi yapılabilir. Sadece tst-formatına ihtiyacınız var.
Kim kendinde bu gücü hissediyorsa muhtemelen böyle bir ürün yazmaya başlamalıdır. Geliştirici ekibine memnuniyetle katılır ve satın alırdım. Bu alan tamamen boş.
Eğer cache-folder sandbox'a alınmazsa, benzer ürünlerin başka dillerde yazılacağı için MQ ekosistemi dışında ortaya çıkma ihtimali artabilir.
Örnekler.
#include <fxsaber\SingleTesterCache\SingleTesterCache.mqh> // Test cihazının tek geçişli verileri. void OnStart() { SINGLETESTERCACHE SingleTesterCache; // Bir tester önbellek nesnesi oluşturuldu. SingleTesterCache.Set(); // İhalenin gerçek hikayesini içine koyun. // ..\.\.\MQL5\Files/Test.tst. Print(SingleTesterCache.Save("Test.tst")); // Tester'a aktarılabilecek bir dosyaya yazın. }
Bu komut dosyası, gerçek hesap ticaret geçmişini tst formatına dönüştürür. Test Cihazına aşağıdaki gibi aktarılır.
Bunun gibi bir şey ortaya çıkıyor.
DLL çözümleri KB'ye yerleştirilemez, bu nedenle aşağıda KB teslimatına dahil olmayan başka bir betiğin kaynak kodu bulunmaktadır.
#include <fxsaber\SingleTesterCache\SingleTesterCache.mqh> // Test cihazının tek geçişli verileri. #include <Graphics\Graphic.mqh> #include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/tr/code/26132 #define MIN_WIDTH 10 // Bir grafik oluşturuluyor. string GraphPlot( const double &Y1[], const double &Y2[], int Width = 0, int Height = 0, const ENUM_CURVE_TYPE Type = CURVE_NONE, const string CurveName1 = NULL, const string CurveName2 = NULL, string ObjName = NULL ) { Width = Width ? Width : (int)::ChartGetInteger(0, CHART_WIDTH_IN_PIXELS); Height = Height ? Height : (int)::ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS); ObjName = (ObjName == NULL) ? __FUNCTION__ : ObjName; CGraphic Graphic; const bool Res = (::ObjectFind(0, ObjName) >= 0) ? Graphic.Attach(0, ObjName) : Graphic.Create(0, ObjName, 0, 0, 0, Width, Height); if (Res) { const int Size1 = ::ArraySize(Y1); const int Size2 = ::ArraySize(Y2); Graphic.CurveAdd(Y1, ((Type == CURVE_NONE) && Size1) ? ((Width / Size1 < MIN_WIDTH) ? CURVE_LINES : CURVE_POINTS_AND_LINES) : Type, CurveName1); Graphic.CurveAdd(Y2, ((Type == CURVE_NONE) && Size2) ? ((Width / Size2 < MIN_WIDTH) ? CURVE_LINES : CURVE_POINTS_AND_LINES) : Type, CurveName2); Graphic.CurvePlotAll(); Graphic.Update(); } return (Res ? Graphic.ChartObjectName() : NULL); } void OnStart() { uchar Bytes2[]; if (MTTESTER::GetLastTstCache(Bytes2) != -1) // Tek bir çalıştırmanın son önbellek kaydını okumak mümkün olsaydı { const SINGLETESTERCACHE SingleTesterCache(Bytes2); // İlgili nesnenin içine sürün. SingleTesterCache.SaveSet(NULL, true, "Created by " + __FILE__); // Set dosyasını ayrıntılarıyla birlikte kaydedin. double Balance[]; double Equity[]; // Bakiye ve özkaynak grafiğini yazdırın. if (SingleTesterCache.GetBalance(Balance) && SingleTesterCache.GetEquity(Equity)) GraphPlot(Balance, Equity, 1200, 500, CURVE_NONE, "Balance", "Equity"); Print(SingleTesterCache.Header.ToString()); // Tek bir geçişin başlığının çıktısını alın. Print(SingleTesterCache.Summary.ToString()); // Statistica. Print(SingleTesterCache.Inputs); // Girdi parametreleri. } }
Bu komut dosyası, son tek geçişin verilerini otomatik olarak alacak ve bir denge / özkaynak grafiği de dahil olmak üzere verilerini çıkaracaktır.
Teşekkür.
Tester önbelleklerini oluşturdukları ve formatlarını açmama yardımcı oldukları için geliştiricilere teşekkürler.
MetaQuotes Ltd tarafından Rusçadan çevrilmiştir.
Orijinal kod: https://www.mql5.com/ru/code/27611

A zigzag based on the trend change of the parabolic sar

This MT5 Expert Advisor combines multi-timeframe candlestick pattern analysis with fundamental event filtering to execute trades with disciplined risk management.

Takvim - geçmiş ve gerçek zamanlı temel analiz.

Bir Uzman Danışmanın OnTick () olay işleyicisinde yeni bir çubuğun veya mumun başlangıcını algılama.