Подписка на 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, -1e3);
    
    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");    
  }      
}


ЗЫ Так же реализовывается конвертер файлов BMP->GIF/PNG.

 
A100:

А куда вносить изменения? В MetaTrader или в документацию... например

для широкополосных событий OnChartEvent написано более определённо: Отправка всем mql5-программам на графике сообщений о событии (т.е. единицей подписки является график)

Что собственно по факту и происходит

Может быть добавят функцию CheckBookEventCount()

Т.е если счетчик больше 1, то мы не вызываем удаление подписки

 
prostotrader:

Может быть добавят функцию CheckBookEventCount()

Т.е если счетчик больше 1, то мы не вызываем удаление подписки

А почему бы и нет?

Хотя вопросы остаются:

  • Какая функция будет уменьшать счётчик?
  • Какая закрывать стакан?

Если все возложить на MarketBookRelease то зачем тогда CheckBookEventCount и зачем тогда мы с нашей проверкой счетчика?

 

Вообще, если единицей широкополосной подписки является график то можно вообще ничего не менять, организовав самим межпрограммный счетчик подписок\отписок на базе глобальной переменной с таким вот именем:

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, обнаружил, что некоторы...