对OnBookEvent的订阅有时会脱落--有这种情况吗? - 页 5

 
A100:
明天我将检查你的代码的魔力......与此同时,我想听听你的意见,关于打开/关闭一个杯子的 功能是否可以与订阅/取消订阅该杯子中的事件的功能相结合,或者它们应该分开。

由于FORTS Plaza II网关接收滚珠的特殊性,在滚珠的情况下,不能这样做。

 
prostotrader:

我确信这就是错误的原因。

我从来没有出现过invalid_book_transaction的错误,所以这是不一样的。

 
prostotrader:

如果你在同一个符号上做了你所写的事情,自然订阅的内容就会在同一个终端上被那个符号所破坏!

而这是正确的。

这有什么好说的?一个程序打倒了另一个。想象一下,专家顾问为自己设置了一个定时器,而Vasya Pupkin在他的邻近脚本中禁用了定时器。KOLOSSAL。

 
Stanislav Korotky:

我从来没有出现过invalid_book_transaction的错误,所以这是不一样的。

让我们等待新的建设。

 
Stanislav Korotky:

什么是正确的事情?一个程序打倒了另一个。想象一下,专家顾问为自己设置了一个定时器,而Vasya Pupkin在他的相邻脚本中禁用了这个定时器。错。

正确使用订阅,你就不需要瓦夏-普金。

我有82个EA在一台电脑上的两个终端(真实)运行,从来没有遇到过你描述的问题。

添加

我说的是启用/禁用对赌的订阅。

两行代码。

下面是一个例子

编码

//+------------------------------------------------------------------+
//|                                                        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 = false;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Add books
   is_book = MarketBookAdd(Symbol());
   if(is_book == true) Print(__FUNCTION__, ": Подписка на стакан добавлена. Символ ", Symbol());
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
    if(is_book == true)
{ MarketBookRelease(Symbol());
    Print(__FUNCTION__, ": Подписка на стакан удалена. Символ ", Symbol());}
  }

//+------------------------------------------------------------------+
//| BookEvent function                                               |
//+------------------------------------------------------------------+
void OnBookEvent(const string &symbol)
  {
   if(symbol == Symbol())
   {
     Print(__FUNCTION__, ": Подписка работает. Символ ", Symbol());
   }
   
  }
//+------------------------------------------------------------------+




结果

2018.07.24 13:51:19.719 Book_test (Si-9.18,M1)  OnInit: Подписка на стакан добавлена. Символ Si-9.18
2018.07.24 13:51:19.745 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:30.346 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:30.411 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:30.477 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:30.489 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:31.071 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:31.108 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:31.178 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:31.285 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:31.305 Book_test (Si-9.18,M1)  OnInit: Подписка на стакан добавлена. Символ Si-9.18
2018.07.24 13:51:31.549 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:31.549 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:31.877 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:31.877 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:31.909 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:31.909 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:32.046 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:32.046 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:32.217 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:32.217 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:32.687 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:32.687 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:32.761 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:32.761 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:32.969 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:32.969 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:33.036 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:33.036 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:33.220 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:33.220 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:33.259 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:33.259 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18

..............................

2018.07.24 13:51:44.888 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:44.939 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:44.939 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:45.959 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:45.959 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:45.991 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:45.991 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:46.251 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:46.251 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:48.952 Book_test (Si-9.18,M1)  OnDeinit: Подписка на стакан удалена. Символ Si-9.18
2018.07.24 13:51:49.048 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:49.176 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:49.382 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:49.493 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:49.517 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:49.551 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:49.630 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:49.651 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:49.706 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:49.726 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:49.791 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:49.890 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:49.928 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:50.170 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:50.582 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:50.908 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:51.041 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:51.080 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:51.112 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:51.362 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:51.457 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:51.470 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:51.523 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:51.771 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:51.850 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:52.221 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:52.240 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:52.392 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:52.688 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:53.013 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:53.169 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:53.328 Book_test (Si-9.18,M1)  OnBookEvent: Подписка работает. Символ Si-9.18
2018.07.24 13:51:54.185 Book_test (Si-9.18,M1)  OnDeinit: Подписка на стакан удалена. Символ Si-9.18
 
prostotrader:

正确使用你的订阅,你就不需要Papkin了。

我有82个EA在同一台电脑上的两个终端(真实)运行,从来没有遇到过你描述的问题。

添加

我说的是启用/禁用订阅打赌。

两行代码。

首先,这里似乎有一个错误?

if(is_book = true) MarketBookRelease(Symbol());

它应该是这样的。

if(is_book == true) MarketBookRelease(Symbol());

if(is_book) MarketBookRelease(Symbol());

其次,这张支票到底是用来做什么的?如果这个EA中的订阅没有连接,会不会删除别人的?

 
Sergey Savinkin:

首先,这里似乎有一个错误?

它应该是这样的。

其次,为什么要进行这种检查?如果这个EA中的订阅没有连接,会不会删除别人的?

谢谢你,这真的是一个错字。

该符号有一个订阅计数器。

 
prostotrader:

有一个符号订阅计数器。

你能详细说明一下它是如何组织的吗?

 
Sergey Savinkin:

你能详细介绍一下它是如何组织的吗?

我不是开发人员,但我认为当MarketBookAdd() 被调用时,符号上的订阅计数器会增加。

相应地,当MakerBookRelease()被调用时,它就会减少,如果计数器为零,订阅就会停止。

 
prostotrader:

我不是一个开发者,但我认为当MarketBookAdd()被调用时,角色上的订阅计数器会增加。

因此,当你调用MakerBookRelease()时,如果计数器为零,它就会减少并停止订阅。

我想让开发者发表一下意见,因为在文档中没有关于这个的内容。

原因: