Новая версия платформы MetaTrader 5 build 2650: Фоновая загрузка графиков и улучшения в профилировщике MQL5-кода - страница 25

 

Не могу добавить в Обзор рынка символ с помощью сенсорной (экранной) клавиатуры. Вызываю сенсорную клавиатуру - набираю мышью USD. Результат: U...S..., a нажатие D уже сбрасывает предыдущий набор US. А с обычной клавиатурой нормально


 

 
На сайте при редактировании сообщения с рисунком: если удалить старый рисунок и добавить вместо него отредактированный новый (т.е. новое содержимое, но с тем же именем файла), то фактически после нажатия кнопки Обновить - добавляется старый. Откуда берется старый рисунок, если на компьютере его уже нет. Пока имя файла не изменишь - новый рисунок не добавится. Давно уже когда то писал об этой "особенности", но с тех пор ничего не изменилось
 
A100:
На сайте при редактировании сообщения с рисунком: если удалить старый рисунок и добавить вместо него отредактированный новый (т.е. новое содержимое, но с тем же именем файла), то фактически после нажатия кнопки Обновить - добавляется старый. Откуда берется старый рисунок, если на компьютере его уже нет. Пока имя файла не изменишь - новый рисунок не добавится. Давно уже когда то писал об этой "особенности", но с тех пор ничего не изменилось

Рисунок отображается из кэша браузера, если потереть историю, то будет нужная картинка.

 
A100:

А если новое сообщение с картинкой Добавить, почему браузер новую картинку добавляет, а не берет из кэша старую?

Картинку новую добавляет, это Вам отображается неверно - отчистите кэш и увидите, или посмотрите на другом устройстве. Я наблюдал такой эффект во всяком случае.

 
Aleksey Vyazmikin:

Картинку новую добавляет, это Вам отображается неверно - отчистите кэш и увидите, или посмотрите на другом устройстве. Я наблюдал такой эффект во всяком случае.

Проверил с телефона - там тоже старый рисунок отображается. Более того - добавил рисунок из другого браузера - эффект тот же. Сомневаюсь, что браузеры кэшем обмениваются и вообще дело в браузере

 
A100:

Проверил с телефона - там тоже старый рисунок отображается. Более того - добавил рисунок из другого браузера - эффект тот же. Сомневаюсь, что браузеры кэшем обмениваются и вообще дело в браузере

Тогда это другой баг, не тот что был у меня, или Вы уже смотрели картинку с того устройства :)

А если добавить к старой картинке новую в то же сообщение?
 
Aleksey Vyazmikin:

Тогда это другой баг, не тот что был у меня, или Вы уже смотрели картинку с того устройства :)

А если добавить к старой картинке новую в то же сообщение?

Старого уже нет изображения. Даже в новом сообщении в новом браузере добавляю новое изображение - отображается старое до тех пор, пока файл не переименуешь

 
A100:
На сайте при редактировании сообщения с рисунком: если удалить старый рисунок и добавить вместо него отредактированный новый (т.е. новое содержимое, но с тем же именем файла), то фактически после нажатия кнопки Обновить - добавляется старый. Откуда берется старый рисунок, если на компьютере его уже нет. Пока имя файла не изменишь - новый рисунок не добавится. Давно уже когда то писал об этой "особенности", но с тех пор ничего не изменилось

На стороне хоста сайта мкл значит. Не обновляет видимо при обновлении файлы рисунков, а при загрузке нового не производится перезапись.

 
Последние две-три недели просто беда при загрузке рисунков на сайт (Alt+I). Через раз открывается диалоговое окно для выбора рисунка. И потом не всегда грузится: выбор файла происходит, но сайт никакого ответа не даёт...
 
Уважаемые разработчики,

Почему ты меня игнорируешь? Есть причина?

Извините за мой язык, я использую переводчик.



Я столкнулся с ошибкой, это должно быть для вас приоритетом, верно?

Здесь у нас есть ошибка с объектами мини-диаграммы: при создании мини-диаграммы в несфокусированном окне функции ChartSymbol() и ChartPeriod() возвращают неверные значения, пока мы не сфокусируем окно.

То же самое происходит, если мы закрываем и открываем терминал, а график с объектом minichart не сфокусирован.



Эта ошибка приводит к тому, что ChartIndicatorAdd() всегда терпит неудачу (возвращает false), пока мы не сфокусируем диаграмму!

Пожалуйста, исправьте эту ошибку!



Вот простой код советника для воспроизведения проблемы (проверьте журнал экспертов):
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   EventSetTimer(4);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   EventKillTimer();
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTimer()
  {
   checkMiniChart();
  }
string MC_name="Minichart";   //minichart name
long MC_ID=-1;                //minichart ID
long chartID=-1;              //Chart ID
bool created = false;         //check if chart and minichart created or not
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void checkMiniChart()
  {
   if(!created)
     {
      createMinichart();
     }
   else
     {
      Print("["+chartID+"] Minichart: "
            +" obj symbol: "+(ObjectGetString(chartID,MC_name,OBJPROP_SYMBOL))
            +" - obj period: "+(ObjectGetInteger(chartID,MC_name,OBJPROP_PERIOD))
            +" - chart symbol: "+(ChartSymbol(MC_ID))
            +" - chart period: "+(ChartPeriod(MC_ID))
           );
      if(ObjectGetString(chartID,MC_name,OBJPROP_SYMBOL)!=ChartSymbol(MC_ID))
         Print("Wrong symbol in Minichart object! Focus the chart to get correct symbol...");
      if(ObjectGetInteger(chartID,MC_name,OBJPROP_PERIOD)!=ChartPeriod(MC_ID))
         Print("Wrong period in Minichart object! Focus the chart to get correct period...");
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void createMinichart()
  {
   string chart_symbol = "EURUSD";
   ENUM_TIMEFRAMES chart_period = PERIOD_D1;
   string minchart_symbol = "GBPUSD";
   ENUM_TIMEFRAMES minchart_period = PERIOD_H4;
//open a chart
   chartID = ChartOpen(chart_symbol,chart_period);
//came back to current EA chart
   ChartSetInteger(0,CHART_BRING_TO_TOP,true);
   ChartRedraw(0);
   Sleep(2000); //wait FOCUS on current EA chart, new chart loose FOCUS!
   if(chartID!=0)
     {
      //create mini chart
      if(ObjectMiniChartCreate(chartID, MC_name, minchart_symbol, minchart_period))
        {
         MC_ID=ObjectGetInteger(chartID,MC_name,OBJPROP_CHART_ID);
         ChartRedraw(MC_ID);
         ChartRedraw(chartID);
         created=true;
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool ObjectMiniChartCreate(const long             chart_ID=0,               // chart's ID
                           const string            name="Minichart",         // object name
                           const string            symbol=NULL,              // symbol
                           const ENUM_TIMEFRAMES   period=0,                 // period
                           const int               x=0,                      // X coordinate
                           const int               y=0,                      // Y coordinate
                           const int               width=400,                // width
                           const int               height=300,               // height
                           const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER, // anchoring corner
                           const int               sub_window=0,             // subwindow index
                           const int               scale=2,                  // scale
                           const bool              date_scale=false,          // time scale display
                           const bool              price_scale=false,         // price scale display
                           const color             clr=clrRed,               // border color when highlighted
                           const ENUM_LINE_STYLE   style=STYLE_SOLID,        // line style when highlighted
                           const int               point_width=1,            // move point size
                           const bool              back=false,               // in the background
                           const bool              selection=false,          // highlight to move
                           const bool              hidden=false,              // hidden in the object list
                           const long              selectable=true,          //selectable
                           const long              z_order=0)                // priority for mouse click
  {
//--- reset the error value
   ResetLastError();
//--- create Chart object
   if(!ObjectCreate(chart_ID,name,OBJ_CHART,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": failed to create \"Chart\" object! Error code = ",GetLastError());
      return(false);
     }
//--- set object coordinates
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- set object size
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- set the chart's corner, relative to which point coordinates are defined
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- set the symbol
   ObjectSetString(chart_ID,name,OBJPROP_SYMBOL,symbol);
//--- set the period
   ObjectSetInteger(chart_ID,name,OBJPROP_PERIOD,period);
//--- set the scale
   ObjectSetInteger(chart_ID,name,OBJPROP_CHART_SCALE,scale);
//--- display (true) or hide (false) the time scale
   ObjectSetInteger(chart_ID,name,OBJPROP_DATE_SCALE,date_scale);
//--- display (true) or hide (false) the price scale
   ObjectSetInteger(chart_ID,name,OBJPROP_PRICE_SCALE,price_scale);
//--- set the border color when object highlighting mode is enabled
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- set the border line style when object highlighting mode is enabled
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- set a size of the anchor point for moving an object
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,point_width);
//--- display in the foreground (false) or background (true)
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- enable (true) or disable (false) the mode of moving the label by mouse
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,true);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- hide (true) or display (false) graphical object name in the object list
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- set the priority for receiving the event of a mouse click in the chart
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- successful execution
   return(true);
  }
//+------------------------------------------------------------------+


Документация по MQL5: Операции с графиками / ChartIndicatorAdd
Документация по MQL5: Операции с графиками / ChartIndicatorAdd
  • www.mql5.com
//| Expert initialization function                                   |                                                                                       ); "Внимание! %s: Попробуем добавить индикатор MACD(%s/%s) на график %s/%s. Получим ошибку 4114"                         subwindow...
Причина обращения: