OnBookEvent aboneliği bazen düşüyor - böyle bir şey var mı? - sayfa 4

 
Stanislav Korotky :

Bu arada, diğer tüm olay türleri yalnızca yayınlanır, yalnızca bağlanmaları veya bağlantılarının kesilmesi gerekmez - komut dosyası başlatıldığında her şey otomatik olarak bağlanır.

Böyle bir şey yok - OnChartEvent'te hem yayın olayları hem de normal olaylar alınır

Ve eğer olağan olanlar orada yapılabiliyorsa, o zaman burada da yapılabilir.

 
A100 :

Böyle bir şey yok - OnChartEvent'te hem yayın olayları hem de normal olaylar alınır

Ve eğer olağan olanlar orada yapılabiliyorsa, o zaman burada da yapılabilir.

Peki ya diğer OnTick veya OnCalculate olayları? Yayınlarına itiraz var mı? OnChartEvent , ağırlıklara rağmen yayında da kullanılır. "Hepsi" kelimesinin iddiası varsa, onu "çok" ile değiştireceğim. Sonuç olarak, şimdiye kadarki tüm seçenekler, başka birinin inisiyatifiyle kapanma olasılığını dışladı.

Bir düzeltme olup olmadığını görelim.

 
prostotrader :

İyi haberler

Bu hangi hatayla ilgili? Geçersiz bir işlem hakkında tam olarak aynı gönderiyi görüyorum.

 
prostotrader :

Aboneliğiniz tam olarak geçersiz kitap işlemi hatası nedeniyle "düşür"

MarketBookRelease'e yapılan dolaylı bir çağrı nedeniyle düşüyor - bunu hala anlamamış olmanız garip
 
prostotrader :
MarketBookRelease'i aramam ama kayıtta geçersiz kitap işlemi göründüğünde

OnBookEvent çalışmayı durdurur (aboneliğin "düştüğünü" söyleyebilirsiniz)

Bu, bu başlıkta tartışılandan tamamen farklı bir hata nedenidir. Bir neden ortadan kalkarsa, diğeri kendiliğinden ortadan kalkmaz.

Tıpkı burada olduğu gibi https://www.mql5.com/ru/forum/1111/page2237#comment_8159123 hatalar form olarak aynıydı, ancak birini ortadan kaldırma yöntemi diğerine uymadı - bu nedenle nedenler farklı

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2018.07.23
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 
prostotrader :

Bu hatanın nedeni olduğundan eminim.

Geliştiriciler bunu düzeltti ve yeni bir yapı çıktığında "sizin" hatanızı kontrol edeceğiz.

Test örneği basittir: 1. EA'da MarketBookAdd ( x ) öğesini arayın, ardından 2. EA'da MarketBookRelease ( x ) öğesini arayın... ve ardından 1. EA'da OnBookEvent( x ) olayını bekleyin
 
A100 :
Test örneği basittir: 1. EA'da MarketBookAdd( x )'i arayın, ardından 2.'de MarketBookRelease( x )'i arayın... ve 1. EA'da olayı bekleyin

Aynı sembol üzerine yazdıklarınızı yaparsanız, DOĞAL OLARAK abonelik aynı terminalde bu sembol tarafından yok edilecektir!

Ve doğru.

Katma

Sadece doğru aboneliği kullanmanız gerekiyor.

 //+------------------------------------------------------------------+
//|                                                        Books.mq5 |
//|                                      Copyright 2018 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018 prostotrader"
#property link        "https://www.mql5.com"
#property version    "1.00"
bool is_book;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
    is_book = false ;
//--- Add books
     if (! MarketBookAdd ( Symbol ()))
    {
       MessageBox ( "Не добавлен стакан фьючерса!" , "Ошибка" , MB_OK | MB_ICONHAND );
       return ( INIT_FAILED );
    } 
     else is_book = true ;
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
     if (is_book = true ) MarketBookRelease ( Symbol ());
   
  }

//+------------------------------------------------------------------+
//| BookEvent function                                               |
//+------------------------------------------------------------------+
void OnBookEvent ( const string &symbol)
  {
   if (symbol == Symbol ())
   {
     //Plece you code here
   }
   
  }
//+------------------------------------------------------------------+
 
prostotrader :

Aynı sembol üzerine yazdıklarınızı yaparsanız, DOĞAL OLARAK abonelik aynı terminalde bu sembol tarafından yok edilecektir!

Ve doğru.

Ardından 1. Expert Advisor'da MarketBookAdd( x )'i arayın, ardından 2. Expert Advisor'da MarketBookAdd( x ) ve MarketBookRelease ( x )'i arayın ve ardından 1. Expert Advisor'da OnBookEvent( x ) olayını bekleyin
 
A100 :
Ardından 1. Expert Advisor'da MarketBookAdd( x )'i arayın, ardından 2. Expert Advisor'da MarketBookAdd( x ) ve MarketBookRelease( x )'i arayın ve ardından 1. Expert Advisor'da OnBookEvent( x ) olayını bekleyin

Kodumu kullanın ve abonelikle ilgili sorun yaşamayacaksınız.

 
prostotrader :

Kodumu kullanın ve abonelikle ilgili herhangi bir sorun yaşamayacaksınız.

Yarın kodunuzun sihirli gücünü kontrol edeceğim... ama şimdilik, sipariş defterini açma/kapatma işlevinin abone olma/aboneliği iptal etme işleviyle birleşip birleştirilemeyeceği konusundaki düşüncelerinizi duymak istiyorum. / bu sipariş defteri için etkinlikten mi yoksa ayrılmaları mı gerekiyor