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

 
fxsaber:

而且你还可以自动清除付费市场的产品--在免费演示模式下,撕掉所有的资源(图标、光标等)。有阿尔法通道之类的东西。

你可以。而且你也可以停止惊慌失措,想一想:为什么一个事件必须要有一个结局。

 
A100:

我不相信!- 书中写道,市场中的一切都很安全

我怀疑它是 内部进口的)

 
A100:

我不相信!- 书中写道,一切都在市场中得到了安全的保护

我不知道这是否是认真的或讽刺的。如果是认真的,那么ResourceSave就是一切的首脑。

但你可以这样做。

关于交易、自动交易系统和交易策略测试的论坛

mql5语言的特点、微妙之处以及技巧

fxsaber, 2017.10.31 08:11

// Сохранение Bitmap-объекта в bmp/gif/png-файле (прозрачность не учитывается)
bool BitmapObjectToFile( const long chartID, const string ObjName, const string FileName, const bool FullImage = false )
{  
  const ENUM_OBJECT Type = (ENUM_OBJECT)ObjectGetInteger(chartID, ObjName, OBJPROP_TYPE);  
  bool Res = (Type == OBJ_BITMAP_LABEL) || (Type == OBJ_BITMAP);
             
  if (Res)
  {
    const string Name = __FUNCTION__ + (string)MathRand();

    ObjectCreate(chartID, Name, OBJ_CHART, 0, 0, 0);
    ObjectSetInteger(chartID, Name, OBJPROP_XDISTANCE, -1 e3);
    
    const long chart = ObjectGetInteger(chartID, Name, OBJPROP_CHART_ID);
        
    Res = ChartSetInteger(chart, CHART_SHOW, false) && ObjectCreate(chart, Name, OBJ_BITMAP_LABEL, 0, 0, 0) &&
          ObjectSetString(chart, Name, OBJPROP_BMPFILE, ObjectGetString(chartID, ObjName, OBJPROP_BMPFILE)) &&
          (FullImage || (ObjectSetInteger(chart, Name, OBJPROP_XSIZE, ObjectGetInteger(chartID, ObjName, OBJPROP_XSIZE)) &&
                         ObjectSetInteger(chart, Name, OBJPROP_YSIZE, ObjectGetInteger(chartID, ObjName, OBJPROP_YSIZE)) &&
                         ObjectSetInteger(chart, Name, OBJPROP_XOFFSET, ObjectGetInteger(chartID, ObjName, OBJPROP_XOFFSET)) &&
                         ObjectSetInteger(chart, Name, OBJPROP_YOFFSET, ObjectGetInteger(chartID, ObjName, OBJPROP_YOFFSET)))) &&
                         ChartScreenShot(chart, FileName, (int)ObjectGetInteger(chart, Name, OBJPROP_XSIZE),
                                                          (int)ObjectGetInteger(chart, Name, OBJPROP_YSIZE));
    ObjectDelete(chartID, Name);
  }                    

  return(Res);
}


应用

// Сохраняет в png-файлах все Bitmap-объекты текущего чарта
void OnStart()
{  
  for (int i = ObjectsTotal(0) - 1; i >= 0; i--)
  {
    const string Name = ObjectName(0, i);
    
    BitmapObjectToFile(0, Name, (string)ChartID() + "\\" + Name + ".png");    
  }      
}


ZZY 还实现了一个BMP->GIF/PNG文件转换器。

 
A100:

你在哪里做出改变?在MetaTrader中或在文件中...比如说

对于宽泛的事件,OnChartEvent写得更具体:图表上的 所有mql5程序发送事件消息(即订阅单位是图表)。

事实上,这就是所发生的事情

也许他们会添加CheckBookEventCount()函数

这意味着,如果计数器大于1,我们就不调用取消订阅。

 
prostotrader:

也许添加CheckBookEventCount()函数

也就是说,如果计数大于1,我们 就不调用删除订阅。

为什么不呢?

但问题仍然存在。

  • 哪个函数会减少计数器?
  • 哪一个将关闭杯子?

如果我们把所有东西都放在MarketBookRelease 上,那么为什么要用CheckBookEventCount,为什么要用我们 的反查?

 

一般来说,如果宽带订阅的单位是一个图,那么你完全可以通过组织程序间的订阅counter\subscription,基于一个全局变量,名字是这样的。

string GVName( string symbol ) { return IntegerToString(ChartID()) + ":" + symbol; }

默契

 
A100:
在你的沙盒里,是的。任何与玻璃相联系的外部代码都有可能让你崩溃。
 
prostotrader:

嗯,正如预期的那样,你错了。

我可能是错的,但在这种情况下不是。我希望你能更仔细地阅读别人的帖子。已经重复了好几次问题是什么,但无济于事...。

 
fxsaber:

Init和Deinit不是订阅的一部分。也许这种情况会有所帮助。

不,这并不重要。即使我们提到指标重载时OnInit/OnDeinit调用顺序不可预测的问题,如果我们依赖对象的创建/销毁,它也不会消失--存在同样的悖论。

但是,这个序列(在指标中)再一次不是错误的来源。

 
Stanislav Korotky:

我可能是错的,但在这种情况下不是。我希望你能更仔细地阅读别人的帖子。已经重复了好几次问题是什么,但无济于事...。

对了,阅读所有的帖子是个好主意。

https://www.mql5.com/ru/forum/267154/page7#comment_8170755
Подписка на OnBookEvent иногда отваливается - есть такое?
Подписка на OnBookEvent иногда отваливается - есть такое?
  • 2018.07.24
  • www.mql5.com
После того как поплотнее занялся стаканом и повесил на чарты несколько экспертов и индикаторов, подписанных на OnBookEvent, обнаружил, что некоторы...
原因: