对OnBookEvent的订阅有时会脱落--有这种情况吗? - 页 6 1234567891011121314 新评论 prostotrader 2018.07.24 13:13 #51 Sergey Savinkin:我想让开发人员发表一下意见,因为在文档中没有关于这个的内容。从上面的日志中,你没有看到有一个计数器吗? Sergey Savinkin 2018.07.24 13:20 #52 prostotrader:从上面的日志来看,不是有一个计数器吗?你可以从上面的日志中看到,一个EA并没有退订另一个。但如何实施--通过计数器或其他东西--还不清楚。此外,该程序员还拥有一个指标和一个专家顾问。但该指标有一个令人不快的特点,就是把OnInit()和OnDeinit()的启动顺序混在一起。虽然,它不应该混淆计数器,如果它真的有一个。 prostotrader 2018.07.24 13:22 #53 Sergey Savinkin:你可以从上面的日志中看到,一个EA并没有退订另一个。但如何实施--通过计数器或其他东西--还不清楚。此外,该程序员还有一个指标和一个专家顾问。但该指标有一个恼人的特点,就是把OnInit()和OnDeinit()的启动顺序混在一起。因此,我们实现了is_book这个变量,以避免混淆。 开发者将MarketBookAdd() 变成一个函数是有原因的。 Stanislav Korotky 2018.07.24 15:12 #54 prostotrader:从上面的日志中,你难道看不到有一个计数器吗?在使用与发生问题的情况不同的情况下,日志是没有什么的。 拿出你的两个程序(专家顾问和一个指标,或两个指标)--把它们放在同一个图表上,然后删除其中一个。剩余实例的订阅量将下降。 即使OnInit/OnDeinit的调用顺序是正确的(在这些测试中一直是正确的),也有一个问题。 fxsaber 2018.07.24 15:51 #55 这种方法难道不可行吗?class MARKETBOOK { private: const string SymbName; int Count; public: MARKETBOOK( const string Symb ) : SymbName(Symb), Count(0) { this.On(); } ~MARKETBOOK( void ) { this.Off(); } bool isExist( void ) const { return(this.Count); } bool On( void ) { return (this.isExist() || (bool)(this.Count += ::MarketBookAdd(this.SymbName))); } bool Off( void ) { while (this.isExist()) this.Count -= ::MarketBookRelease(this.SymbName); return(!this.isExist()); } }; MARKETBOOK MarketBook(_Symbol); Stanislav Korotky 2018.07.24 20:35 #56 fxsaber: 这种方法不起作用?我还没有在终端中运行它,但我有一个问题--把代码移到一个对象封装器中,对防止终端本身的 "断头 "有什么帮助(就像现在这样)?那么,一个对象将被创建,订阅将开始,然后如果有人关闭了另一个有订阅的程序,这个对象将永远不知道没有订阅了。 我做了一个简单的方法:我比较了OnBookEvent和OnTick的超时情况。如果第一个电话的超时时间超过第二个电话的超时时间超过N秒--我就重新订阅。 prostotrader 2018.07.24 21:25 #57 Stanislav Korotky :我还没有在终端中运行它,但是问题出现了——将代码传输到对象包装器如何帮助终端本身在自身内部“切断末端”(就像现在发生的那样)?好吧,将创建一个对象并开始订阅,然后如果有人用订阅关闭另一个程序,该对象将永远不会知道订阅不再存在。我以一种简单的方式做到了这一点:我比较了 OnBookEvent 和 OnTick 的超时。如果第一次超时超过第二次超时超过 N 秒,我重新订阅。好吧,正如预期的那样,你错了。第一个指标//+------------------------------------------------------------------+ //| 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" #define on_call - 111 #property indicator_separate_window bool is_book = false ; 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 () { //--- 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 ()); } //--- return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit ( const int reason) { if (is_book == true ) { MarketBookRelease ( Symbol ()); 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); } } //+------------------------------------------------------------------+ 第二个指标//+------------------------------------------------------------------+ //| 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" #define on_call - 111 #property indicator_separate_window bool is_book = false ; double Buff[]; int event_cnt = 0 ; #property indicator_buffers 1 #property indicator_plots 1 //--- plot Label1 #property indicator_label1 "Test_2" #property indicator_type1 DRAW_LINE #property indicator_color1 clrLime #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit () { //--- 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 ()); } //--- return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit ( const int reason) { if (is_book == true ) { MarketBookRelease ( Symbol ()); Print ( __FUNCTION__ , ": Подписка 2 на стакан удалена. Символ " , 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__ , ": Подписка 2 работает. Символ " , symbol); double price[]; OnCalculate (event_cnt,event_cnt,on_call,price); } } //+------------------------------------------------------------------+ 结果2018.07 . 24 22 : 20 : 26.992 Test_ind_1 (Si- 9.18 ,M1) OnInit : Подписка на стакан добавлена. Символ Si- 9.18 2018.07 . 24 22 : 20 : 26.998 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 27.214 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 27.226 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 27.528 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 28.250 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 28.374 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 28.388 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 28.974 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 29.014 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 29.114 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 29.238 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 29.296 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 29.304 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 29.397 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 29.405 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 30.321 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 30.335 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 30.593 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 30.607 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 30.915 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 31.407 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 31.491 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 31.505 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 31.611 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 31.707 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 31.815 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 33.395 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 33.577 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 33.777 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 33.785 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 33.923 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 33.943 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 34.693 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 35.725 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 36.059 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 36.251 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 36.265 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 20 : 36.418 Test_ind_1 (Si- 9.18 ,M1) OnDeinit : Подписка на стакан удалена. Символ Si- 9.18 2018.07 . 24 22 : 21 : 41.846 Test_ind_1 (Si- 9.18 ,M1) OnInit : Подписка на стакан добавлена. Символ Si- 9.18 2018.07 . 24 22 : 21 : 41.852 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 21 : 41.884 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 21 : 42.658 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 21 : 42.926 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 21 : 44.540 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 21 : 44.632 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 21 : 45.396 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 21 : 45.722 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 21 : 46.132 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 21 : 46.514 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 21 : 46.860 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 21 : 47.012 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 21 : 47.064 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 21 : 47.254 Test_ind_2 (Si- 9.18 ,M1) OnInit : Подписка 2 на стакан добавлена. Символ Si- 9.18 2018.07 . 24 22 : 21 : 52.020 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 21 : 52.020 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent : Подписка 2 работает. Символ Si- 9.18 2018.07 . 24 22 : 21 : 52.026 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 21 : 52.026 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent : Подписка 2 работает. Символ Si- 9.18 2018.07 . 24 22 : 21 : 52.056 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 21 : 52.056 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent : Подписка 2 работает. Символ Si- 9.18 2018.07 . 24 22 : 22 : 07.882 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent : Подписка 2 работает. Символ Si- 9.18 2018.07 . 24 22 : 22 : 07.886 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 22 : 07.886 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent : Подписка 2 работает. Символ Si- 9.18 2018.07 . 24 22 : 22 : 07.946 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 22 : 07.946 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent : Подписка 2 работает. Символ Si- 9.18 2018.07 . 24 22 : 22 : 07.961 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 22 : 07.961 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent : Подписка 2 работает. Символ Si- 9.18 2018.07 . 24 22 : 22 : 07.963 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 22 : 07.963 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent : Подписка 2 работает. Символ Si- 9.18 2018.07 . 24 22 : 22 : 08.039 Test_ind_1 (Si- 9.18 ,M1) OnBookEvent : Подписка работает. Символ Si- 9.18 2018.07 . 24 22 : 22 : 08.039 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent : Подписка 2 работает. Символ Si- 9.18 2018.07 . 24 22 : 22 : 08.433 Test_ind_1 (Si- 9.18 ,M1) OnDeinit : Подписка на стакан удалена. Символ Si- 9.18 2018.07 . 24 22 : 22 : 08.947 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent : Подписка 2 работает. Символ Si- 9.18 2018.07 . 24 22 : 22 : 09.067 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent : Подписка 2 работает. Символ Si- 9.18 2018.07 . 24 22 : 22 : 09.143 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent : Подписка 2 работает. Символ Si- 9.18 2018.07 . 24 22 : 22 : 09.162 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent : Подписка 2 работает. Символ Si- 9.18 2018.07 . 24 22 : 22 : 09.164 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent : Подписка 2 работает. Символ Si- 9.18 2018.07 . 24 22 : 22 : 09.910 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent : Подписка 2 работает. Символ Si- 9.18 2018.07 . 24 22 : 22 : 12.446 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent : Подписка 2 работает. Символ Si- 9.18 2018.07 . 24 22 : 22 : 16.896 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent : Подписка 2 работает. Символ Si- 9.18 2018.07 . 24 22 : 22 : 16.908 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent : Подписка 2 работает. Символ Si- 9.18 2018.07 . 24 22 : 22 : 17.144 Test_ind_2 (Si- 9.18 ,M1) OnBookEvent : Подписка 2 работает. Символ Si- 9.18 2018.07 . 24 22 : 22 : 17.216 Test_ind_2 (Si- 9.18 ,M1) OnDeinit : Подписка 2 на стакан удалена. Символ Si- 9.18 fxsaber 2018.07.24 21:44 #58 Stanislav Korotky:我还没有在终端中运行它,但我有一个问题--把代码移到一个对象封装器中,对防止终端本身的 "断头 "有什么帮助(就像现在这样)?Init和Deinit不参与订阅。也许这种情况会有所帮助。 prostotrader 2018.07.24 21:46 #59 我在同一符号的不同窗口中运行过这些指标,效果不错。 但当我在同一个符号窗口中运行这两个指标时,它真的 拆除一个指示器时,认购书 "脱落 "了。 写给SD(也许他们会有时间在新版本中进行修复)。 fxsaber 2018.07.24 21:48 #60 关于交易、自动交易系统和交易策略测试的论坛 OnBookEvent订阅有时会脱落--有这种情况吗? prostotrader, 2018.07.24 21:25 if(is_book = true) 1234567891011121314 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我想让开发人员发表一下意见,因为在文档中没有关于这个的内容。
从上面的日志中,你没有看到有一个计数器吗?
从上面的日志来看,不是有一个计数器吗?
你可以从上面的日志中看到,一个EA并没有退订另一个。但如何实施--通过计数器或其他东西--还不清楚。此外,该程序员还拥有一个指标和一个专家顾问。但该指标有一个令人不快的特点,就是把OnInit()和OnDeinit()的启动顺序混在一起。虽然,它不应该混淆计数器,如果它真的有一个。
你可以从上面的日志中看到,一个EA并没有退订另一个。但如何实施--通过计数器或其他东西--还不清楚。此外,该程序员还有一个指标和一个专家顾问。但该指标有一个恼人的特点,就是把OnInit()和OnDeinit()的启动顺序混在一起。
因此,我们实现了is_book这个变量,以避免混淆。
开发者将MarketBookAdd() 变成一个函数是有原因的。
从上面的日志中,你难道看不到有一个计数器吗?
在使用与发生问题的情况不同的情况下,日志是没有什么的。
拿出你的两个程序(专家顾问和一个指标,或两个指标)--把它们放在同一个图表上,然后删除其中一个。剩余实例的订阅量将下降。
即使OnInit/OnDeinit的调用顺序是正确的(在这些测试中一直是正确的),也有一个问题。
这种方法不起作用?
我还没有在终端中运行它,但我有一个问题--把代码移到一个对象封装器中,对防止终端本身的 "断头 "有什么帮助(就像现在这样)?那么,一个对象将被创建,订阅将开始,然后如果有人关闭了另一个有订阅的程序,这个对象将永远不知道没有订阅了。
我做了一个简单的方法:我比较了OnBookEvent和OnTick的超时情况。如果第一个电话的超时时间超过第二个电话的超时时间超过N秒--我就重新订阅。
我还没有在终端中运行它,但是问题出现了——将代码传输到对象包装器如何帮助终端本身在自身内部“切断末端”(就像现在发生的那样)?好吧,将创建一个对象并开始订阅,然后如果有人用订阅关闭另一个程序,该对象将永远不会知道订阅不再存在。
我以一种简单的方式做到了这一点:我比较了 OnBookEvent 和 OnTick 的超时。如果第一次超时超过第二次超时超过 N 秒,我重新订阅。
好吧,正如预期的那样,你错了。
第一个指标
第二个指标
结果
我还没有在终端中运行它,但我有一个问题--把代码移到一个对象封装器中,对防止终端本身的 "断头 "有什么帮助(就像现在这样)?
Init和Deinit不参与订阅。也许这种情况会有所帮助。
我在同一符号的不同窗口中运行过这些指标,效果不错。
但当我在同一个符号窗口中运行这两个指标时,它真的
拆除一个指示器时,认购书 "脱落 "了。
写给SD(也许他们会有时间在新版本中进行修复)。
关于交易、自动交易系统和交易策略测试的论坛
OnBookEvent订阅有时会脱落--有这种情况吗?
prostotrader, 2018.07.24 21:25