Kütüphaneler: MultiTester - sayfa 35

 
fxsaber #:

Testteki yardımlarınız için teşekkür ederiz! Güncellenmiş MTTester.mqh gönderildi.

Kütüphane için çok teşekkür ederim

 
MTTester.mqh tekrar güncellendi. Bu sefer size ne ile mücadele ettiğimi anlatacağım.
#include <fxsaber\Benchmark\Benchmark.mqh>  // https://www.mql5.com/tr/code/31279
#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/tr/code/26132

const bool Init = EventSetTimer(3);

void OnTimer()
{
  if (MTTESTER::IsReady()) // Başlat düğmesine basılmaya hazırsa
    Print(_B(MTTESTER::ClickStart(), 1)); // Başlat düğmesine basılıp basılmadığı ve ne kadar sürdüğü.
}

Bu Uzman Danışman, Durdur değilse, her üç saniyede bir Başlat düğmesine basar. Basmayı başardım - doğru, aksi takdirde - yanlış.


Standart durum.

Başlat'a basıldı - hesaplama başladı.

Alert: Bench_Stack = 0, 1 <= Time[Test.mq5 9 in OnTimer: MTTESTER::ClickStart()] = 125248 mcs.
true
Alert: Bench_Stack = 0, 1 <= Time[Test.mq5 9 in OnTimer: MTTESTER::ClickStart()] = 123327 mcs.
true

Bu işlem ~125 ms sürer.


Bu alışılmadık bir durum değil.

Başlat'a basın - ya anlık hesaplama başlatılır ya da Test Cihazı hesaplamayı gerçekleştiremediğini bildirir (örn. FromDate >= ToDate).

Alert: MTTester.mqh: Start->Stop - is not detected!
Alert: Bench_Stack = 0, 1 <= Time[Test.mq5 9 in OnTimer: MTTESTER::ClickStart()] = 1001401 mcs.
true
Alert: MTTester.mqh: Start->Stop - is not detected!
Alert: Bench_Stack = 0, 1 <= Time[Test.mq5 9 in OnTimer: MTTESTER::ClickStart()] = 1004102 mcs.
true

Bu işlem yaklaşık bir saniye sürer. Kütüphane uyarı verecek, ancak düğmeye basıldığı için true değerini döndürecektir.


Nadir bir durum.

Başlat düğmesine basılmamış. Bu durum yalnızca Terminal yeniden başlatılarak düzeltilebilir.

Bu durumun kayıtları bende yok. Böyle bir durumu tespit etmek <10 saniye sürecektir. Bunun gibi bir uyarı olacak.

problem with Start-button!

Yanlış döndür - düğmeye basılmamıştır.

 
MTTester.mqh güncellendi.
 
fxsaber #:

Nadir bir durum.

Başlat düğmesine basılmamış. Bu durum yalnızca Terminal yeniden başlatılarak düzeltilebilir.

Uzaktaki bir WinServer makinesi hiç hata vermeden sürekli olarak yüzlerce tek geçiş yapıyordu.


Bu makinede oturum açar açmaz (RDP), Başlat düğmesi tıklamayı durdurdu. Tedavisi, her zaman olduğu gibi, Terminal'i yeniden başlatmak.

Görünüşe göre bu davranışın makineye yapılan benzer girişlerle bir ilgisi var. RDP üzerinden düzinelerce kez oturum açabilirsiniz - her şey yolunda çalışır. Ancak bazı girişler Test Cihazı için ölümcül olur.


Start-bug ile karşılaşanlar - makinede oturum açma ile Start düğmesi arasındaki ilişkiye dikkat edin.


ZY Tesadüf olsun ya da olmasın, WinServer makineye bu oturum açma sırasında güncellemelerini kontrol etmeyi teklif etti.

 

İyi kütüphane.
Test için programlı olarak hangi *.set dosyasının parametre ayarlarıyla geçileceğini belirtmek mümkün mü?

Varsayılan olarak yalnızca aynı ayarlar kullanılır, bu da çok uygun değildir.

 
sergego18 #:

Test için programatik olarak hangi *.set dosyasının parametre ayarları ile geçileceğini belirtmek mümkün mü?

Örnek.
 
fxsaber #:
Örnek.

Teşekkürler.
Ayarları, satırları \n karakteri ile ayrılmış tek bir satırda geçmek daha mı iyidir.

yoksa örnekteki gibi bir satır dizisi mi?

Ve şu şekilde değiştirmek mümkün mü

MTTester sınıfı statik yöntemi Run

static bool Run( const string ExpertName = NULL,

const string Symb = NULL,

const ENUM_TIMEFRAMES period = PERIOD_CURRENT,

const datetime iBeginTime = 0,

const datetime iEndTime = 0 )

.set EA ayarlarını belirten bir parametre dizesi (veya dizeler dizisi) ekleyebilir misiniz?

 
sergego18 #:

Teşekkür ederim.
Ayarları \n karakteri ile ayrılmış satırlarla tek bir satırda geçmek daha mı iyi?

yoksa örnekteki gibi bir satır dizisi mi?

GetSettings, Tester'da CTRL+C'dir.

SetSettings, Tester'da CTRL+V'dir.

CTRL+C/V'nin hangi verilerle çalıştığını görün.


Ve bunun değiştirilmesinin mümkün olup olmadığı

MTTester sınıfı statik yöntemi Run

Ben bu yöntemi kullanmıyorum. Geçmiş olarak kalır.


Örnek, ihtiyaç duyulan tüm MTTESTER yöntemlerini göstermektedir.

 
sergego18 #:

Test için programatik olarak hangi *.set dosyasının parametre ayarları ile geçileceğini belirtmek mümkün mü?

Validate, Tester'ın tam teşekküllü ini dosyaları ve azaltılmış bir versiyonu - Tester için set dosyaları ile çalışır.

Çok sayıda ini/set dosyası çalıştırmanız gerekiyorsa, Validate bunu kutudan çıkar çıkmaz yapar. Kullanmak için.

 
fxsaber #:

Validate, tam teşekküllü Tester ini-dosyaları ve sadeleştirilmiş bir sürüm olan Tester için set-dosyaları ile çalışır.

Çok sayıda ini/set dosyası çalıştırmanız gerekiyorsa, Validate bunu kutudan çıkar çıkmaz yapar. Kullan.

Teşekkürler.
Bu yorumdan set dosyasının string dizi olarak gerekli formatta yüklendiği bir çözüm buldum.

https://www.mql5.com/ru/forum/318305/page34#comment_51842356

Ben de değiştirdim

typedef bool (*INITDEINIT)( void );

Her çalışmanın başlatılması ve sonlandırılmasında geri arama çağrılarının işaretçisi

arayüze

arayüz InitDeInit {

bool RunInit();

bool RunDeInit();

};

bir mirasçıda uygulanan

SETTINGS yapısına benzer bir sınıfın

ve böylece RunInit() yönteminde.

Gerekli aracın set dosyasını yüklüyorum.

typedef bool (*INITDEINIT)( void ); - bu işaretçi hangi aracın başlatıldığını/devre dışı bırakıldığını bilmenize izin vermez, bu nedenle arayüze bir işaretçi kullanmak daha iyidir, çünkü yöntemlere işaretçiler henüz MQL tarafından desteklenmemektedir.

Bu yaklaşımla MTTester::Run yöntemini değiştirmeye gerek yoktur.



Библиотеки: MultiTester - Обновил платформу MetaTrader 5 build 3550 улучшения и исправления Fxsaber.
Библиотеки: MultiTester - Обновил платформу MetaTrader 5 build 3550 улучшения и исправления Fxsaber.
  • 2024.01.21
  • Yuriy Bykov
  • www.mql5.com
You can add this draft function for reading settings from file to string array. автоматическим торговым системам и тестированию торговых стратегий. Validate умеет запускать последовательно много ini-задайний