MT5 ve iş başında hız - sayfa 50

 

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

MT5 ve iş başında hız

fxsaber , 2020.10.07 11:13

 #include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279

void OnTick ()
{
  _BV( Print ( "" ), 1 );
}

Yavaş bir VPS'de nasıl olacağını kontrol edemiyorum.

OrderSend'den sonra bazı çıktılar alırsanız (örneğin, bir sipariş göndermenin sonucu), bunları bir dize değişkeninde toplamak ve On-fonksiyonu çıktığında yazdırmaya göndermek daha iyidir.

Aksi takdirde, Print-snapshot ile olan bağlantıda çok şey kaybedebilirsiniz. Ne kadar - Birisi yukarıdaki danışmanı VPS'lerinde başlatırsa yanıtlayabilirsiniz.


Tehdit En basit uygulama.

 #include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279

class PRINT
{
private :
   string Str;
  
public :
  PRINT() : Str( NULL ) { :: StringSetLength ( this .Str, 5000 ); }
  ~PRINT() { if ( this .Str != NULL ) :: Print ( this .Str); }
  
   template < typename T>
   void Add( const T PrintStr ) { this .Str += (( this .Str == NULL ) ? NULL : "\n" ) + ( string )PrintStr; }
};

#define Print PrintObj.Add // Закомментируйте, чтобы посмотреть скорость обычного Print.

void OnTick ()
{  
  PRINT PrintObj; // Накопитель Print-ов.
  
   for ( int i = 0 ; i < 5 ; i++)
  {
    _BV( Print (i), 1 )
    
     Sleep ( 100 ); // Эмуляция OrderSend
  }
}

Hızlı bir makinede bu çözüm, normal yaklaşımdan çok daha hızlıdır. VPS'ye gelince - bilmiyorum.

 
fxsaber :

OrderSend'den sonra bazı çıktılar alırsanız (örneğin, bir sipariş göndermenin sonucu), bunları bir dize değişkeninde toplamak ve On-fonksiyonu çıktığında yazdırmaya göndermek daha iyidir.

Aksi takdirde, Print-snapshot ile olan bağlantıda çok şey kaybedebilirsiniz. Ne kadar - Birisi yukarıdaki danışmanı VPS'lerinde başlatırsa yanıtlayabilirsiniz.

3 dolara VPS'imde

 2020.10 . 08 09 : 50 : 59.631 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 3121 mсs.
2020.10 . 08 09 : 50 : 59.724 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 50 : 59.724 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 78 mсs.
2020.10 . 08 09 : 50 : 59.837 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 50 : 59.837 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 86 mсs.
2020.10 . 08 09 : 50 : 59.930 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 50 : 59.931 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 159 mсs.
2020.10 . 08 09 : 51 : 00.036 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 00.036 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 84 mсs.
2020.10 . 08 09 : 51 : 00.138 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 00.138 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 94 mсs.
2020.10 . 08 09 : 51 : 00.243 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 00.243 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 86 mсs.
2020.10 . 08 09 : 51 : 00.380 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 00.380 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 54 mсs.
2020.10 . 08 09 : 51 : 00.973 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 00.973 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 79 mсs.
2020.10 . 08 09 : 51 : 01.129 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 01.129 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 91 mсs.
2020.10 . 08 09 : 51 : 01.186 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 01.186 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 60 mсs.
2020.10 . 08 09 : 51 : 01.320 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 01.321 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 75 mсs.
2020.10 . 08 09 : 51 : 01.402 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 01.402 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 86 mсs.
2020.10 . 08 09 : 51 : 01.546 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 01.555 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 72 mсs.
2020.10 . 08 09 : 51 : 02.158 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 02.158 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 67 mсs.
2020.10 . 08 09 : 51 : 04.651 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 04.651 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 74 mсs.
2020.10 . 08 09 : 51 : 04.929 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 04.930 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 200 mсs.
2020.10 . 08 09 : 51 : 07.200 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 07.200 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 58 mсs.
2020.10 . 08 09 : 51 : 07.330 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 07.330 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 68 mсs.
2020.10 . 08 09 : 51 : 07.452 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 07.460 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 77 mсs.
2020.10 . 08 09 : 51 : 07.728 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 07.728 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 64 mсs.
2020.10 . 08 09 : 51 : 07.870 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 07.870 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 72 mсs.
2020.10 . 08 09 : 51 : 07.967 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 07.967 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 58 mсs.
2020.10 . 08 09 : 51 : 08.130 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 08.130 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 56 mсs.
2020.10 . 08 09 : 51 : 11.274 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 11.275 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 63 mсs.
2020.10 . 08 09 : 51 : 11.409 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 11.409 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 73 mсs.
2020.10 . 08 09 : 51 : 11.903 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 11.903 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 86 mсs.
2020.10 . 08 09 : 51 : 12.022 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 12.022 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 79 mсs.
2020.10 . 08 09 : 51 : 12.699 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 12.700 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 69 mсs.
2020.10 . 08 09 : 51 : 12.977 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 12.977 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 67 mсs.
2020.10 . 08 09 : 51 : 13.226 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 13.226 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 98 mсs.
2020.10 . 08 09 : 51 : 13.412 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 13.412 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 93 mсs.
2020.10 . 08 09 : 51 : 13.854 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 13.854 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 59 mсs.
2020.10 . 08 09 : 51 : 14.000 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 14.000 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 62 mсs.
2020.10 . 08 09 : 51 : 18.343 Test Print (EURUSD,H1)  
2020.10 . 08 09 : 51 : 18.343 Test Print (EURUSD,H1)   Alert : Time[Test Print .mq5 5 : Print ()] = 86 mсs.
 
Edgar Akhmadeev :

3 dolara VPS'imde

Teşekkür ederim. Kesinlikle daha iyi bir geçici çözüm.

 
fxsaber :


 #include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279

long GetAnotherChart()
{
   long Chart = :: ChartFirst ();
  
   while (Chart == ChartID ())
    Chart = ChartNext (Chart);
 
   return (Chart);     
}


void OnTick ()
{  
   const long Chart = GetAnotherChart();
  
   if (Chart)
    _B( EventChartCustom (Chart, 123 , 0 , 0 , NULL ), 1 );
  
  _B( EventChartCustom ( 0 , 123 , 0 , 0 , NULL ), 1 );
}

Başka birinin çizelgesine göndermek, kendi çizelgesine göndermekten daha pahalıdır.

Şu şekilde deneyin:

_B( EventChartCustom (- 1 , 123 , 0 , 0 , NULL ), 1 );
 
Anton :

Şu şekilde deneyin:

 // https://www.mql5.com/ru/forum/342090/page50#comment_18647171
class PRINT
{
private :
   string Str;
public :
  PRINT() : Str( NULL ) { :: StringSetLength ( this .Str, 5000 ); }
  ~PRINT() { if ( this .Str != NULL ) :: Print ( this .Str); }
  
   template < typename T>
   void Add( const T PrintStr ) { this .Str += (( this .Str == NULL ) ? NULL : "\n" ) + ( string )PrintStr; }
};

#define Alert PrintObj.Add

PRINT PrintObj;

//#define BENCHMARK_OFF // Выключение замеров.
#include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279

void OnTick ()
{  
  _B( EventChartCustom (- 1 , 123 , GetMicrosecondCount (), 0 , NULL ), 1 );
}

void OnChartEvent ( const int id, const long & lparam, const double & dparam, const string & sparam)
{
   if (id == 1123 )
     Print ( "Time[from OnTick To OnChartEvent] = " + ( string )( GetMicrosecondCount () - lparam) + " mcs." );
}


Sonuç.

 2020.10 . 08 11 : 35 : 52.050 Benchmark.mqh: TimeAvg[GetMicrosecondsCount()] = 0 mcs.
2020.10 . 08 11 : 35 : 52.050 Benchmark.mqh is On.
2020.10 . 08 11 : 35 : 55.617 Time[from OnTick To OnChartEvent ] = 14 mcs.
2020.10 . 08 11 : 35 : 55.821 Time[from OnTick To OnChartEvent ] = 3 mcs.
2020.10 . 08 11 : 35 : 56.729 Time[from OnTick To OnChartEvent ] = 4 mcs.
2020.10 . 08 11 : 35 : 56.932 Time[from OnTick To OnChartEvent ] = 9 mcs.
2020.10 . 08 11 : 35 : 57.841 Time[from OnTick To OnChartEvent ] = 9 mcs.
2020.10 . 08 11 : 35 : 58.177 Bench_Stack = 0 , 1 <= Time[Test9.mq5 23 in OnTick : EventChartCustom (- 1 , 123 , GetMicrosecondCount (), 0 , NULL )] = 2 mcs.
2020.10 . 08 11 : 35 : 58.177 Bench_Stack = 0 , 1 <= Time[Test9.mq5 23 in OnTick : EventChartCustom (- 1 , 123 , GetMicrosecondCount (), 0 , NULL )] = 2 mcs.
2020.10 . 08 11 : 35 : 58.177 Bench_Stack = 0 , 1 <= Time[Test9.mq5 23 in OnTick : EventChartCustom (- 1 , 123 , GetMicrosecondCount (), 0 , NULL )] = 2 mcs.


