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

 
fxsaber:
Так проблему "квадратиков" решили?

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

Хочу опубликовать в КБ простенький класс iCanvas, который наследует класс CCanvas, который при объявлении по умолчанию создает канвас на весь экран и дальше его меняет автоматически, если происходит изменение размеров окна. 

Ну и разные там плюшки в виде построения фигур канваса не по координатам хy, а по price, номер бара или времени . Т.е. будут добавлены функции X( datatime T), X(double bar), Y( double price). 
Чтобы канвас для многих не казался таким стрессовым.  

 
Nikolai Semko:

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

У меня всегда был один канвас и красный квадрат все равно проскакивал. Долго бился, чтобы понять причины, но так и не поборол.

 
fxsaber:

У меня всегда был один канвас и красный квадрат все равно проскакивал. Долго бился, чтобы понять причины, но так и не поборол.

Если имеет факт изменения размера канваса, т.е. выполняетмя его переоткрытие или функция Resize, то чтобы не было этих красных квадратиков, нужно использовать канвас на все окно. 

#include <Canvas\Canvas2.mqh>

int OnStart(void)
  {
    int Width=(int)ChartGetInteger(0,CHART_WIDTH_IN_PIXELS);
    int Height=(int)ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS);
    CCanvas canvas;
    if(!canvas.CreateBitmapLabel("SampleCanvas",0,0,Width,Height,COLOR_FORMAT_ARGB_NORMALIZE)) Print("Error creating canvas: ",GetLastError());
  ....
  }

И помнить о том что функция Erase весьма быстрая - на полный экран FullHD выполнится ~ 0.5 миллисекунды 

а Update помедленнее  ~5-7 миллисекунд на полный экран FullHD.
Да - такой вариан более затратный, т.к. Update канваса размером скажем 500x200 займет ~0.5 миллисекунд. 

Поэтому нужно исходить и целесообразности.

Лично я практически всегда сейчас использую канвас на все окно, т.к. помню что имею запас 200 кадров с секунду при Update = ~ 5 миллисекунд.

 

Возможно ли как-то починить это к следующему билду?

Когда переключаюсь на другой счет, то чарт кастомного символа теряет бары - "Ожидание обновления". Бары не запросить. При этом тики - без проблем.

После перезагрузки Терминала, конечно, бары на чарте доступны.

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

 
Если создать "синтетический инструмент" и компьютер аварийно завершает работу - то синтетический инструмент не сохраняется. Мелочь, но неудобно. Просьба починить.
 
Оказывается, бэктест завершается на предпоследнем (а не последнем, как можно было подумать) тике интервала тестирования.
 

Ошибка при выполнении:

#define MACRO( int ) int
void f( uint ) { Print( 1 ); }
void f(  int ) { Print( 2 ); }
void OnStart()
{
        MACRO( uint ) x = 0;
        f( x );
}

Результат: 2       Ожидалось: 1

 

Наверное, это психологическое отклонение, знать в любое время, номер последнего билда MT5.

Не знаю текущих курсов валют, но знаю всегда номер. Спроси меня сегодня, месяц назад, год...

 
Ошибка при компиляции:
class A {
template<typename T>
        A *StringFormat( string, T ) { return &this; }
        A *f() { return StringFormat( "", 1 ); } //Error: 'StringFormat' - object pointer expected
};
 
Все таким пропадает тиковая история кастомных символов после применения Тестера на них. Починить бы.
Причина обращения: