MT4-Test Cihazı VS MT5-Test Cihazı - sayfa 3

 
fxsaber :
Kanıt

Bu kanıt değil.

Yanılıyorsun.

İfadem geçerlidir - belirtilen uzman yalnızca işlemlerin geçmişine erişimi test eder.
 
Renat Fatkhullin :

Bu kanıt değil.

Yanılıyorsun.

Hata nerede? Hatta kendimi kontrol ettim, Geçmiş fonksiyonlarının olduğu her yerde BreakPoint'leri ayarladım ve CTRL+F5 ile hata ayıklamaya başladım. Her şey temiz çalıştı.
Renat Fatkhullin'in fotoğrafı.
İfadem geçerlidir - belirtilen uzman yalnızca işlemlerin geçmişine erişimi test eder.

Sonuçlara atladı.

 

Bu tür karşılaştırmaların bir anlamı olduğundan emin değilim - bulut bilişim , MT4 test cihazının hızdaki tüm avantajlarını sıfıra indirir.

Ayrıca, bu durumda, danışman yalnızca veri erişiminin hızını test eder. Ancak bunun danışmanların çoğu için bir "darboğaz" olduğunu düşünmüyorum.

MT5'te riskten korunma pozisyonlu hesapların devreye girmesinden sonra, MT4 için şahsen kendim için tek bir artı görmüyorum. Yalnızca gerçek hesaplarda MT4'e sahip olduğum için platformlar arası kitaplıkları kullanıyorum.

Kişisel olarak eksik olduğum tek şey, işaretçiler veya dizilere yapılan referanslar. Böylece göstergelerdeki verileri bir kez daha kopyalamanıza gerek kalmaz. Diğer her şey MQL5'te.

Распределенные вычисления в сети MQL5 Cloud Network
Распределенные вычисления в сети MQL5 Cloud Network
  • cloud.mql5.com
Заработать деньги, продавая мощности своего компьютера для сети распределенных вычислений MQL5 Cloud Network
 
fxsaber :
Sonuçlara atladı.
Orada başka neler var? Veri isteği ve bir dosyaya atma. Görünüşe göre daha fazla önlem alınmıyor - ne düşünüyorsunuz, bu Expert Advisor testi mi?
 
fxsaber :

Tehdit Tüm koşular mükemmel şekilde eşleşmedi. Bu, üçünden birinin kesinlikle yalan söylediği anlamına gelir (MT4+TDS, MT5 , MT4Orders). arayacak.

Konu sayesinde suçlu bulundu, karşılaştırma fırsatı olduğunda her zaman olur.

Bir hata gösteren Uzman Danışman

 // MQL4&5-code

#property strict

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

#define PRINT(A) Print ( #A + " = " + ( string )(A));

void OnTick ()
{
   static bool FirstRun = true ;
  
   static const double PrevBid = Bid ;
   static const double PrevAsk = Ask ;
  
   if (FirstRun)
  {
    PRINT((PrevBid != Bid ) || (PrevAsk != Ask ))
    
    FirstRun = false ;
  }
}


MT4

 2017.05 . 08 10 : 57 : 33.056 2017.04 . 10 00 : 00 : 08   TDS_Test EURUSD,M1: (PrevBid!= Bid )||(PrevAsk!= Ask ) = false


MT5

 2017.05 . 08 11 : 01 : 31.266 2017.04 . 10 00 : 00 : 08    (PrevBid!= Bid )||(PrevAsk!= Ask ) = true
 
George Merts :
Orada başka neler var? Veri isteği ve bir dosyaya atma. Görünüşe göre daha fazla önlem alınmıyor - ne düşünüyorsunuz, bu Expert Advisor testi mi?
Tüm tartışmayı okumayı öneriyorum, o zaman bu tür sorular ortaya çıkmayacak bile.
George Merts :

MT5'te riskten korunma pozisyonlu hesapların devreye girmesinden sonra, MT4 için şahsen kendim için tek bir artı görmüyorum.

Bu dal, yapının konsantrasyonu ile bir şekilde ayırt edilir. Bu nedenle, örneğin burada kişisel tercihlerden bahsetmek daha iyidir.

 
fxsaber :
Hata nerede? Hatta kendimi kontrol ettim, Geçmiş fonksiyonlarının olduğu her yerde BreakPoint'leri ayarladım ve CTRL+F5 ile hata ayıklamaya başladım. Her şey temiz çalıştı.

Sonuçlara atladı.

Her şeyin içinde:

  1. tarihle çalışma tüm hızıyla devam ediyor, tarih taramasından sonra anlaşmalar kapatılıyor
  2. MT4Orders.mqh'yi kullanmak, deneyin saflığına hemen bir son vermektir. tiksindirici ve okunaksız yazılmış bir tepesi olan canavarca bir kitaplık. birisi tembelliğini ciddi bir şekilde gösterdi
  3. for(i=200 000; i>=0; i--) OrderSelect'in her tik üzerinde yazılması delilik ve Japon testeresi ve Rus köylüleri hakkındaki şakayı yalnızca tekrarlama girişiminden başka bir şey değildir.
       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 );
    
  4. tüm test sadece 3. noktadan itibaren döngü adına yazılmıştır.

    5 günde 200.000 işlemin açıldığı testte kabaca 1.800.000 tik alıyoruz. Basit olması için, geçmişteki 100.000 siparişin tarandığı ve 900.000 * 100.000 = 900.000.000.000 OrderSelect çağrısı aldığımız (ve hatta kütüphaneden bir ek yük ile) 900.000 onay işaretine sadeleştiriyoruz. İşte bu kadar 900 milyar OrderSelect ve test edildi.

    Ve bunların %99,99'u kesinlikle gereksiz ve sadece "fren" göstermek için yapılıyor.


Temiz bir test yapmak istiyorsanız, kitaplıklar olmadan iki özdeş temiz örnek yazın. Bu nedenle, uyumluluk adına bir saflık garantisi ve yerleşik bir ek yükün olmaması olacaktır.

Geçmiş erişimini optimize ettik ve bu demoyu tamamen iptal ettik. Bilerek öyle yazıldı.

 
Renat Fatkhullin :

Her şeyin içinde:

  1. tarihle çalışma tüm hızıyla devam ediyor, tarih taramasından sonra anlaşmalar kapatılıyor
Neresi?
  1. MT4Orders.mqh'yi kullanmak, deneyin saflığına hemen bir son vermektir. tiksindirici ve okunaksız yazılmış bir tepesi olan canavarca bir kitaplık. birisi tembelliğini ciddi bir şekilde gösterdi
O bendim.
  1. for(i=200 000; i>=0; i--) OrderSelect'in her tik üzerinde yazılması delilik ve Japon testeresi ve Rus köylüleri hakkındaki şakayı yalnızca tekrarlama girişiminden başka bir şey değildir.
MQL4'ü tamamen unutmuşsunuz. Burada tarihe atıfta bulunulmamaktadır.
  1. tüm test sadece 3. noktadan itibaren döngü adına yazılmıştır.

    Çağrıların %99,99'u kesinlikle gereksizdir ve yalnızca "fren" göstermek için yapılmıştır.
Örnek icat edilmedi, kaynakta orijinaline bir bağlantı verildi. Bu, en ünlü ve en eski kafa derisi yüzücülerinden biridir.

Temiz bir test yapmak istiyorsanız, kitaplıklar olmadan iki özdeş temiz örnek yazın. Bu nedenle, uyumluluk adına bir saflık garantisi ve yerleşik bir ek yükün olmaması olacaktır.

İki test cihazını karşılaştırabilmek istiyorum. Her birinin artılarını ve eksilerini görün. Ve karşılaştırma, hataları belirlemenin en etkili yollarından biridir.

Dal, her iki test kullanıcısının ilk verilerinin kimliğinin bir gösterimi ile başlar. Bu, hiçbir yerde olmayan temeldir. Ayrıca, herkes test için bir danışman seçebilir.

Geçmiş erişimini optimize ettik ve bu demoyu tamamen iptal ettik. Bilerek öyle yazıldı.

Birilerinin SD'ye başvurusu sayesinde yapmışlar . Yapıcı eleştiri iyidir.
 

Geçmişle çalışmak, OrderSelect ve benzeri OrderXXXX komutlarıdır. Anlamıyormuş gibi yapmak zorunda değilsin. Özellikle bir kitaplık yazdıysanız.

MQL4'ü unutmadım ve ayrıca tarihle ilgili çalışmalar da var.

Her tikte 200.000 işlem derinliğine bir tarih tarayıcısı yazın ve döngüden makul bir çıkış için koşulu unutun mu? Buna - özellikle Rus köylülerini oynamak için denir.

Ve bazı yüzücülere atıfta bulunmayın. Döngü bilerek çok aptalca yazılmıştır. Ve testten sonraki 5 gün içinde bile, orada %99,99'unun çağrılmasına gerek olmayan yüz milyarlarca OrderXXX işlevinden daha fazlası test edilmedi.


Sorun şu ki, "Uzman Danışman örneğinin tamamı, yalnızca tek bir şey yapacak şekilde yazılmıştır - her tikte tüm işlem geçmişini çok verimsiz bir şekilde tarar", kesinlikle kesin ifadeyle tartışmaya başlamanızdır, Testi neden bu kadar özel olarak yazdığınızı çok iyi bilseniz de. Sonuçta, tek bir el hareketiyle aptal taramanın %99,99'unu kaldırabilirlerdi, ancak o zaman test başarısız olurdu.
 
Renat Fatkhullin :

Geçmişle çalışmak OrderSelect ve benzeri OrderXXXX komutlarıdır. Anlamıyormuş gibi yapmak zorunda değilsin. Özellikle bir kitaplık yazdıysanız.

MQL4'ü unutmadım ve ayrıca tarihle ilgili çalışmalar da var.

Her tikte 200.000 işlem derinliğine bir tarih tarayıcısı yazın ve döngüden makul bir çıkış için koşulu unutun mu? Buna - özellikle Rus köylülerini oynamak için denir.

Ve bazı yüzücülere atıfta bulunmayın. Döngü özel olarak yazılmıştır. Ve testten sonraki 5 gün içinde bile, orada %99,99'unun çağrılmasına gerek olmayan yüz milyarlarca OrderXXX işlevinden daha fazlası test edilmedi.

tartışmayacağım. MQL4'e aşina olan forum üyelerinden bu kısa kaynağa bakmalarını ve Renat'ın ne anlama geldiğini açıklamalarını rica ediyorum.

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

MT4-Test Cihazı VS MT5-Test Cihazı

fxsaber , 2017.05.08 01:11

danışman

 // 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 ); 
}

Muhtemelen yanılıyorum, ama açıkçası, MT4'te tarihle çalışmanın nereye gittiğini göremiyorum. Lütfen yardım et.