Hizmetler. Zaten çalışıyor? - sayfa 21

 

Renat, serviste özel bir cam uygulamak mümkün olacak mı?
Belgeler, OnBookEvent işleyicisinin göstergelerde ve Uzman Danışmanlarda çağrıldığını söylüyor.
Peki ya hizmetler? Serviste gözlük nasıl başlatılır?
Özel gözlüklerimi hizmete sunabilmek istiyorum.
Size göre hizmetler OnStart dışındaki işleyicileri desteklemiyor ve bu bir sorun haline geliyor.
Gerçek şu ki, hizmetler, göstergelerde ve Uzman Danışmanlarda sistem OnTimer'dan çok daha hızlı işlenir.
Ve özel sipariş defterleri oluşturmak için hizmetleri kullanmak daha iyidir.

ps
Şubeyi okudum, saygıdeğer programcıların hizmetler için başvuru bulamamasına şaşırdım.
Hizmetler, tüm projenin eşzamansız yürütülmesine kadar birçok şeyi uygulayabileceğiniz, görev mantığını hizmetler arasında dağıtabileceğiniz harika bir şeydir.
Ancak, işleve iletilen argümanlar için iş parçacığı paralelleştirme uygulayacak olan Thread(params) işlevini dile eklemek daha mantıklı olacaktır.
Eh, iş parçacıkları varsa, süreçler onlarla birlikte, İşlem (params) işlevi biçiminde gider.

Önemli avantajlardan biri, hizmetin sistem zamanından daha hızlı işlenmesidir, yani. sadece 1 ms'de ve muhtemelen daha kısa sürede işlenir.
Uyku (1) kısıtlamasını while () döngüsünde zorla ayarladığımdan beri.
Ve Uzman Danışmanlarda ve göstergelerde EventSetMillisecondTimer(1) olayıyla OnTimer() sistemi ~ 20ms içinde işlenir.
İşlem performansı açısından hizmetlerde bu kadar zayıf bir artış değil.
Hizmetin, olası çözümleri büyük ölçüde sınırlayan uzman işleyicileri desteklememesi üzücü.
Bir süre önce, kullanıcılar Expert Advisors'ın grafikler olmadan başlatılmasını istediler, hizmetler sadece bu sorunu çözecekti.
Servis menüsündeki "Otomatik ticaret" düğmesine bakılırsa, ticaret yapma olasılığı vardır.
Ancak bir OnStart işleyicisi ile tam teşekküllü bir ticaret çözümü oluşturamazsınız.

 
fxsaber :

Doğrusu çok uygun.

Bilgisayarımı yeniden başlattım ve RAMDrive'ı unuttum. MT5'i başlatıyorum ve hemen bir sorun bildiriyor.

Automount + bağlantı + dinamik ayırma işlevleriyle RamDisk'i kullanmak daha kolay değil mi?
PC başladığında her şeyi otomatik olarak mount eder ve bağlar, diskte yeterli alan yoksa otomatik olarak RAM'den ekleyecektir.

 
Sergey Dzyublik :

Automount + bağlantı + dinamik ayırma işlevleriyle RamDisk'i kullanmak daha kolay değil mi?
PC başladığında her şeyi otomatik olarak mount eder ve bağlar, diskte yeterli alan yoksa otomatik olarak RAM'den ekleyecektir.

Her zaman gerekli değildir, bu nedenle pi'nin yaratılması başlamadı.

 

Yeniden başlatıldığında, Terminal özel sembollerin özelliklerini değiştirmeyi sever. Örneğin, para birimleri.

Bu, Hizmetlerin kurtarmaya gelebileceği yerdir. Başlatmada, Test Cihazının yetkisiz davranışı düzeltilir.

 
Söyleyin bana, servis programından aktif bir çizelgede nasıl bir yorum görüntüleyebilirim?
Ve genel olarak, başka grafikleri görüntülemek mümkün mü?

 //+------------------------------------------------------------------+
//| Service program start function                                   |
//+------------------------------------------------------------------+

int OnStart ()
{
   Comment ( "text" );

   return ( 0 );
}
 

kendim cevaplıyorum))

 int OnStart ()
{
   ChartCommentSet( "Hello Service" , ChartFirst ());
   
   
   return ( 0 );
}

//+------------------------------------------------------------------+ 
//| Функция устанавливает текст комментария в левом верхнем углу     | 
//| графика.                                                         | 
//+------------------------------------------------------------------+ 
bool ChartCommentSet( const string str, const long chart_ID= 0 ) 
{ 
   //сбросим значение ошибки 
   ResetLastError (); 
   
   //установим значение свойства 
   if (! ChartSetString (chart_ID, CHART_COMMENT , str)) 
   { 
       //выведем сообщение об ошибке в журнал "Эксперты" 
       Print ( __FUNCTION__ + ", Error Code = " , GetLastError ()); 
       return ( false ); 
   } 
   
   //успешное выполнение 
   return ( true ); 
}
 
Bir danışmandan hizmet nasıl başlatılır?
 
Roman :

kendim cevaplıyorum))

evet her şey sol üst köşede yazıyor

 //+------------------------------------------------------------------+
//| Service program start function                                   |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   ChartCommentSet( "Hello Service" , ChartFirst ());


   return ;
  }
//+------------------------------------------------------------------+
//| Функция устанавливает текст комментария в левом верхнем углу     |
//| графика.                                                         |
//+------------------------------------------------------------------+
bool ChartCommentSet( const string str, const long chart_ID= 0 )
  {
//сбросим значение ошибки
   ResetLastError ();

//установим значение свойства
   if (! ChartSetString (chart_ID, CHART_COMMENT , str))
     {
       //выведем сообщение об ошибке в журнал "Эксперты"
       Print ( __FUNCTION__ + ", Error Code = " , GetLastError ());
       return ( false );
     }

//успешное выполнение
   return ( true );
  }
//+------------------------------------------------------------------+ 

enstantane fotoğraf

 
fxsaber :

Yeniden başlatırken, Terminal özel sembollerin özelliklerini değiştirmeyi sever. Örneğin, para birimleri.

Bu, Hizmetlerin kurtarmaya gelebileceği yerdir. Başlangıçta, Test Cihazının yetkisiz davranışı düzeltilir.

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

Özel semboller. Hatalar, hatalar, sorular, öneriler.

fxsaber , 2019.09.15 22:30

Terminali yeniden başlattıktan sonra özel bir sembolün para birimlerini otomatik olarak değiştirme sorununu çözme.

 // Сервис корректирует валюты всех кастомных символов.
#property service

bool CorrectCurrency( const string Symb, const string Currency )
{  
   return ( SymbolInfoInteger (Symb, SYMBOL_CUSTOM ) && 
         CustomSymbolSetString (Symb, SYMBOL_CURRENCY_BASE , Currency) &&
         CustomSymbolSetString (Symb, SYMBOL_CURRENCY_MARGIN , Currency) &&
         CustomSymbolSetString (Symb, SYMBOL_CURRENCY_PROFIT , Currency));
}

void CorrectSymbols( void )
{
   const string Currency = AccountInfoString ( ACCOUNT_CURRENCY );
  
   for ( int i = SymbolsTotal ( false ) - 1 ; i >= 0 ; i--)
    CorrectCurrency( SymbolName (i, false ), Currency);
    
   return ;
}

void OnStart ()
{
  CorrectSymbols();
}
 

Hizmetlere Expert Advisor'ların otomatik optimizasyonunu çalıştırma yeteneği ekleyin.

Eh, işlevsellik farklıdır, örneğin, optimizasyonun / çalıştırmanın tamamlandığını öğrenebilirsiniz.