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

 

Tek bir koltuk değneği çözümü var.

TERMINAL'in global değişkenleri aracılığıyla kendi sayacınızı oluşturun.

Aynı sembolün iki penceresinin kendi adlarını oluşturması için benzersiz bir ad düşünmeniz yeterlidir.

terminal global değişkeni.

Katma

İki sembol penceresi açmak istemiyorsanız, terminalin global değişkeninin adı olarak

büyü kullanabilirsin

 //+------------------------------------------------------------------+
//|                                                    AutoMagic.mqh |
//|                                      Copyright 2017 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
//version   "1.34
ulong symb_magic;
//-------------------------------------------------------------------+
// Split string function                                             |
//+------------------------------------------------------------------+
string SplitString( const string a_str, ulong &a_month, ulong &a_year)
  {
   int str_size= StringLen (a_str);
   int str_tire= StringFind (a_str, "-" );
   int str_tochka= StringFind (a_str, "." , str_tire);
   if ((str_tire> 0 ) && (str_tochka> 0 ) &&(str_size > 0 ))
     {
      a_month= ulong ( StringToInteger ( StringSubstr (a_str,str_tire+ 1 ,str_tochka-str_tire- 1 )));
      a_year = ulong ( StringToInteger ( StringSubstr (a_str,str_tochka+ 1 ,str_size-str_tochka- 1 )));
       if ((a_month > 0 ) && (a_year > 0 )) return ( StringSubstr (a_str, 0 , str_tire));
     }
   return ( "" );
  }
//-------------------------------------------------------------------+
// Get Magic function                                                |
//+------------------------------------------------------------------+
ulong GetMagic( const string a_symbol)
  {
   if ( StringLen (a_symbol)> 10 )
   {
     Print ( __FUNCTION__ , "Invalid magic string!" );
     return ( 0 );
   }
   ulong month = 0 ;
   ulong year = 0 ;
   string new_str=SplitString(a_symbol,month,year);
   if ( StringLen (new_str)> 0 )
     {
       uchar char_array[];
       int result= StringToCharArray (new_str,char_array, 0 , WHOLE_ARRAY , CP_ACP );
       if (result> 0 )
        {
         ulong value;
         ulong cur_magic = 0 ;
         for ( int i = 0 ; i < result - 1 ; i++)
           {
            value= ulong (char_array[i]);
            value<<=( 40 -(i* 8 ));
            cur_magic+=value;
           }
         month<<= 8 ;
         cur_magic += month;
         cur_magic += year;
         if (a_symbol == Symbol ())
         {
           symb_magic = cur_magic <<= 16 ;
           return (symb_magic);
         }
         else return (cur_magic <<= 16 );
        }
     }
   return ( 0 );
  }
//-------------------------------------------------------------------+
// Is my magic function                                              |
//+------------------------------------------------------------------+
bool IsMyMagic( const ulong m_magic)
  {
   ulong in_magic=m_magic;
   ulong stored_magic=symb_magic;
   in_magic>>= 16 ;
   stored_magic>>= 16 ;
   if (stored_magic == in_magic) return ( true );
   return ( false );
  }
//+------------------------------------------------------------------+

veya sadece sembol adı

ör. "Si-9.18_bookcount"

Bekleyen siparişler için teminat (GO) fonlarını bu şekilde sayıyorum

 
prostotrader :
Aynı sembolün iki penceresinin kendi global terminal değişkenini yaratması için benzersiz bir isim düşünmeniz yeterlidir.
Bundan daha iyi bir isim bulmak pek mümkün değil https://www.mql5.com/ru/forum/267154/page8#comment_8171650
Подписка на OnBookEvent иногда отваливается - есть такое?
Подписка на OnBookEvent иногда отваливается - есть такое?
  • 2018.07.24
  • www.mql5.com
После того как поплотнее занялся стаканом и повесил на чарты несколько экспертов и индикаторов, подписанных на OnBookEvent, обнаружил, что некоторы...
 
A100 :
Bundan daha iyi bir isim bulmak pek mümkün değil https://www.mql5.com/en/forum/267154/page8#comment_8171650

Mükemmel, ancak adın ne olduğu önemli değil, birden fazla pencere varsa asıl şey benzersizdir.

Katma

bir yerde yanlışım varsa düzeltin

 //+------------------------------------------------------------------+
//|                                                    BookCount.mqh |
//|                                      Copyright 2018 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018 prostotrader"
#property link        "https://www.mql5.com"
//
//+------------------------------------------------------------------+
//| Create book count function                                       |
//+------------------------------------------------------------------+
string CreateBookCount( int &cnt)
{
   string book_cnt_name = IntegerToString ( ChartID ());
   if ( GlobalVariableCheck (book_cnt_name) == true )
  {
     double curr_value;
     if ( GlobalVariableGet (book_cnt_name, curr_value) == true )
    {
      cnt = int (curr_value);
       return (book_cnt_name);
    }  
  }
   else
  {
    cnt = 0;
     if ( ulong ( GlobalVariableSet (book_cnt_name, double (cnt))) > 0 )
    {
       return (book_cnt_name);
    }
  }
   return ( "" ); 
}
//+------------------------------------------------------------------+
//| Delete book count function                                       |
//+------------------------------------------------------------------+
bool DeleteBookCount( const string cnt_name)
{
   if ( GlobalVariableCheck (cnt_name) == true )
  {
     return ( GlobalVariableDel (cnt_name));
  }
   return ( false );
}
//+------------------------------------------------------------------+
//| Book count update function                                       |
//+------------------------------------------------------------------+
bool BookCountUpdate( const string cnt_name, int &value, const bool is_update)
{
   if ( GlobalVariableCheck (cnt_name) == true )
  {
     double curr_value;
     double new_value;
     if ( GlobalVariableGet (cnt_name, curr_value) == true )
    {
       if (is_update == true )
      {
        new_value = curr_value + 1 ;
      }
       else
      {
        new_value = curr_value - 1 ;
      }
       int i = 0 ;  
       do
      {
        i++;
         if ( GlobalVariableSetOnCondition (cnt_name, new_value, curr_value) == true )
        {
          value = int (new_value);
           return ( true );
        }  
     }  
     while (i < 100 );
    }
  }
   return ( false );
}
 
prostotrader :
Bir yerde yanlışım varsa düzeltin

İsmin benzersizliği, doğrudan sembolün adıyla ilgilidir, daha genel bir durumu kastettim.

 IntegerToString ( ChartID ()) + ":" + symbol

onlar. durumunuzla ilgili olarak (tablodaki tüm MQL programları yalnızca geçerli sembolle çalışıyorsa)

 IntegerToString ( ChartID ()) + ":" + Symbol ()

yerine

 IntegerToString ( ChartID ())
bu bir hata değil... sadece disiplin
 

Çocuklar!

MT-5'i ASLA "yenemeyeceğiz"!

Gösterge 1

 //+------------------------------------------------------------------+
//|                                                   Test_ind_1.mq5 |
//|                                      Copyright 2018 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018 prostotrader"
#property link        "https://www.mql5.com"
#property version    "1.00"
#include   "..\Include\BookCount.mqh"
#define on_call - 111
#property indicator_separate_window
string b_cnt_name;
int book_count;
bool is_book;
double Buff[];
int event_cnt = 0 ;
#property indicator_buffers 1
#property indicator_plots    1
//--- plot Label1
#property indicator_label1    "Test_1"
#property indicator_type1    DRAW_LINE
#property indicator_color1    clrAqua
#property indicator_style1    STYLE_SOLID
#property indicator_width1    1
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
    b_cnt_name = CreateBookCount(book_count);
     if (b_cnt_name == "" ) return ( INIT_FAILED );
   //--- Set buffers 
   IndicatorSetInteger ( INDICATOR_DIGITS , 0 );
   IndicatorSetString ( INDICATOR_SHORTNAME , "Test_ind_1" );
//---Set buffers
   SetIndexBuffer ( 0 ,Buff, INDICATOR_DATA );
   PlotIndexSetDouble ( 0 , PLOT_EMPTY_VALUE , EMPTY_VALUE );
   ArraySetAsSeries (Buff, true ); 
   is_book = MarketBookAdd ( Symbol ());
   if (is_book == true )
    { 
       Print ( __FUNCTION__ , ": Подписка на стакан добавлена. Символ " , Symbol ());
       if (BookCountUpdate(b_cnt_name, book_count, true ) == true )
      {
         Print ( __FUNCTION__ , ": Счётчик подписок обновлён. Символ " , Symbol ());
             Print ( __FUNCTION__ , ": Book count: " , book_count);
      }
    }
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
     Print ( __FUNCTION__ , ": Book count: " , book_count);
     if (book_count > 1 )
    {
       if (BookCountUpdate(b_cnt_name, book_count, false ) == true )
      {
         Print ( __FUNCTION__ , ": Счётчик подписок обновлён. Символ " , Symbol ());
         Print ( __FUNCTION__ , ": Book count: " , book_count);
      }
    }
     else
    { 
       Print ( __FUNCTION__ , ": Book count: " , book_count);
       MarketBookRelease ( Symbol ());
       Print ( __FUNCTION__ , ": Подписка на стакан удалена. Символ " , Symbol ());
      DeleteBookCount(b_cnt_name);
       Print ( __FUNCTION__ , ": Счётчик подписок удален. Символ " , Symbol ());
    }
  }  
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const int begin,
                 const double &price[])
  {
     if (prev_calculated == 0 )
    {
       ArrayInitialize (Buff, EMPTY_VALUE );
    }
   Buff[ 0 ] = 2 ;
//--- return value of prev_calculated for next call
   event_cnt = rates_total;
   return (rates_total);
  }
//+------------------------------------------------------------------+
//| BookEvent function                                               |
//+------------------------------------------------------------------+
void OnBookEvent ( const string &symbol)
  {
   if (symbol == Symbol ())
   {
     // Print(__FUNCTION__, ": Подписка работает. Символ ", Symbol());
       double price[];
       OnCalculate (event_cnt,event_cnt,on_call,price);
   }
   
  }  
//+------------------------------------------------------------------+

Gösterge 2

 //+------------------------------------------------------------------+
//|                                                   Test_ind_2.mq5 |
//|                                      Copyright 2018 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018 prostotrader"
#property link        "https://www.mql5.com"
#property version    "1.00"
#include   "..\Include\BookCount.mqh"
#define on_call - 111
#property indicator_separate_window
string b_cnt_name;
int book_count;
bool is_book;
double Buff[];
int event_cnt = 0 ;
#property indicator_buffers 1
#property indicator_plots    1
//--- plot Label1
#property indicator_label1    "Test_1"
#property indicator_type1    DRAW_LINE
#property indicator_color1    clrLime
#property indicator_style1    STYLE_SOLID
#property indicator_width1    1
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
    b_cnt_name = CreateBookCount(book_count);
     if (b_cnt_name == "" ) return ( INIT_FAILED );
   //--- Set buffers 
   IndicatorSetInteger ( INDICATOR_DIGITS , 0 );
   IndicatorSetString ( INDICATOR_SHORTNAME , "Test_ind_2" );
//---Set buffers
   SetIndexBuffer ( 0 ,Buff, INDICATOR_DATA );
   PlotIndexSetDouble ( 0 , PLOT_EMPTY_VALUE , EMPTY_VALUE );
   ArraySetAsSeries (Buff, true ); 
   is_book = MarketBookAdd ( Symbol ());
   if (is_book == true )
    { 
       Print ( __FUNCTION__ , ": Подписка 2 на стакан добавлена. Символ " , Symbol ());
       if (BookCountUpdate(b_cnt_name, book_count, true ) == true )
      {
         Print ( __FUNCTION__ , ": Счётчик подписок обновлён. Символ " , Symbol ());
         Print ( __FUNCTION__ , ": Book count: " , book_count);
      }
    }
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
     Print ( __FUNCTION__ , ": Book count: " , book_count);
     if (book_count > 1 )
    {
       if (BookCountUpdate(b_cnt_name, book_count, false ) == true )
      {
         Print ( __FUNCTION__ , ": 2 Счётчик подписок обновлён. Символ " , Symbol ());
         Print ( __FUNCTION__ , ": 2 Book count: " , book_count);
      }
    }
     else
    { 
       MarketBookRelease ( Symbol ());
       Print ( __FUNCTION__ , ": Подписка 2 на стакан удалена. Символ " , Symbol ());
      DeleteBookCount(b_cnt_name);
       Print ( __FUNCTION__ , ": Счётчик подписок удален. Символ " , Symbol ());
       Print ( __FUNCTION__ , ": Book count: " , book_count);
    }
  }  
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const int begin,
                 const double &price[])
  {
     if (prev_calculated == 0 )
    {
       ArrayInitialize (Buff, EMPTY_VALUE );
    }
   Buff[ 0 ] = 2 ;
//--- return value of prev_calculated for next call
   event_cnt = rates_total;
   return (rates_total);
  }
//+------------------------------------------------------------------+
//| BookEvent function                                               |
//+------------------------------------------------------------------+
void OnBookEvent ( const string &symbol)
  {
   if (symbol == Symbol ())
   {
     // Print(__FUNCTION__, ": Подписка 2 работает. Символ ", Symbol());
       double price[];
       OnCalculate (event_cnt,event_cnt,on_call,price);
   }
   
  }  
//+------------------------------------------------------------------+

genel değişkenler


sonuç 1

 2018.07 . 25 19 : 34 : 43.733 Test_ind_1 (Si- 9.18 ,M1) OnInit : Подписка на стакан добавлена. Символ Si- 9.18
2018.07 . 25 19 : 34 : 43.733 Test_ind_1 (Si- 9.18 ,M1) OnInit : Счётчик подписок обновлён. Символ Si- 9.18
2018.07 . 25 19 : 34 : 43.733 Test_ind_1 (Si- 9.18 ,M1) OnInit : Book count: 1
2018.07 . 25 19 : 34 : 49.980 Test_ind_2 (Si- 9.18 ,M1) OnInit : Подписка 2 на стакан добавлена. Символ Si- 9.18
2018.07 . 25 19 : 34 : 49.980 Test_ind_2 (Si- 9.18 ,M1) OnInit : Счётчик подписок обновлён. Символ Si- 9.18
2018.07 . 25 19 : 34 : 49.980 Test_ind_2 (Si- 9.18 ,M1) OnInit : Book count: 2
2018.07 . 25 19 : 35 : 06.149 Test_ind_2 (Si- 9.18 ,M1) OnDeinit : Book count: 2
2018.07 . 25 19 : 35 : 06.149 Test_ind_2 (Si- 9.18 ,M1) OnDeinit : 2 Счётчик подписок обновлён. Символ Si- 9.18
2018.07 . 25 19 : 35 : 06.149 Test_ind_2 (Si- 9.18 ,M1) OnDeinit : 2 Book count: 1
2018.07 . 25 19 : 35 : 17.408 Test_ind_1 (Si- 9.18 ,M1) OnDeinit : Book count: 1
2018.07 . 25 19 : 35 : 17.408 Test_ind_1 (Si- 9.18 ,M1) OnDeinit : Book count: 1
2018.07 . 25 19 : 35 : 17.408 Test_ind_1 (Si- 9.18 ,M1) OnDeinit : Подписка на стакан удалена. Символ Si- 9.18
2018.07 . 25 19 : 35 : 17.408 Test_ind_1 (Si- 9.18 ,M1) OnDeinit : Счётчик подписок удален. Символ Si- 9.18

sonuç 2

 2018.07 . 25 19 : 42 : 34.884 Test_ind_1 (Si- 9.18 ,M1) OnInit : Подписка на стакан добавлена. Символ Si- 9.18
2018.07 . 25 19 : 42 : 34.884 Test_ind_1 (Si- 9.18 ,M1) OnInit : Счётчик подписок обновлён. Символ Si- 9.18
2018.07 . 25 19 : 42 : 34.884 Test_ind_1 (Si- 9.18 ,M1) OnInit : Book count: 1
2018.07 . 25 19 : 42 : 41.019 Test_ind_2 (Si- 9.18 ,M1) OnInit : Подписка 2 на стакан добавлена. Символ Si- 9.18
2018.07 . 25 19 : 42 : 41.019 Test_ind_2 (Si- 9.18 ,M1) OnInit : Счётчик подписок обновлён. Символ Si- 9.18
2018.07 . 25 19 : 42 : 41.019 Test_ind_2 (Si- 9.18 ,M1) OnInit : Book count: 2
2018.07 . 25 19 : 42 : 46.310 Test_ind_1 (Si- 9.18 ,M1) OnDeinit : Book count: 1
2018.07 . 25 19 : 42 : 46.310 Test_ind_1 (Si- 9.18 ,M1) OnDeinit : Book count: 1
2018.07 . 25 19 : 42 : 46.311 Test_ind_1 (Si- 9.18 ,M1) OnDeinit : Подписка на стакан удалена. Символ Si- 9.18
2018.07 . 25 19 : 42 : 46.311 Test_ind_1 (Si- 9.18 ,M1) OnDeinit : Счётчик подписок удален. Символ Si- 9.18
2018.07 . 25 19 : 42 : 57.445 Test_ind_2 (Si- 9.18 ,M1) OnDeinit : Book count: 2

1 göstergeyi ve ardından ikinciyi koyarsanız, o zaman

1. göstergeyi çıkarırken - çöpü tamamlayın (Sonuç 2), AMA

Önce 1. göstergeyi, ardından 2. göstergeyi ve ardından

2.yi, sonra 1.yi silin - o zaman her şey yolunda (Sonuç 1)!


Katma

Görünüşe göre 2 gösterge eklenirse, göstergeyi kaldırırken

ilk yerleştirildi

void OnDeinit(const int Reason), grafikte göstergeler olduğu kadar çok kez çağrılır!

 
prostotrader :

Çocuklar!

MT-5'i ASLA "yenemeyeceğiz"!

Genel olarak, global değişkenlerle çalışırken , tuzaklar vardır ... belki koda bazı hatalar sızmıştır ... Şu anda cep telefonumdayım - belki birileri bir bilgisayardan kontrol eder - yardımcı olur

 

AAA!! Her göstergenin, göstergeyi silmeden önce güncellenmesi gereken kendi değişkeni var gibi görünüyor! :)

düzelteceğim

 

Evet, benim hatam. Her şey doğru çalıştı

 2018.07 . 25 20 : 25 : 20.924 Test_ind_1 (Si- 9.18 ,M1) OnInit : Indicator1 - Подписка на стакан добавлена. Символ Si- 9.18
2018.07 . 25 20 : 25 : 20.924 Test_ind_1 (Si- 9.18 ,M1) OnInit : Indicator1 - Счётчик подписок обновлён. Символ Si- 9.18
2018.07 . 25 20 : 25 : 20.924 Test_ind_1 (Si- 9.18 ,M1) OnInit : Indicator1 - Book count: 1
2018.07 . 25 20 : 25 : 25.325 Test_ind_2 (Si- 9.18 ,M1) OnInit : Indicator 2 - Подписка на стакан добавлена. Символ Si- 9.18
2018.07 . 25 20 : 25 : 25.325 Test_ind_2 (Si- 9.18 ,M1) OnInit : Indicator 2 - Счётчик подписок обновлён. Символ Si- 9.18
2018.07 . 25 20 : 25 : 25.325 Test_ind_2 (Si- 9.18 ,M1) OnInit : Indicator 2 - Book count: 2
2018.07 . 25 20 : 25 : 29.813 Test_ind_3 (Si- 9.18 ,M1) OnInit : Indicator 3 - Подписка на стакан добавлена. Символ Si- 9.18
2018.07 . 25 20 : 25 : 29.813 Test_ind_3 (Si- 9.18 ,M1) OnInit : Indicator 3 - Счётчик подписок обновлён. Символ Si- 9.18
2018.07 . 25 20 : 25 : 29.813 Test_ind_3 (Si- 9.18 ,M1) OnInit : Indicator 3 - Book count: 3
2018.07 . 25 20 : 25 : 38.919 Test_ind_1 (Si- 9.18 ,M1) OnDeinit : Indicator1 - Счётчик подписок обновлён. Символ Si- 9.18
2018.07 . 25 20 : 25 : 38.919 Test_ind_1 (Si- 9.18 ,M1) OnDeinit : Indicator1 - Book count: 2
2018.07 . 25 20 : 25 : 53.097 Test_ind_3 (Si- 9.18 ,M1) OnDeinit : Indicator 3 - Счётчик подписок обновлён. Символ Si- 9.18
2018.07 . 25 20 : 25 : 53.097 Test_ind_3 (Si- 9.18 ,M1) OnDeinit : Indicator 3 - Book count: 1
2018.07 . 25 20 : 25 : 58.296 Test_ind_2 (Si- 9.18 ,M1) OnDeinit : Indicator 2 - Подписка на стакан удалена. Символ Si- 9.18
2018.07 . 25 20 : 25 : 58.296 Test_ind_2 (Si- 9.18 ,M1) OnDeinit : Indicator 2 - Счётчик подписок удален. Символ Si- 9.18

Ekli dosya

 //+------------------------------------------------------------------+
//|                                                    BookCount.mqh |
//|                                      Copyright 2018 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018 prostotrader"
#property link        "https://www.mql5.com"
//
//+------------------------------------------------------------------+
//| Ctrate book count function                                       |
//+------------------------------------------------------------------+
string CreateBookCount( int &cnt)                       //return book count name & count value
  {
   string book_cnt_name= IntegerToString ( ChartID ());
   if ( GlobalVariableCheck (book_cnt_name)== true )
     {
       double curr_value;
       if ( GlobalVariableGet (book_cnt_name,curr_value)== true )
        {
         cnt= int (curr_value);
         return (book_cnt_name);
        }
     }
   else
     {
      cnt= 0 ;
       if ( ulong ( GlobalVariableSet (book_cnt_name, double (cnt)))> 0 )
        {
         return (book_cnt_name);
        }
     }
   return ( "" );
  }
//+------------------------------------------------------------------+
//| Delete book count function                                       |
//+------------------------------------------------------------------+
bool DeleteBookCount( const string cnt_name) //delete g;obal variable book count
  {
   if ( GlobalVariableCheck (cnt_name)== true )
     {
       return ( GlobalVariableDel (cnt_name));
     }
   return ( false );
  }
//+------------------------------------------------------------------+
//| Book count update function                                       |
//+------------------------------------------------------------------+
bool BookCountUpdate( const string cnt_name, int &value, const bool is_update) //Update book count global variable
  {
   if ( GlobalVariableCheck (cnt_name)== true )
     {
       double curr_value;
       double new_value;
       if ( GlobalVariableGet (cnt_name,curr_value)== true )
        {
         if (is_update== true )
           {
            new_value=curr_value+ 1 ;
           }
         else
           {
            new_value=curr_value- 1 ;
           }
         int i= 0 ;
         do
           {
            i++;
             if ( GlobalVariableSetOnCondition (cnt_name,new_value,curr_value)== true )
              {
               value= int (new_value);
               return ( true );
              }
           }
         while (i< 100 );
        }
     }
   return ( false );
  }
//+------------------------------------------------------------------+
//| Get book count function                                       |
//+------------------------------------------------------------------+
bool GetBookCount( const string cnt_name, int &cnt) 
  {
   if ( GlobalVariableCheck (cnt_name)== true )
     {
       double curr_value;
       if ( GlobalVariableGet (cnt_name,curr_value)== true )
        {
         cnt= int (curr_value);
         return ( true );
        }
     }
   return ( false );
  }
//+------------------------------------------------------------------+

Gösterge

 //+------------------------------------------------------------------+
//|                                                   Test_ind_1.mq5 |
//|                                      Copyright 2018 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018 prostotrader"
#property link        "https://www.mql5.com"
#property version    "1.00"
#include   "..\Include\BookCount.mqh"
#define on_call - 111
#property indicator_separate_window
string b_cnt_name;
int book_count;
bool is_book;
double Buff[];
int event_cnt = 0 ;
#property indicator_buffers 1
#property indicator_plots    1
//--- plot Label1
#property indicator_label1    "Test_1"
#property indicator_type1    DRAW_LINE
#property indicator_color1    clrAqua
#property indicator_style1    STYLE_SOLID
#property indicator_width1    1
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
    b_cnt_name = CreateBookCount(book_count);
     if (b_cnt_name == "" ) return ( INIT_FAILED );
   //--- Set buffers 
   IndicatorSetInteger ( INDICATOR_DIGITS , 0 );
   IndicatorSetString ( INDICATOR_SHORTNAME , "Test_ind_1" );
//---Set buffers
   SetIndexBuffer ( 0 ,Buff, INDICATOR_DATA );
   PlotIndexSetDouble ( 0 , PLOT_EMPTY_VALUE , EMPTY_VALUE );
   ArraySetAsSeries (Buff, true ); 
   is_book = MarketBookAdd ( Symbol ());
   if (is_book == true )
    { 
       Print ( __FUNCTION__ , ": Indicator1 - Подписка на стакан добавлена. Символ " , Symbol ());
       if (BookCountUpdate(b_cnt_name, book_count, true ) == true )
      {
         Print ( __FUNCTION__ , ": Indicator1 - Счётчик подписок обновлён. Символ " , Symbol ());
             Print ( __FUNCTION__ , ": Indicator1 - Book count: " , book_count);
      }
    }
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
     if (GetBookCount(b_cnt_name, book_count) == true )
    {
       if (book_count > 1 )
      {
         if (BookCountUpdate(b_cnt_name, book_count, false ) == true )
        {
           Print ( __FUNCTION__ , ": Indicator1 - Счётчик подписок обновлён. Символ " , Symbol ());
           Print ( __FUNCTION__ , ": Indicator1 - Book count: " , book_count);
        }
      }
       else
      { 
         MarketBookRelease ( Symbol ());
         Print ( __FUNCTION__ , ": Indicator1 - Подписка на стакан удалена. Символ " , Symbol ());
         if (DeleteBookCount(b_cnt_name) == true )
        {
           Print ( __FUNCTION__ , ": Indicator1 - Счётчик подписок удален. Символ " , Symbol ());
        }  
      }
    }
  }  
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const int begin,
                 const double &price[])
  {
     if (prev_calculated == 0 )
    {
       ArrayInitialize (Buff, EMPTY_VALUE );
    }
   Buff[ 0 ] = 2 ;
//--- return value of prev_calculated for next call
   event_cnt = rates_total;
   return (rates_total);
  }
//+------------------------------------------------------------------+
//| BookEvent function                                               |
//+------------------------------------------------------------------+
void OnBookEvent ( const string &symbol)
  {
   if (symbol == Symbol ())
   {
     // Print(__FUNCTION__, ": Подписка работает. Символ ", Symbol());
       double price[];
       OnCalculate (event_cnt,event_cnt,on_call,price);
   }
   
  }  
//+------------------------------------------------------------------+


Her şey olması gerektiği gibi çalıştı!

 
2018.07 . 25 20 : 42 : 35.261 Test_ind_1 (Si- 9.18 ,M1) OnInit : Indicator 1 - Подписка на стакан добавлена. Символ Si- 9.18
2018.07 . 25 20 : 42 : 35.261 Test_ind_1 (Si- 9.18 ,M1) OnInit : Indicator 1 - Счётчик подписок обновлён. Символ Si- 9.18
2018.07 . 25 20 : 42 : 35.261 Test_ind_1 (Si- 9.18 ,M1) OnInit : Indicator 1 - Book count: 1
2018.07 . 25 20 : 42 : 35.407 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent :  Indicator 1 - Подписка работает. Символ Si- 9.18
2018.07 . 25 20 : 42 : 37.935 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent :  Indicator 1 - Подписка работает. Символ Si- 9.18
2018.07 . 25 20 : 42 : 38.909 Test_ind_2 (Si- 9.18 ,M1) OnInit : Indicator 2 - Подписка на стакан добавлена. Символ Si- 9.18
2018.07 . 25 20 : 42 : 38.909 Test_ind_2 (Si- 9.18 ,M1) OnInit : Indicator 2 - Счётчик подписок обновлён. Символ Si- 9.18
2018.07 . 25 20 : 42 : 38.909 Test_ind_2 (Si- 9.18 ,M1) OnInit : Indicator 2 - Book count: 2
2018.07 . 25 20 : 42 : 39.053 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent :  Indicator 1 - Подписка работает. Символ Si- 9.18
2018.07 . 25 20 : 42 : 39.053 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent :  Indicator 2 - Подписка работает. Символ Si- 9.18
2018.07 . 25 20 : 42 : 39.195 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent :  Indicator 1 - Подписка работает. Символ Si- 9.18
2018.07 . 25 20 : 42 : 43.127 Test_ind_3 (Si- 9.18 ,M1) OnInit : Indicator 3 - Подписка на стакан добавлена. Символ Si- 9.18
2018.07 . 25 20 : 42 : 43.127 Test_ind_3 (Si- 9.18 ,M1) OnInit : Indicator 3 - Счётчик подписок обновлён. Символ Si- 9.18
2018.07 . 25 20 : 42 : 43.127 Test_ind_3 (Si- 9.18 ,M1) OnInit : Indicator 3 - Book count: 3
2018.07 . 25 20 : 42 : 43.677 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent :  Indicator 1 - Подписка работает. Символ Si- 9.18
2018.07 . 25 20 : 42 : 43.677 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent :  Indicator 2 - Подписка работает. Символ Si- 9.18
2018.07 . 25 20 : 42 : 43.677 Test_ind_3 (Si- 9.18 ,M1) OnBookEvent : Indicator 3 - Подписка работает. Символ Si- 9.18
2018.07 . 25 20 : 42 : 44.066 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent :  Indicator 1 - Подписка работает. Символ Si- 9.18
2018.07 . 25 20 : 42 : 44.066 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent :  Indicator 2 - Подписка работает. Символ Si- 9.18
2018.07 . 25 20 : 42 : 44.066 Test_ind_3 (Si- 9.18 ,M1) OnBookEvent : Indicator 3 - Подписка работает. Символ Si- 9.18
2018.07 . 25 20 : 42 : 52.281 Test_ind_1 (Si- 9.18 ,M1) OnDeinit : Indicator 1 - Счётчик подписок обновлён. Символ Si- 9.18
2018.07 . 25 20 : 42 : 52.281 Test_ind_1 (Si- 9.18 ,M1) OnDeinit : Indicator 1 - Book count: 2
2018.07 . 25 20 : 42 : 52.533 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent :  Indicator 2 - Подписка работает. Символ Si- 9.18
2018.07 . 25 20 : 42 : 52.533 Test_ind_3 (Si- 9.18 ,M1) OnBookEvent : Indicator 3 - Подписка работает. Символ Si- 9.18
2018.07 . 25 20 : 42 : 52.579 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent :  Indicator 2 - Подписка работает. Символ Si- 9.18
2018.07 . 25 20 : 42 : 52.579 Test_ind_3 (Si- 9.18 ,M1) OnBookEvent : Indicator 3 - Подписка работает. Символ Si- 9.18
2018.07 . 25 20 : 42 : 52.779 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent :  Indicator 2 - Подписка работает. Символ Si- 9.18
2018.07 . 25 20 : 42 : 52.779 Test_ind_3 (Si- 9.18 ,M1) OnBookEvent : Indicator 3 - Подписка работает. Символ Si- 9.18
2018.07 . 25 20 : 42 : 59.417 Test_ind_3 (Si- 9.18 ,M1) OnDeinit : Indicator 3 - Счётчик подписок обновлён. Символ Si- 9.18
2018.07 . 25 20 : 42 : 59.417 Test_ind_3 (Si- 9.18 ,M1) OnDeinit : Indicator 3 - Book count: 1
2018.07 . 25 20 : 42 : 59.946 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent :  Indicator 2 - Подписка работает. Символ Si- 9.18
2018.07 . 25 20 : 43 : 00.786 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent :  Indicator 2 - Подписка работает. Символ Si- 9.18
2018.07 . 25 20 : 43 : 07.775 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent :  Indicator 2 - Подписка работает. Символ Si- 9.18
2018.07 . 25 20 : 43 : 07.977 Test_ind_2 (Si- 9.18 ,M1) OnDeinit : Indicator 2 - Подписка на стакан удалена. Символ Si- 9.18
2018.07 . 25 20 : 43 : 07.977 Test_ind_2 (Si- 9.18 ,M1) OnDeinit : Indicator 2 - Счётчик подписок удален. Символ Si- 9.18
Zevk almak.
 
prostotrader :
Zevk almak.

Bu, programların farklı satıcılardan olduğu ve ortak bir kontrol olmadığı genel durumda yardımcı olmaz. Yani bir tef ile yapılan tüm bu danslar başlangıçta işe yaramaz. Ve bu zaten daha önce söylendi. Sular altında konu dışı konu.