MT4-Test Cihazı VS MT5-Test Cihazı

fxsaber  
Uzun süredir devam eden bir fikri gerçekleştirmek için eller uzandı

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

"MQL5 Sihirbazından Hazır Uzman Danışmanlar MetaTrader 4'te çalışır" makalesinin tartışılması

fxsaber , 2017.03.09 13:02

Karşılaştırma için, Tick Data Suite (Uyumlu: MT4 build 940 - 1052) deneme sürümünü almanızı öneririm.

MT5 test cihazında "gerçek keneler ile" modunu seçin. Bunları kaydedin ve TDS aracılığıyla MT4 test cihazına besleyin.

T‌Her iki test cihazındaki teklifler %100 eşleştiğinde, bu onları yalnızca işlemler açısından değil, aynı zamanda hız açısından da doğru bir şekilde karşılaştırmanıza olanak tanır.

Böylece, Uzman Danışmanların dönüşümünü/oluşturulmasını her iki yönde karşılaştırmak mümkün olacaktır.

MT4 build 1072, MT5 build 1596 Alpari-MT5 ticaret sunucusu.

MT4 test cihazı ayarlarının ekran görüntüsü

Her iki test cihazındaki para birimi USD'dir. Bu, EURUSD'deki aynı MT5 test cihazında dönüşüm sembolünden daha fazla kene çekmemesine izin verir.


Her iki test cihazında da böyle bir platformlar arası Uzman Danışman başlattık

 // MQL4&5-code

#property strict

class FILE
{
private :
   const int handle;
  
   static string TickToString( const MqlTick &Tick, const string Delimeter = " " )
  {
     return (:: DoubleToString (Tick.ask, _Digits ) + Delimeter + :: DoubleToString (Tick.bid, _Digits ));
  }
public :  
  FILE( const string FileName ) : handle(:: FileOpen (FileName, FILE_WRITE | FILE_TXT | FILE_ANSI ))
  {
  }
  
  ~FILE( void )
  {
     if ( this .handle != INVALID_HANDLE )
      :: FileClose (handle);       
  }
  
   bool Write( const MqlTick &Tick ) const
  {
     return (( this .handle != INVALID_HANDLE ) && :: FileWriteString ( this .handle, FILE::TickToString(Tick) + "\n" ));
  }
};

const FILE File(:: MQLInfoString ( MQL_PROGRAM_NAME ) + ".txt" );

void OnTick ()
{
   MqlTick Tick;
  
   if ( SymbolInfoTick ( _Symbol , Tick))
    File.Write(Tick);
}


MT4 test cihazı günlüğü

 2017.05 . 07 23 : 25 : 36.155 EURUSD,M1: 1865415 tick events ( 7292 bars, 1865515 bar states) processed in 0 : 00 : 02.528 (total time 0 : 00 : 03.292 )


MT5 test cihazı günlüğü

 2017.05 . 07 23 : 26 : 01.016 Core 1   EURUSD,M1: 1865415 ticks, 7192 bars generated. Test passed in 0 : 00 : 01.918 (including ticks preprocessing 0 : 00 : 00.203 ).

Her bir test cihazından alınan dosyaların aynı olduğundan emin oluruz - test edenlerin onayları aynıdır.


Bu konuda, her iki testçinin de konuyla ilgili hazırlığı hazır.

fxsaber  

danışman

 // MQL4&5-code

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#ifdef __MQL5__
   #define Bid ( SymbolInfoDouble ( _Symbol , SYMBOL_BID ))
   #define Ask ( SymbolInfoDouble ( _Symbol , SYMBOL_ASK ))
#endif // __MQL5__

// Idea - https://www.mql5.com/ru/code/7464
#property strict

input int Shift = 3 ; 
input int Limit = 18 ;
input double Lots = 0.1 ;

int PriceToInteger( const double Price )
{
   return (( int )(Price / _Point + 0.1 ));
}

void OnTick ()
{
   static int PrevBid = PriceToInteger( Bid );
   static int PrevAsk = PriceToInteger( Ask );    

   const int IntBid = PriceToInteger( Bid );
   const int IntAsk = PriceToInteger( Ask );
  
   const bool TradeTime = ( TimeCurrent () % ( 24 * 60 * 60 ) < D'1970.01.01 23:50' ); // exclude swaps
  
   if (TradeTime && (IntAsk - IntBid < Limit))
  {
     if ((IntBid - PrevBid >= Shift)) 
       OrderSend ( _Symbol , OP_SELL , Lots, Bid , 0 , 0 , 0 );
    
     if (PrevAsk - IntAsk >= Shift) 
       OrderSend ( _Symbol , OP_BUY , Lots, Ask , 0 , 0 , 0 );
  }

  PrevBid = IntBid;
  PrevAsk = IntAsk;
  
   for ( int i = OrdersTotal () - 1 ; i >= 0 ; i--) 
     if ( OrderSelect (i, SELECT_BY_POS ) && ((!TradeTime) || ( OrderProfit () > 0 ) ||
        (( OrderType () == OP_BUY )  && (PriceToInteger( OrderOpenPrice ()) - IntBid >= Limit)) ||
        (( OrderType () == OP_SELL ) && (IntAsk - PriceToInteger( OrderOpenPrice ()) >= Limit)))) 
       OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), 0 ); 
}


Sonuçlar


MT4 raporu

Strategy Tester Report
Şanslı
MetaQuotes Demosu (Derleme 1072)

sembol EURUSD (Euro vs USD)
Dönem 1 Dakika (M1) 2017.04.10 00:00 - 2017.04.14 20:58 (2017.04.10 - 2017.04.16)
modeli Tüm onaylar (mevcut en düşük tüm zaman dilimlerine dayalı en doğru yöntem)
Seçenekler vardiya=3; sınır=18; lot=0.1;
Tarihteki barlar 7292 Simüle keneler 1865515 simülasyon kalitesi %99,00
Grafik Uyuşmazlığı Hataları 0
İlk para yatırma 100000.00 Yayılmış değişken
Net kazanç -10863.90 Toplam kar 2528.70 Toplam kayıp -13392.60
karlılık 0.19 kazanma beklentisi -0.49
Mutlak Düşüş 10864.70 Maksimum düşüş 10864,70 (% 10,86) göreceli düşüş %10.86 (10864.70)
Toplam işlemler 21954 Kısa pozisyonlar (% kazandı) 12016 (%68.60) Uzun pozisyonlar (% kazandı) 9938 (%67.03)
Karlı işlemler (tümünün yüzdesi) 14904 (%67.89) İşlemleri kaybetme (tümünün yüzdesi) 7050 (%32.11)
En büyük karlı ticaret 3.00 ticaret kaybetmek -4.40
Orta karlı ticaret 0.17 ticaret kaybetmek -1.90
En yüksek miktar sürekli kazanç (kar) 155 (46.60) sürekli kayıplar (kayıp) 115 (-210.10)
Maks. sürekli kar (kazanç sayısı) 46.60 (155) sürekli kayıp (kayıp sayısı) -210.10 (115)
Ortalama sürekli kazanç 5 sürekli kayıp 2


MT5 raporu

Strateji Test Kullanıcısı raporu
Alpari-MT5 (Derleme 1596)
Ayarlar
Danışman: Şanslı
Sembol: EURUSD
Dönem: M1 (2017.04.10 - 2017.04.16)
Seçenekler: Shift=3
sınır=18
sürü = 0.1
Komisyoncu: Alpari Uluslararası Limited
Para birimi: Amerikan Doları
İlk para yatırma: 100 0000.00
Omuz: 1:100
geriye dönük test
Geçmiş kalitesi: n/a
Barlar: 7192 Tiki: 1865415 Semboller: 1
Net kazanç: -10 863,90 Bakiyeye göre mutlak düşüş: 10 863,90 Şu yollarla mutlak düşüş: 10 864,70
Toplam kar: 2 528.70 Bakiyeye göre maksimum düşüş: 10 863,90 (%10,86) Öz sermayeye göre maksimum düşüş: 10 864,70 (% 10,86)
Toplam kayıp: -13 392.60 Bakiyeye göre göreceli düşüş: %10.86 (10 863.90) Öz sermayeye göre göreceli düşüş: %10,86 (10 864,70)
karlılık: 0.19 Kazanma beklentisi: -0.49 Sınır seviyesi: %863,58
Kurtarma faktörü: -1.00 Sharpe oranı: -0.50 Z-Skoru: -52,22 (%99,74)
AHPR: 1.0000 (-0.00%) LR Korelasyonu: -1.00 OnTester sonucu: 0
GHPR: 1.0000 (-0.00%) LR Standart Hatası: 149.82
Toplam işlemler: 21954 Kısa işlemler (% kazanç): 12016 (%68.60) Uzun işlemler (% kazanç): 9938 (%67.03)
Toplam işlemler: 43908 Karlı işlemler (tümünün yüzdesi): 14904 (%67.89) İşlemleri kaybetme (tümünün yüzdesi): 7050 (%32.11)
En büyük karlı ticaret: 3.00 En büyük kaybeden ticaret: -4.40
Ortalama karlı ticaret: 0.17 Ortalama kaybeden ticaret: -1.90
Maksimum sürekli kazanç sayısı (kar): 155 (46.60) Maksimum sürekli kayıp sayısı (kayıp): 115 (-210.10)
Maks. sürekli kar (kazanç sayısı): 46.60 (155) Maks. sürekli kayıp (kayıp sayısı): -210.10 (115)
Ortalama Sürekli Kazanç: 5 Ortalama Sürekli Kayıp: 2


Sonuçlar eşleşiyor!


Verim

MT4 günlüğü
 2017.05 . 08 01 : 45 : 42.765 EURUSD,M1: 1865415 tick events ( 7292 bars, 1865515 bar states) processed in 0 : 00 : 03.682 (total time 0 : 00 : 04.400 )


MT5 günlüğü

 2017.05 . 08 02 : 04 : 53.278 Core 1   EURUSD,M1: 1865415 ticks, 7192 bars generated. Test passed in 0 : 00 : 12.309 (including ticks preprocessing 0 : 00 : 00.203 ).


MT4 test cihazı, MT5 test cihazından 3 kat daha hızlı yaptı. MT5 yavaşlamasının üçüncü taraf bir kitaplık kullanımından kaynaklandığına dair herhangi bir şüphe varsa, isteyenler bu Expert Advisor'ın basit MT4 mantığını MQL5'te kendi yöntemleriyle yeniden yazabilir ve hipotezi test edebilir.


Tehdit MT5 test cihazı, tüm Bases klasörlerini elleriyle temizleyene kadar çok daha yavaş çalıştı. Sonuçlar bu durum dikkate alınarak sunulmuştur.

Renat Fatkhullin  

Alpari-MT5-Demo sunucusunda , işlem geçmişine hızlı erişim ile yeni bir yapıda (bu hafta yayınlayacağız) şunları aldım:

EURUSD,M1: 1865417 ticks, 7192 bars generated. Test passed in 0 : 00 : 05.578 .

MT5, verileri ve görevin kendisini aracının harici işlemine aktarmak için bir sistem ek yüküne sahiptir ve bu, küçük (ikinci) görevlerde karşılaştırmalarda büyük bir hataya neden olur.

Eh, MT5'teki test cihazının karmaşıklığı ve kalitesi bir büyüklük sırasıdır: birçok enstrümanın milisaniyelik doğrulukla senkronize modellemesi, dünya değişikliklerinin kaydırılması sırasında adil kaymalar/gecikmeler ve bir dizi daha küçük işlev. Aynı yerde maliyet döngüsü değil.


Daha yavaş büyüklük sıraları hakkında - tüm verilerin ilk başlatılması / senkronizasyonu ve indirilmesi ile karıştırmayın? Loglarda her şey yazıyor. Diskteki dosyalara hiçbir durumda dokunulmamalıdır.

%userdata%\MetaQuotes dizinini (C:\Users\%username%\AppData\Roaming\MetaQuotes gibi) antivirüs geçişine eklemenizi öneririm. Veriler oradadır ve geçişe bir antivirüs eklenmesi, terminal ve test cihazının verilerine erişim hızını önemli ölçüde artırır.

Aksi takdirde, metatester[64].exe'nin başlatıldığını, bir ağ bağlantı noktası ve terminal ve test cihazı tarafından yazılan çok sayıda büyük veri dosyasının açıldığını gördüklerinde böylesine güçlü bir test etkinliği geliştirirler. Bazı tüccarlar için, antivirüsün başlatılmakta olan metatester[64].exe dosyasını kontrol etmek için zamanı olmadığı ve terminalin birkaç saniye içinde bile erişemeyeceği için test cihazının bile düşmek için zamanı vardır.

fxsaber  
Renat Fatkhullin :

MT5'teki test cihazının karmaşıklığı ve kalitesi bir kat daha yüksektir: birçok enstrümanın milisaniyelik doğrulukla eşzamanlı modellemesi , dünya değişikliklerinin kaydırılması sırasında adil kaymalar/gecikmeler ve bir dizi daha küçük işlev.

Bu aynı zamanda MT4+TDS kombinasyonunda da mevcuttur. Artı, MT5'te eksik olan başka özellikler de var... Ama tabii ki çoklu para birimi yok.

Daha yavaş büyüklük emirleri hakkında

İlk başta TDS'nin özellikle MT5'i yavaşlattığını düşündüm, bu yüzden hafızasını temizledim. Aynı zamanda, Bases klasörleri (disk alanı tükeniyordu). Bundan sonra, MT5 iki büyüklük sırasını daha hızlı tek bir çalıştırma gerçekleştirmeye başladı (bundan önce yeniden başlatmalar yardımcı olmadı). Ne kadar denersem deneyeyim, TDS frenleriyle ilgili hipotezi doğrulayamadım. Makinede antivirüs yoktu.

Alpari-MT5 sunucusu - gerçek.


Tehdit Tam arama için MT4 optimize edici başlatıldı - 14 dakika. MT5 (yalnızca bir ajan kaldı) - görünüşe göre daha saatler olacak. Sonuçları sabah/öğleden sonra yazarım.

Renat Fatkhullin  

Fişler nereden?

Tamamen farklı bir şey demek istiyorsun. MT5 test cihazındaki Delay alanı ile oynayın ve tamamen farklı olduğunu göreceksiniz. MQL5 kodundaki normal Sleep(2500) bile, test cihazında yürütüldüğünde, tüm dünya modellenmeye devam ederken kodda gecikmeye neden olacaktır. Yürütme gecikmesi alanı, 100ms ping'inizi oradaki sunucuya koyarsanız, işlemlerin nasıl yürütüleceğini etkin bir şekilde gösterir.

Büyüklükte frenler olamaz. Ve MT5 kendi kendine iyi çalışıyorken neden herhangi bir ekleme yapsın ki?

Aramalar hakkında - ayar ve sınır yoktur.
fxsaber  

Büstler (başlangıçta 100.000 USD)


MT4'teki fişler (tik geçmişindeki milisaniyeler olması gerektiği gibi çalışır) ve diğer kullanışlılık


fxsaber  
Renat Fatkhullin :

Antivirüs eksikliği hakkında - uzun bir süredir, yediden tüm sürümlerde, tüm dosyaları oldukça iyi tarayan düzenli ve göze çarpmayan bir Windows Defender var.

Engelli. Şimdiden, optimizasyonda güçlü MT5 yavaşlamaları görmek için tüm veriler var. Karşılaştırmalı optimizasyon sonuçları , MT5 çalışmasının sonunda yayınlanacaktır.
fxsaber  
Fikri kopyalarla yakalamadım

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

fxsaber , 2017.05.07 21:55

Alpari-MT5 ticaret sunucusu

FOREX sembollerinin kene geçmişinde neden yinelenen tikler var (teklif ve talep eşittir)?

Test cihazı, Uzman Danışmanları kopyalar halinde çalıştırır ve bunların yarısı vardır. Performansta iki kez karşılık gelen bir düşüş elde etmek gerçekten gerekli mi?

Renat Fatkhullin  

Sen hala hangi notlardan bahsettiğimi anlamıyorsun. MT4'te bu temelde çalışmıyor.

Tiklerde değil, µl5 programını çalıştırma sürecinde, durduğunda ve keneler devam ediyor ve dünya dönüyor. Sleep(3000) yazın ve program 3 saniye bekleyecek, keneler işaretlenirken piyasa simüle edilecektir.

Test cihazında Yürütme gecikmesi alanını 200 ms'ye ayarlarsanız, işlemler yürütülürken 200'lük bir ağ gecikmesi simüle edilir ve bu da piyasa kaymasına veya yeniden fiyat verilmesine neden olur .

Bu, ayrıca, çok para birimli bir sistem çerçevesinde piyasa süreçlerini modellemenin tamamen farklı ve güçlü bir seviyesidir. Ve daha da önemlisi, uzaktan yabancılaştırılabilir bir süreçte. Örneğin, 10.000 km uzaktaki bir aracı, bir görevi yerine getirirken, birdenbire koddan eksik sembollere erişim için dinamik bir istek alır ve bu verileri master'dan talep edebilir, pazar dünyasına entegre edebilir ve döndürmeye devam edebilir.

fxsaber  
Renat Fatkhullin :

Hala hangi notlardan bahsettiğimi anlamıyorsun. MT4'te bu temelde çalışmıyor.

Tiklerde değil, µl5 programını çalıştırma sürecinde, durduğunda ve keneler devam ediyor ve dünya dönüyor. Sleep(3000) yazın ve program 3 saniye bekleyecek, keneler işaretlenirken piyasa simüle edilecektir.

Bu şimdi MT4'te çalışmıyor.

Test cihazında Yürütme gecikmesi alanını 200 ms'ye ayarlarsanız, işlemler yürütülürken 200'lük bir ağ gecikmesi simüle edilir ve bu da piyasa kaymasına veya yeniden fiyat verilmesine neden olur.

Şimdi MT4'te çalışıyor.

Bu, ayrıca, çok para birimli bir sistem çerçevesinde piyasa süreçlerini modellemenin tamamen farklı ve güçlü bir seviyesidir. Ve daha da önemlisi, uzaktan yabancılaştırılabilir bir süreçte. Örneğin, 10.000 km uzaktaki bir aracı, bir görevi yürütürken birdenbire koddan eksik sembollere erişim için dinamik bir istek alır ve bu verileri master'dan talep edebilir, pazar dünyasına entegre edebilir ve döndürmeye devam edebilir.

MT5'i karalamak niyetinde değilim. Sadece tekrarlanabilir bir şekilde karşılaştırma. Tabii ki, MT5 test cihazı bazı açılardan elde edilemez, ancak MT4'ün ayarlanması artık MT5'te olmayan, ancak gerçekten talep gören şeyler verebilir. MT4'te gerçek özel keneler üzerinde yapılan doğru bir testin %100 doğru olduğunu gördük. Test cihazının her türlü ayarının (komisyon, girintiler, mevduat etkinleştirme kuralları vb.) düzenlenmesi mevcuttur. Genel olarak, henüz MT5'te temel olarak uygulanmayan şeyler var.
Neden: