对OnBookEvent的订阅有时会脱落--有这种情况吗? - 页 11 1...4567891011121314 新评论 prostotrader 2018.07.27 12:59 #101 Stanislav Korotky:是的,作为回应,你首先声称没有问题,然后提供不同的解决方案,但它们在一般情况下不起作用。你声称已经提供了一个解决方案,这是对人们的伤害。没有必要道歉。从现在开始,最好能把事情搞清楚。但你需要道歉,因为你没有阅读任何东西,而我写了。 "我在同一个符号的不同窗口中运行这些指标,效果不错。但当我在一个符号窗口中 运行这两个指标时, 它真的当一个指标被移除时,订阅就 "脱落 "了。写给SD(也许他们会有时间在新版本中进行修复)" 添加 拜托,斯坦尼斯拉夫,不要继续这种论战,不要想道歉--不要。 prostotrader 2018.07.27 13:01 #102 Slava:订阅使计数器增加1。 取消订阅会使计数器减少1。 如果你的EA需要tumblr事件,他不应该依赖其他EA来启用对他的订阅。他应该在OnInit中订阅自己。而在OnDeinit中--取消订阅你所写的--每个人都是如此。 但问题是,如果在一个窗口中调用了两个订阅,当一个订阅被删除时,另一个(第二个)也被删除。 Slava 2018.07.27 13:03 #103 prostotrader:你所写的--每个人都是如此。 但问题是,如果一个订阅在一个窗口中被调用了2次,那么删除一个订阅会删除另一个(第二个)。不,它不应该是这样的。2个订阅 - 2个AddRef。1次取消订阅 - 1次发布。结果是,计数器为1。 只有在计数器变为0后,订阅才会被销毁 A100 2018.07.27 13:04 #104 prostotrader: 但问题是,如果在一个窗口中调用了两个订阅,那么当一个订阅被删除时,另一个(第二个)也会被删除。换句话说,有专家/专家计数器(但一个图表上只能有一个专家),但没有专家/指标计数器或指标/指标计数器。 prostotrader 2018.07.27 13:06 #105 A100: 换句话说,有一个专家/专家计数器,但没有专家/指示器计数器一个窗口只能有一个专家。 A100 2018.07.27 13:10 #106 prostotrader:一个窗口只能有一个评估员。完全正确...窗口/图表之间也算......但内部 - 没有 prostotrader 2018.07.27 13:11 #107 Slava:不,它不应该是这样的。2 订阅 - 2 AddRef.1次取消订阅 - 1次发布。结果是,计数器为1。 只有在计数器变成0后,订阅才会被销毁这条线有指标的代码,在同一窗口中对同一符号(堡垒)运行它们,你会看到自己的情况。 添加 检查需要2分钟 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" #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); } } //+------------------------------------------------------------------+ 2个指标 //+------------------------------------------------------------------+ //| 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); } } //+------------------------------------------------------------------+ Slava 2018.07.27 13:23 #108 我理解这个问题。 还没有准备好回答 prostotrader 2018.07.27 13:24 #109 Slava:我理解这个问题。 还没有准备好回答谢谢,非常期待解决这个问题! Stanislav Korotky 2018.07.27 13:41 #110 prostotrader:但另一方面,你需要道歉,因为是你什么都不看,而我写了。 "我在同一个符号的不同窗口中运行这些指标,效果很好。但当我在一个符号窗口中 运行这两个指标时, 它真的当一个指标被移除时,订阅就 "脱落 "了。写给SD(也许他们会有时间在新版本中进行修复)" 添加 拜托,斯坦尼斯拉夫,不要继续这种争论,不要想道歉--不要。你开始了,你应该完成它。我没有什么需要道歉的。我写的东西都是直奔主题的,不像你。 我已经看到了你所有的帖子。你只引用了适合你的东西,而你只是忽略了之前和之后的内容,就好像你没有写过一样。的确,从你设法重现这个问题的那一刻起。而且总的来说,你带着你的问题来到这个主题,这与主题无关。 1...4567891011121314 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
是的,作为回应,你首先声称没有问题,然后提供不同的解决方案,但它们在一般情况下不起作用。你声称已经提供了一个解决方案,这是对人们的伤害。没有必要道歉。从现在开始,最好能把事情搞清楚。
但你需要道歉,因为你没有阅读任何东西,而我写了。
"我在同一个符号的不同窗口中运行这些指标,效果不错。
但当我在一个符号窗口中 运行这两个指标时, 它真的
当一个指标被移除时,订阅就 "脱落 "了。
写给SD(也许他们会有时间在新版本中进行修复)"
添加
拜托,斯坦尼斯拉夫,不要继续这种论战,不要想道歉--不要。
订阅使计数器增加1。
取消订阅会使计数器减少1。
如果你的EA需要tumblr事件,他不应该依赖其他EA来启用对他的订阅。他应该在OnInit中订阅自己。而在OnDeinit中--取消订阅
你所写的--每个人都是如此。
但问题是,如果在一个窗口中调用了两个订阅,当一个订阅被删除时,另一个(第二个)也被删除。
你所写的--每个人都是如此。
但问题是,如果一个订阅在一个窗口中被调用了2次,那么删除一个订阅会删除另一个(第二个)。
不,它不应该是这样的。2个订阅 - 2个AddRef。1次取消订阅 - 1次发布。结果是,计数器为1。
只有在计数器变为0后,订阅才会被销毁
但问题是,如果在一个窗口中调用了两个订阅,那么当一个订阅被删除时,另一个(第二个)也会被删除。
换句话说,有专家/专家计数器(但一个图表上只能有一个专家),但没有专家/指标计数器或指标/指标计数器。
换句话说,有一个专家/专家计数器,但没有专家/指示器计数器
一个窗口只能有一个专家。
一个窗口只能有一个评估员。
完全正确...窗口/图表之间也算......但内部 - 没有
不,它不应该是这样的。2 订阅 - 2 AddRef.1次取消订阅 - 1次发布。结果是,计数器为1。
只有在计数器变成0后,订阅才会被销毁
这条线有指标的代码,在同一窗口中对同一符号(堡垒)运行它们,你会看到自己的情况。
添加
检查需要2分钟
1个指标
2个指标
我理解这个问题。
还没有准备好回答
我理解这个问题。
还没有准备好回答
谢谢,非常期待解决这个问题!
但另一方面,你需要道歉,因为是你什么都不看,而我写了。
"我在同一个符号的不同窗口中运行这些指标,效果很好。
但当我在一个符号窗口中 运行这两个指标时, 它真的
当一个指标被移除时,订阅就 "脱落 "了。
写给SD(也许他们会有时间在新版本中进行修复)"
添加
拜托,斯坦尼斯拉夫,不要继续这种争论,不要想道歉--不要。
你开始了,你应该完成它。我没有什么需要道歉的。我写的东西都是直奔主题的,不像你。
我已经看到了你所有的帖子。你只引用了适合你的东西,而你只是忽略了之前和之后的内容,就好像你没有写过一样。的确,从你设法重现这个问题的那一刻起。而且总的来说,你带着你的问题来到这个主题,这与主题无关。