Hatalar, hatalar, sorular - sayfa 2733

 
Geess :

Bir dize dizisi yerine yalnızca bir uchar dizisini iletin. Daha kolay.
Örneğin, şu şekilde dönüştürebilirsiniz:

MQL4 ve MQL5 için aynı şekilde çalışır

dll'den MQL'ye değerleri döndürmeniz gerekiyor, her durumda MQL tarafında veri almak için bir tampon hazırlamanız gerekiyor

genel olarak, açıklamak için uzun zaman, zaten her şeyi yaptım, sadece danışmaya karar verdim

Teşekkür ederim

 
Ad alanında aşırı yüklenmiş işlevlerin öncelikli çağrılarıyla ilgili MT5 hataları (yapı 2402) sorunları:
1) global ad alanındaki bir işlev aşırı yüklendiğinde;
2) bir sistem işlevi aşırı yüklendiğinde.

 void func(){
   printf ( "1" );
}
      
namespace A{
   void func(){
       printf ( "2" );
   }
   bool OrderSend ( const MqlTradeRequest &trader_request, MqlTradeResult &trade_result){
       printf ( "2" );
       return true ;
   }
      
   class B{
       public :      
       void test(){
         func();                             // PRINT: 1    Expected result: 2
         
         MqlTradeRequest request;
         MqlTradeResult result;
         OrderSend (request, result);         // Compile Error: 'OrderSend' - override system function. Expected result: 2
      }
   };
};

void OnStart (){    
   A::B b;
   b.test();
}
 

Güzel gün!

Lütfen söyleyin, uzman bir Sniper var, MT4 Alpari'deki yeni yapıda çalışmıyor, bir şekilde düzeltebilir miyim? Programda bile görünmüyor. 1090 yapı üzerinde çalışır.

Ancak 1090 yapısındaki MT4 terminali internete bağlanmıyor, "Eski Sürüm" yazıyor.

 
valera_nur :

Güzel gün!

Lütfen söyleyin, uzman bir Sniper var, MT4 Alpari'deki yeni yapıda çalışmıyor, bir şekilde düzeltebilir miyim? Programda bile görünmüyor. 1090 yapı üzerinde çalışır.

Ancak 1090 yapısındaki MT4 terminali internete bağlanmıyor, "Eski Sürüm" yazıyor.

Bir uzman kaynak dosyası varsa, freelance ile iletişime geçin. Orada yardım edecekler.

Elbette, uzmanın yazarıyla doğrudan iletişime geçmek en iyisidir.

 

MQL5 için, WinForms on .Net'te bir pencerede bir grafik tablo oluşturan, MQL4 için yerel çağrılar için kodu taşıyan bir dll yazdı

Tablonun 5 sütun ve 5 satırının güncellenme hızını değerlendirmek için hızı ölçtü

   for ( int j = 0 ; j < 3 ; j++)
   {
       uint start = GetTickCount ();
       for ( int i = 0 ; i < 100000 ; i++)
      {
         string s = ( string )(i) + ";" + ( string )(i + 1 ) + ";" + ( string )(i + 2 ) + ";" + ( string )(i + 3 ) + ";" +  ( string )(i + 4 ) + "\n" +
                    ( string )(i) + ";" +  ( string )(i + 1 ) + ";" + ( string )(i + 2 ) + ";" + ( string )(i + 3 ) + ";" + ( string )(i + 4 ) + "\n" +
                    ( string )(i) + ";" +  ( string )(i + 1 ) + ";" + ( string )(i + 2 ) + ";" + ( string )(i + 3 ) + ";" + ( string )(i + 4 ) + "\n" +
                    ( string )(i) + ";" +  ( string )(i + 1 ) + ";" + ( string )(i + 2 ) + ";" + ( string )(i + 3 ) + ";" + ( string )(i + 4 ) + "\n" +
                    ( string )(i) + ";" +  ( string )(i + 1 ) + ";" + ( string )(i + 2 ) + ";" + ( string )(i + 3 ) + ";" + ( string )(i + 4 ) + "\n" ;
         TBL_FillAllTable(htbl, s);
      }
       uint time = GetTickCount () - start;
       PrintFormat ( "Цикл  %d время = %d ms" , j, time);
   }

.....
void TBL_FillAllTable(int handle, string data, string  ColSeparator = ";", string RowSeparator = "\n")
{
#ifdef __MQL4__   refreshalldata(handle,data,ColSeparator,RowSeparator); #endif
#ifdef __MQL5__   SHARPTABLE::refreshalldata(handle, data,ColSeparator, RowSeparator); #endif
}
//+------------------------------------------------------------------+

MQL5:

2020.05.05 22:55:33.220 tbl_tst (EURUSD,H1) Döngü 0 süresi = 143563 ms

2020.05.05 22:57:55.370 tbl_tst (EURUSD,H1) Döngü 1 zaman = 142156 ms

2020.05.05 23:00:19.121 tbl_tst (EURUSD,H1) Döngü 2 süresi = 143750 ms

MQL4:

2020.05.05 22:51:25.359 tbl_tst EURUSD,H1: Döngü 2 süresi = 66813 ms

2020.05.05 22:50:18.551 tbl_tst EURUSD,H1: Döngü 1 kez = 69219 ms

2020.05.05 22:49:09.332 tbl_tst EURUSD,H1: Döngü 0 süresi = 67062 ms


https://www.mql5.com/en/articles/249 makalesinden örneklerle MQL4 için taşınan dll kodu %99 bire bir


bence büyük bir fark

Dosyalar:
tst_winforms.jpg  239 kb
 
Kontrol edebilmeniz ve %100 yeniden oluşturabilmeniz için kitaplık kodunuzu + tam MQL kodunuzu ekleyin.
 
Renat Fatkhullin :
Kontrol edebilmeniz ve %100 yeniden oluşturabilmeniz için kitaplık kodunuzu + tam MQL kodunuzu ekleyin.

işte test senaryosu

Prensip olarak proje ve VS'yi PM'ye gönderebilirim

 

yukarıdaki test çalıştı:

2020.05.05 23:46:03.512 Terminal MetaTrader 5 x64 build 2402 started for MetaQuotes Software Corp.

2020.05.05 23:46:03.1515 terminal Windows 10 build 18363, Intel Core i3 M 380 @ 2.53GHz, 0 / 2 Gb bellek, 149 / 237 Gb disk, IE 11, UAC, GMT+4

Ayrıca dizüstü bilgisayarımda güncellenmemiş bir terminalim var:

2020.05.05 23:37:15.336 terminal MetaTrader 5 - FXOpen x64 build 2280 başladı (FXOpen Investments Inc.)

2020.05.05 23:37:15.338 terminal Windows 10 (derleme 18363) x64, IE 11, UAC, Intel Core i3 M 380 @ 2.53GHz, Bellek: 1071 / 2804 Mb, Disk: 149 / 237 Gb, GMT+4

eski yapıya eklediğim kodu çalıştırdım, daha iyi bir test süresi elde ettim:

2020.05.05 23:40:09.553 tbl_tst (EURUSD,H1) Döngü 0 süresi = 68938 ms

2020.05.05 23:41:17.911 tbl_tst (EURUSD,H1) Döngü 1 kez = 68343 ms

2020.05.05 23:42:26.912 tbl_tst (EURUSD,H1) Döngü 2 süresi = 69000 ms

 
Igor Makanu :

yukarıdaki test çalıştı:

Ayrıca dizüstü bilgisayarımda güncellenmemiş bir terminalim var:

eski yapıya eklediğim kodu çalıştırdım, daha iyi bir test süresi elde ettim:

2020.05.05 23:40:09.553 tbl_tst (EURUSD,H1) Döngü 0 süresi = 68938 ms

2020.05.05 23:41:17.911 tbl_tst (EURUSD,H1) Döngü 1 kez = 68343 ms

2020.05.05 23:42:26.912 tbl_tst (EURUSD,H1) Döngü 2 süresi = 69000 ms

2404'te MT4 ile aynı hıza sahibim.

 
Geess :

2404'te MT4 ile aynı hıza sahibim.

MT5'in PC kaynakları üzerinde daha talepkar hale geldiğine dair bir şüphe var, yarın PC'yi kontrol edeceğim, dizüstü bilgisayar oldukça zayıf (((

Evet, başka bir şey daha var, yeni yapıdaki PC yapılandırma satırı kafa karıştırıcı - yukarıdaki mesajım, nedense yeni yapı dizüstü bilgisayarın belleği hakkında yazdı:

0 / 2 Gb bellek

fırlatma koşulları aynıydı, sadece ME ve bir terminal fırlatıldı

Not: ancak WinForm'daki verileri güncelleme hızı 1 ms'den az .... beklenmedik bir şekilde;)

Neden: