Uzman Danışmanlar: Çoklu para birimi olay işleyicisi OnTick(string symbol) - sayfa 3

 

İlgiyle tekrar okudum, hmmm.

Eğer!!! MQ'lar varsayılan olarak DC sunucusundaki camın yayınını açarsa ve DC'lerin bunları kapatmasına izin vermezse, tüm bu tefli danslar gerekli olmazdı!!!. Sadece alış ve satış ile boş bir bahis olsun, ancak yayınlanmalıdır.

Ardından, gerekli enstrümana abone olarak OnBookEvent'te çok para birimli bir tik kolayca izlenebilir.

Aslında, OnBookEvent standart bir çoklu para birimi tick işleyicisidir.

Ancak şu ana kadar sadece camı çeviren dillendirmelerde mümkündür.

 
micle:

Makaledeki kod güncel değil.

Evet, kod OnChartEvent işleyicisi henüz test cihazında çalışmadığında yazıldı.

Urain:

İlgiyle tekrar okudum, hmmm.

Eğer!!! MQ'lar varsayılan olarak DC sunucusunda!!! beher yayınını etkinleştirir ve DC'lerin bunları kapatmasına izin vermezse, tüm bu tef dansları gerekli olmaz!!!. Sadece alış ve satış ile boş bir bahis olsun, ancak yayınlanmalıdır.

Ardından, gerekli enstrümana abone olarak OnBookEvent'te çok para birimli bir tik kolayca izlenebilir.

Aslında, OnBookEvent standart bir çoklu para birimi tik işleyicisidir.

Ve şimdiye kadar sadece camı çeviren dillendirmelerde mümkündür.

OnBookEvent ile bir kez oynadım. Uzmanlar için genel olarak işe yarayacaktır. Yine de "yayınlamayı" kaldırır ve grafikler için bir abonelik yapardım. Başka bir eksi: göstergelerde çalışmıyor. Test cihazında denemedim.

Bu konudaki ilk yayınlardan bu yana çok sayıda tef öldürüldü. Daha kabul edilebilir bir şey ortaya çıktı. Belki bir ara yayınlarım.

 
Lizar:

Evet, kod OnChartEvent işleyicisi henüz test cihazında çalışmadığında yazıldı.

OnBookEvent ile oynuyordum. Uzmanlar için genel olarak iyi olurdu. Yine de "yayınlamayı" kaldırır ve grafikler için bir abonelik yapardım. Başka bir eksi: göstergelerde çalışmıyor. Test cihazında denemedim.

Bu konudaki ilk yayınlardan bu yana çok sayıda tef öldürüldü. Daha kabul edilebilir bir şey ortaya çıktı. Belki bir ara yayınlarım.

Bunu yapmanın daha ince bir yolu var, grafikler için değil, belirli Uzman Danışmanlar için bir abonelik var.

Yani abonelik olmadan grafiğin sinyallerini almayacaksınız. Bu nedenle, yayın oldukça niteliksel olarak işlenir.

Ekteki baykuşları bir yığına sahip iki grafikte çalıştırın. Her baykuş yalnızca abone olduğu sinyali alacaktır.

Dosyalar:
 

Merhaba Lizar,

Kodunuzu kullanmak istiyorum, ancak aracım mql4 dilini kullanıyor (TradeMasterFX Meta, Sürüm: 4.00 Build 890),

Terminalimi mql5 destekleyen terminale yükseltmenin bir yolu var mı?

Tavsiyeniz için teşekkürler,

Emre

 
Konstantin Gruzdev:

Tartışmaya hoş geldiniz ;)

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi üzerine forum

mql5 dilinin özellikleri, incelikleri ve çalışma teknikleri

Andrey Khatimlianskii, 2018.10.09 23:18

Spy kullanarak 50 enstrüman üzerinde boş bir EA çalıştırırken, mesajlar günlüğe dökülmeye başlar:

2018.10.09 22:49:24.730 Spy (AUDNZD,W1) indicator is too slow, 4281 ms. rewrite the indicator, please

Göstergeye 500 ms içinde kastum olayları gönderme sıklığı için bir filtre eklerseniz, hatalar daha az sıklıkta olur, ancak kaybolmaz.

Sorun sadece bende mi?


EA kodu:

#define  ForEach(index,array)   for(int index=0, max_##index=ArraySize(array);  index<max_##index;  index++)

string Symbols[];

int OnInit()
{
   ArrayResize( Symbols, SymbolsTotal(true) );

   ForEach( i, Symbols )
   {
      Symbols[i] = SymbolName(i,true);

      if( Symbols[i] != _Symbol )
         iCustom( Symbols[i], PERIOD_W1, "Spy.ex5", ChartID(), i );
   }
   return(INIT_SUCCEEDED);
}

void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
{
   if( id == CHARTEVENT_CUSTOM )
      OnTickMS( Symbols[ (int)lparam ] );
}

void OnTick()
{
   CheckSignal( _Symbol );
}

void OnTickMS(const string &Symb)
{
   CheckSignal( Symb );
}

void CheckSignal(const string symbol)
{
   //Comment( sembol, ": ",
   // DoubleToString( SymbolInfoDouble( sembol, SYMBOL_BID ), 5 ), " / ",
   // DoubleToString( SymbolInfoDouble( sembol, SYMBOL_ASK ), 5 )) );
   return;
}


Profiler, iCustom, OnChartEvent'in neredeyse hiçbir şey almadığı zamanın% 95'ini gösterir. İşlemci (i5-3570) %75 oranında yükleniyor.


Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2018.09.21
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 
Andrey Khatimlianskii:

Tartışmaya davet ediyorum ;)


EA'nızın OnDeinit () 'inde IndicatorRelease () ve IndicatorDelete ()'i uygun sayıda kullanmaya çalışmanız için bir öneri var.
 
nra_:
EA'nızın OnDeinit () 'inde IndicatorRelease () ve IndicatorDelete ()'i uygun sayıda kullanmayı denemek için bir önerim var.

OnDeinit'e gelmemeli, hepsinin çalışmasına ihtiyacım var.

EA'yı sildikten sonra her şey yolunda, bellek bir süre sonra serbest bırakılıyor.

 
Andrey Khatimlianskii:

OnDeinit'e inmek zorunda değil, hepsinin çalışmasına ihtiyacım var.

Uzman Danışmanı sildikten sonra her şey yolunda, bellek bir süre sonra serbest bırakılıyor.

Tam olarak 4281 ms'nin nerede boşa harcandığını bulmak için göstergenin profilini çıkarmanızı öneririm. Belki mesajın kendisinde gönderiliyordur.

 
Stanislav Korotky:

Tam olarak 4281 ms'nin nerede boşa harcandığını bulmak için göstergenin profilini çıkarmak mantıklıdır. Mesaj göndermenin kendisinde olabilir.

Biz yaptık.

EventChartCustom bir noktada 3 saniyeden fazla çalışmaya başlar.

 
EA'daki OnDeinit'in OnDeinit'e gelmemesi gerektiğinin farkındayım, ancak bu ideal. Testinizin 15 saati boyunca OnInit'in Uzman Danışman'da 1 kez çağrıldığından emin misiniz?