Hatalar, hatalar, sorular - sayfa 2613

 
Vladimir Pastushak :

GetMicrosecondCount() ile ilgili soru

Ve videonun sonunda, yazdırma günlüğü şunları gösterir:

OD 0 22:58:46.604 Testi (EURUSD,M15) 66190

GJ 0 22:58: 46.669 Testi (EURUSD,M15) 65134

GQ 0 22:58: 55.914 Testi (EURUSD,M15) 67867 Bu değer ile önceki değer arasındaki fark 9 saniye, ancak GetMicrosecondCount() 67867 mikrosaniye/sn gösteriyor

PD 0 22:58:56.715 Testi (EURUSD,M15) 66139

 
Vladimir Pastushak :

Ve videonun sonunda, yazdırma günlüğü şunları gösterir:

OD 0 22:58:46.604 Testi (EURUSD,M15) 66190

GJ 0 22:58: 46.669 Testi (EURUSD,M15) 65134

GQ 0 22:58: 55.914 Testi (EURUSD,M15) 67867 Bu değer ile önceki değer arasındaki fark 9 saniye, ancak GetMicrosecondCount() 67867 mikrosaniye/sn gösteriyor

PD 0 22:58:56.715 Testi (EURUSD,M15) 66139

taşma.. sayaçlar karşılaştırılmalıdır modulo

 
Vladimir Pastushak :

Ve videonun sonunda, yazdırma günlüğü şunları gösterir:

OD 0 22:58:46.604 Testi (EURUSD,M15) 66190

GJ 0 22:58: 46.669 Testi (EURUSD,M15) 65134

GQ 0 22:58: 55.914 Testi (EURUSD,M15) 67867 Bu değer ile önceki değer arasındaki fark 9 saniye, ancak GetMicrosecondCount() 67867 mikrosaniye/sn gösteriyor

PD 0 22:58:56.715 Testi (EURUSD,M15) 66139

Maalesef tam kodunuzu göstermediniz.

Sadece videoyu sunarak ve kodu tamamen göz ardı ederek, saniyenin milyonda birinin ölçümünü nasıl tartışacaksınız?


Mikrosaniye zamanlayıcısını ölçmenin doğruluğunu gerçekten tartışmak istiyorsanız, örneği çalıştırın:

 void OnStart ()
  {
   ulong ticks;
//---
   ticks= GetMicrosecondCount ();   
   Sleep ( 40 );
   Print ( "40 ms = " , GetMicrosecondCount ()-ticks, " msc" );
//---   
   ticks= GetMicrosecondCount ();   
   Sleep ( 10 );
   Print ( "10 ms = " , GetMicrosecondCount ()-ticks, " msc" );
  }

40 ms = 40354 msc
10 ms = 10487 msc

Ölçüm hatası yoktur.

GetMicrosecondCount(), QueryPerformanceCounter sistem sayacında çalışır ve kolaylık olması için uygulama başlangıç zamanına başvuru sağlanır.

Zamanlama kodunuzda bir hata arayın.

 
MetaQuotes Software Corp. :

Maalesef tam kodunuzu göstermediniz.

Sadece videoyu sunarak ve kodu tamamen göz ardı ederek, saniyenin milyonda birinin ölçümünü nasıl tartışacaksınız?


Bir mikrosaniye zamanlayıcıyı ölçmenin doğruluğunu gerçekten tartışmak istiyorsanız, örneği çalıştırın:

Ölçüm hatası yoktur.

GetMicrosecondCount(), QueryPerformanceCounter sistem sayacında çalışır ve kolaylık olması için uygulama başlangıç zamanına başvuru sağlanır.

Zamanlama kodunuzda bir hata arayın.

Standart kütüphaneyi kullandım. Kodu biraz sonra atacağım, ama orada yeni bir şey yok.

 

Para birimi ve ülke seçimini kaydetmek fena olmaz:

 
Son güncellemeden sonra, test cihazı görsel test modunda kalıyor, 30-60 saniye donuyor, geçmişin başlangıcına kadar grafikte geziniyor. Nesnelerin oluşturulmasında bir bug var mesela buton oluşturuyoruz pozisyon ön planda, çizgi oluşturuyoruz pozisyon arka planda fakat butona basmaya çalıştığınızda nesneler kesişiyorsa, buton görsel olarak ilk sırada olmasına rağmen çizgi ön plandadır. Fareyi düğmenin üzerinde tutarsanız, oluşturulan satırın adını içeren bir açılır menü (düğmeye göre arka plandadır).
 

Tamamlanmadan önce ileri optimizasyonun sonuçlarını görebilmek istiyorum.

Bu sonuçların, ana optimizasyonun sonuçlarıyla aynı şekilde - pencerede - görüntülenmesini istiyorum. Ve şimdi bu pencere hiç yok!

Garip - neden bir pencere var ve diğeri - aynı (esas olarak) süreçte değil ...

 

Anladığım kadarıyla "Piyasa İzleme" penceresinde sembollerin alış ve satış fiyatları artık devre dışı bırakılamıyor?

2265 oluşturun.

 
//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property indicator_chart_window
#property indicator_plots    1
#property indicator_buffers 1
#include <Trident\TCoreMain.mqh>
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
   :: EventSetMillisecondTimer ( 500 );
   return ( INIT_SUCCEEDED );
  }
  
   void OnDeinit ( const int reason) {
   :: EventKillTimer ();
}

void OnTimer () {
   :: EventKillTimer ();
   TestPhoto();
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
   
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+

void TestPhoto() {
   string name;
   MqlDateTime   dtLocal;
   TimeToStruct ( TimeLocal (), dtLocal);
   string date = IntegerToString (dtLocal.year) + IntegerToString (dtLocal.mon, 2 , '0' ) + IntegerToString (dtLocal.day, 2 , '0' );
   string time = IntegerToString (dtLocal.hour, 2 , '0' ) + "." + IntegerToString (dtLocal.min, 2 , '0' ) + "." + IntegerToString (dtLocal.sec, 2 , '0' );
   name = "ScreenShots/" + date + "/" + _Symbol + "_" +date + "_" + time + ".png" ;
   
   if (! ChartScreenShot ( 0 , name, 1920 , 1200 , ALIGN_RIGHT ))
       return ;

   ResetLastError ();
   
   for ( int i= 0 ; i < 100000 ; i++){
       if ( FileIsExist (name, false ) && FileSize (name) > 0 )
         break ;
   }
   //---
   int flags= FILE_READ | FILE_BIN | FILE_SHARE_READ ;

   //---
   int file= FileOpen (name,flags);
   if (file< 0 ) {
       Print ( "Операция FileOpen неудачна, ошибка " , GetLastError ());
       return ;
}
   uchar photo[];
   FileReadArray (file,photo);
   FileClose (file);
   
   Print ( ArraySize (photo));
}

Göstergeden ikili dosya okumak çalışmıyor!!! Danışmandan gelen benzer bir kod sorunsuz çalışır

 
//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property indicator_chart_window
#property indicator_plots    1
#property indicator_buffers 1
#include <Trident\TCoreMain.mqh>
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
   :: EventSetMillisecondTimer ( 500 );
   return ( INIT_SUCCEEDED );
  }
  
   void OnDeinit ( const int reason) {
   :: EventKillTimer ();
}

void OnTimer () {
   :: EventKillTimer ();
   TestPhoto();
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
   
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+

void TestPhoto() {
   string name;
   MqlDateTime   dtLocal;
   TimeToStruct ( TimeLocal (), dtLocal);
   string date = IntegerToString (dtLocal.year) + IntegerToString (dtLocal.mon, 2 , '0' ) + IntegerToString (dtLocal.day, 2 , '0' );
   string time = IntegerToString (dtLocal.hour, 2 , '0' ) + "." + IntegerToString (dtLocal.min, 2 , '0' ) + "." + IntegerToString (dtLocal.sec, 2 , '0' );
   name = "ScreenShots/" + date + "/" + _Symbol + "_" +date + "_" + time + ".png" ;
   
   if (! ChartScreenShot ( 0 , name, 1920 , 1200 , ALIGN_RIGHT ))
       return ;

   ResetLastError ();
   
   for ( int i= 0 ; i < 100000 ; i++){
       if ( FileIsExist (name, false ) && FileSize (name) > 0 )
         break ;
   }
   //---
   int flags= FILE_READ | FILE_BIN | FILE_SHARE_READ ;

   //---
   int file= FileOpen (name,flags);
   if (file< 0 ) {
       Print ( "Операция FileOpen неудачна, ошибка " , GetLastError ());
       return ;
}
   uchar photo[];
   FileReadArray (file,photo);
   FileClose (file);
   
   Print ( ArraySize (photo));
}
Göstergeden ikili dosya okumak çalışmıyor, danışmandan gelen benzer bir kod sorunsuz çalışıyor!