Ошибки, баги, вопросы - страница 971

 

Столкнулся со странной ситуацией

Сегодня при подключении к серверу перестало работать подключение именно с USB модема билайн

С других каналов (релейный и наземный DSL) работают успешно

193.219.127.76:4443

причем в обоих случаях телнет на этот адрес + порт проходит (сессия открывается)

трассировка умирает на какой то паре IP (зацикливается) тоже в обоих случах

пинг вообще говорит 

Ответ от 195.16.37.33: Превышен срок жизни (TTL) при передаче пакета.
Ответ от 195.16.37.33: Превышен срок жизни (TTL) при передаче пакета.
Ответ от 195.16.37.33: Превышен срок жизни (TTL) при передаче пакета.
Ответ от 195.16.37.33: Превышен срок жизни (TTL) при передаче пакета.

это с билайна

Обмен пакетами с 193.219.127.76 по с 32 байтами данных:
Ответ от 193.219.127.225: Превышен срок жизни (TTL) при передаче пакета.
Ответ от 193.219.127.225: Превышен срок жизни (TTL) при передаче пакета.
Ответ от 193.219.127.225: Превышен срок жизни (TTL) при передаче пакета.
Ответ от 193.219.127.225: Превышен срок жизни (TTL) при передаче пакета.

это с другого канала но с него терминал видит соединение

Звонил в билайн сказали что выключить модем они типа там чего то пошаманят и минут через 10 включить - не помогло

Хотя к примеру сервер MetaQuotes demo видит и соединяется с ним.

Что то у меня закончилось воображение, что дальше делать то?
 
Как определить во время оптимизации, участок форвард сейчас или нет?
[Удален]  

Объясните, пожалуйста, где моя ошибка? Почему приложенный код рисует картинку (OBJ_BITMAP_LABEL) только в режиме COLOR_FORMAT_XRGB_NOALPHA? Вместе с COLOR_FORMAT_ARGB_NORMALIZE ничего не показывает.

void OnStart() {
  uint Canvas[];
  uint ImgWidth = 250;
  uint ImgHeight = 100;
  long chart_id = ChartID();
  ArrayResize(Canvas, ImgWidth * ImgHeight);
  ArrayInitialize(Canvas, 0);
  for (int i = 0; i < ArraySize(Canvas); i++)
    Canvas[i] = i;
  if (ObjectCreate(chart_id, "Test", OBJ_BITMAP_LABEL, 0, 0, 0)) {
    ObjectSetString(chart_id, "Test", OBJPROP_BMPFILE, "::Test");
    ResourceCreate("::Test", Canvas, ImgWidth, ImgHeight, 0, 0, ImgWidth, COLOR_FORMAT_XRGB_NOALPHA);
    ChartRedraw(chart_id);
    Sleep(3000);
    ObjectDelete(chart_id, "Test");
  }
}
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов - Документация по MQL5
Файлы:
Test.mq5  9 kb
 
voix_kas:

Объясните, пожалуйста, где моя ошибка? Почему приложенный код рисует картинку (OBJ_BITMAP_LABEL) только в режиме COLOR_FORMAT_XRGB_NOALPHA? Вместе с COLOR_FORMAT_ARGB_NORMALIZE ничего не показывает.

а у вас действительно 32 битная картинка?
[Удален]  
sergeev:
а у вас действительно 32 битная картинка?
К сожалению, не понял Ваш вопрос. В качестве буфера используется массив uint (4 байта, 32 бита).
[Удален]  

В общем, есть небольшие пробелы в знаниях. 32-битный цвет представлен в виде 0x00BBGGRR, где первые "00" - есть альфа-канал.

Пример, берём цвет clrRed, хотим его сделать полупрозрачным, дописываем в первые два разряда значение 127 (7F). Очевидно, это делается побитовыми операциями. К сожалению, я не знаю данной темы. Пока попробую изучить. Может быть, у кого есть готовый простенький код для конвертации?

[Удален]  

Странно. Выполняю операцию 0xFF000000 + clrBlue, даёт красный цвет.

Синий - 0x00FF0000. Прибавляю 0xFF000000. Результат 0xFFFF0000. Но почему красный цвет выводит вместо синего?!

[Удален]  
Съэкономлю время, если кто будет задаваться таким вопросом. Используйте штатную функцию ColorToARGB().
[Удален]  
voix_kas:

Что легче/быстрее для МТ5 обработать и вывести на экран: 24*OBJ_LABEL или 1*OBJ_BITMAP_LABEL?

Предполагается, что в OBJ_BITMAP_LABEL также будут поданы 24*TextOut.

Т.е. с точки зрения производительности.

Может, кому будет интересна информации о производительности графических объектов...

Ставилась следующая цель. Увеличить производительность работы советника реал-тайме/тестере за счёт замены 26*OBJ_LABEL на 1*OBJ_BITMAP_LABEL.

Данные графические объекты отображают текущее состояние работы советника. Всего используется 26 меток, 13 из которых постоянно обновляются пересчитываемыми показателями. Т.е. первые 13 - описание параметров, остальные 13 - соответствующие им значения.

 

Общие принципы работы с метками. Создаются, настраиваются выравнивания всех 26 меток в OnInit(). В OnTick() обновляются (текст) лишь 13 из них.

Общие принципы работы с битмапом. Создаётся шаблон канвы в OnInit(). В него стразу закидываются все 13 элементов описания. В OnTick() шаблон канвы (массив uint) копируется в массив рабочей канвы + наносятся остальные 13 меток значений.

 

Что могу сказать? Один Bitmap работает (!)на порядок медленнее, чем 26 обычных меток. Пробывал исключить из OnTick() операцию копирования шаблона в рабочую канву (массив uint 250*410), т.е. работа на одной канве. Выигрыш чувствуется только в реал-тайме. В тестере всё также - абсолютная просадка по производительности. Использовался режим COLOR_FORMAT_ARGB_NORMALIZE, т.к. остальные дают менее эстетический вид. Забегая вперед, надо сказать, что работать на одной канве сложно, так как придётся отслеживать наложение предыдущих надписей (очищать области).

 

Какой вывод сделал для себя.

Если пользователю требуется вывод оперативной статистики - однозначно OBJ_LABEL. Минусов перед  OBJ_BITMAP_LABEL у него два: 1) отсутствие возможности менять стиль шрифта, 2) с точки зрения программиста управлять один элементом (битмапом) проще, чем 26 метками.

 

Подскажите, как получить возможность перемещать объект созданный экспертом, т.е. сделать его таким будто он создан обычным путем

Пробовал

      result&=obj.SetInteger(OBJPROP_HIDDEN,true);
      result&=obj.SetInteger(OBJPROP_SELECTED,false);
      result&=obj.SetInteger(OBJPROP_SELECTABLE,true);
      result&=obj.SetInteger(OBJPROP_ZORDER,100);

в разных вариациях.

Кто сталкивался помогите.