Ölçüm kapatıldığında.

 2020.10 . 08 11 : 15 : 19.084 Benchmark.mqh: TimeAvg[GetMicrosecondsCount()] = 0 mcs.
2020.10 . 08 11 : 15 : 19.084 Benchmark.mqh is Off.
2020.10 . 08 11 : 15 : 24.171 Time[from OnTick To OnChartEvent ] = 4 mcs.
2020.10 . 08 11 : 15 : 24.376 Time[from OnTick To OnChartEvent ] = 3 mcs.
2020.10 . 08 11 : 15 : 27.010 Time[from OnTick To OnChartEvent ] = 3 mcs.
2020.10 . 08 11 : 15 : 31.859 Time[from OnTick To OnChartEvent ] = 5 mcs.
2020.10 . 08 11 : 15 : 32.266 Time[from OnTick To OnChartEvent ] = 4 mcs.
2020.10 . 08 11 : 15 : 32.470 Time[from OnTick To OnChartEvent ] = 3 mcs.
2020.10 . 08 11 : 15 : 32.670 Time[from OnTick To OnChartEvent ] = 6 mcs.


Onlar. "OnEmpty"ye geçiş 10 µs'den daha kısa sürede gerçekleşir.

Neden aynı şeyi sıfır için yapmıyorsunuz?

 
fxsaber :

Onlar. "OnEmpty"ye geçiş 10 µs'den daha kısa sürede gerçekleşir.

Neden aynı şeyi sıfır için yapmıyorsunuz?

Farklı anlam ve farklı yürütme mekanizması. 0 - "kendi" grafik kuyruğundaki olay. -1 - kendi kuyruğundaki olay.

 

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

MT5 ve iş başında hız

fxsaber , 2020.10.07 12:41

Nedense, TimeCurrentMsc, tekrarlanan isteklere rağmen MQL5'e dahil edilmedi.

İrade?

 
Anton :

Farklı anlam ve farklı yürütme mekanizması. 0 - "kendi" grafik kuyruğundaki olay. -1 - kendi kuyruğundaki olay.

-1 aracılığıyla aynı Uyarının eşzamansızlığının uygulanamayacağı ortaya çıktı.

 
fxsaber :

Onlar. "OnEmpty"ye geçiş 10 µs'den daha kısa sürede gerçekleşir.

Gördüğünüz gibi, yardımlarınızla her şey en iyimser tahminlerden daha hızlı çözüldü, gizli bir arka kapı olduğu ortaya çıktı.

 
fxsaber :

İrade?

Tam olarak aynı değil, ancak mcs aralığına göre bir sayaç.
Evet , TimeCurrentMcs daha iyi olurdu, dileğe katılıyorum.

 //+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
{
   ulong mcs = 0 ;
   
   while (! _StopFlag )
   {
      mcs = GetMicrosecondCount ();
     
       switch (GetInterval(mcs, 5000000 )) //5 секунд
      { 
         case 1 : 
             Print (( string ) mcs); 
             break ;
         case 0 :       
             break ;             
      }    
   }
}

//--------------------------------------------------------------------
//Получить интервал 
ulong prevCount = 0 ;
int GetInterval( ulong currCount, ulong mcsIntrval)
{ 
   int res = 0 ;   
   switch ((currCount - prevCount) > mcsIntrval) 
   { 
       case 1 : 
         prevCount = currCount;
         res = 1 ; 
         break ; 
       default :
         break ;   
   } 
   
   return (res);
}
 2020.10 . 09 00 : 15 : 45.712 TestScript (MNQZ20,M1)   5000001
2020.10 . 09 00 : 15 : 50.712 TestScript (MNQZ20,M1)   10000002
2020.10 . 09 00 : 15 : 55.712 TestScript (MNQZ20,M1)   15000003
2020.10 . 09 00 : 16 : 00.712 TestScript (MNQZ20,M1)   20000004
2020.10 . 09 00 : 16 : 05.712 TestScript (MNQZ20,M1)   25000006
2020.10 . 09 00 : 16 : 10.712 TestScript (MNQZ20,M1)   30000007
2020.10 . 09 00 : 16 : 15.712 TestScript (MNQZ20,M1)   35000008
2020.10 . 09 00 : 16 : 20.712 TestScript (MNQZ20,M1)   40000009
2020.10 . 09 00 : 16 : 25.713 TestScript (MNQZ20,M1)   45000581
2020.10 . 09 00 : 16 : 30.713 TestScript (MNQZ20,M1)   50000582