Думаю, что с использованием WinApi можно реализовать функцию по переключению на нужную вкладку: торговля, баланс, что угодно. Пробуйте сами реализовать, или закажите в фрилансе, надеюсь, там еще остались умельцы.
Сам практиковал такой изврат. Хочется user-friendly GUI.
+ опишите операционку, битность, конфигурацию системы.
Да я не знаю как воспроизвести всё это - прошлую неделю каждый день такое сообщение появлялось, при этом советник не работал вообще никакой. А на днях вот с оптимизацией... потом всё заработало после закрытия всех программ.
Может ли это быть конфликт между программами? Заметил, что баг был всегда, когда был открыт браузер Опера.
В этой теме выяснилась интересная вещь про быстродействие команды Comment() в MT4 и MT5. В МТ5 эта команда работает в ~2000 раз (!!!) медленнее, чем в MT4.
Вот тестировочный код, который работает на двух платформах:
#property script_show_inputs#include <Canvas\Canvas.mqh>
inputuint FontSize=12; // размер шрифтаinputuint Count=1000; // размерность циклаinputENUM_COLOR_FORMAT format=COLOR_FORMAT_ARGB_NORMALIZE; //Способ обработки цветаvoidOnStart()
{
CCanvas Text;
ulong ColorScreen=ChartGetInteger(0,CHART_COLOR_BACKGROUND,0);
Text.FontSet("Arial",FontSize);
string str="Необходимо подождать.Выполняется проход цикла №: = ";
int H=Text.TextHeight(str);
int W=Text.TextWidth(str+"00000");
if(!Text.CreateBitmapLabel(0,0,"FONT",2,130,W,H,format)) Print("Error creating canvas: ",GetLastError());
ulong t1=1,t2=1,t0;
uint j=0;
color clr=(color)ARGB(255,255^GETRGBR(ColorScreen),255^GETRGBG(ColorScreen),255^GETRGBB(ColorScreen));
t0=GetMicrosecondCount();
for(j=0;j<Count;j++)
{
Comment(str+IntegerToString(j));
if (IsStopped()) break;
}
t1=GetMicrosecondCount()-t0;
t0=GetMicrosecondCount();
for( j=0;j<Count;j++)
{
Text.Erase((color)ColorScreen);
Text.TextOut(0,0,str+IntegerToString(j),clr);
Text.Update();
if (IsStopped()) break;
}
t2=GetMicrosecondCount()-t0;
Text.Erase((color)ColorScreen);
Text.TextOut(0,0,"Время Comment = "+IntegerToString(t1)+" Время Canvas = "+IntegerToString(t2),clr);
Text.Update();
Sleep(30000);
Text.Destroy();
Comment("");
}
//+------------------------------------------------------------------+
В этой теме выяснилась интересная вещь про быстродействие команды Comment() в MT4 и MT5. В МТ5 эта команда работает в ~2000 раз (!!!) медленнее, чем в MT4.
Вот тестировочный код, который работает на двух платформах:
Это разве ОК?
Да, все верно и правильно.
В МТ4 функция Comment просто меняет внутреннее текстовое поле комментария без попыток отобразить его на чарте. То есть, коммент когда-нибудь на очередной штатной отрисовке чарта покажется, но само изменение коммента не вызывает перерисовки чарта. Если быстро менять коммент, то его изменения просто не увидите на чарте.
В МТ5 функция Comment явным образом вызывает перерисовку чарта, так как в приоритет ставится именно отображение коммента на чарте. Иначе функция бесполезна.
Разница как раз в этом.
Если в МТ4 после вызова Comment поставить принудительно ChartRedraw(), то поведение все равно не будет как в МТ5. ChartRedraw() в Метатрейдер 4 игнорирует значение коммента и сам решается, надо ли обновить чарт с последнего кадра. Конечно, при отсутствии сотен котировок в секунду, которые вызывают инвалидацию данных чарта, ChartRedraw решает "зачем отрисовать неизменный график" и пропускает отрисовку кадра.
В Метатрейдер 5 тоже действует такая же система, но гораздо больше случаев, когда отдается приоритет безусловной отрисовке.
Терминалы являются графическими приложениями, могут обеспечивать сотни кадров в секунду и работают в режиме экономного отображения ради повышения производительности.
Отсюда дополнительные выводы при проведении бенчмарков:
нельзя считать вызов ChartRedraw реальной отрисовкой чарта
всегда нужно знать и доказывать утверждения "почему кадр отрисуется" и "инвалидирую ли я внутреннюю картину рынка, чтобы терминал решил перерисовать кадр"
нельзя во время бенчмарков делать множественные выводы Comment в МТ5, всегда нужно думать о том, как вы влияете на отрисовку
в МТ5 более правильная система изменения объектов на чарте и нужно четко понимать последствия микса read/write команд рекомендуется не миксовать read/write команды, а делать раздельно массовые read и массовые write.
частая перерисовка чартов в бенчмарках ведет к большой зависимости результатов от графической карты. по сути некоторые тесты могут вылиться в тестирование графической карты, а не алгоритмов или функций. тест на ноутбуке и стационарном компьютере могут показать кратно разные результаты просто из-за 3-5 кратно медленной видеокарты
Думаю, что с использованием WinApi можно реализовать функцию по переключению на нужную вкладку: торговля, баланс, что угодно.
Пробуйте сами реализовать, или закажите в фрилансе, надеюсь, там еще остались умельцы.
Сам практиковал такой изврат. Хочется user-friendly GUI.
Опять памяти нет ему...
Хотя свободно ещё 7 гигабайт ОЗУ. Что ж это такое то?
Откройте тикет в сервисдеск. Приложите эксперта и настройки оптимизации.
+ опишите операционку, битность, конфигурацию системы.
Откройте тикет в сервисдеск. Приложите эксперта и настройки оптимизации.
+ опишите операционку, битность, конфигурацию системы.
Да я не знаю как воспроизвести всё это - прошлую неделю каждый день такое сообщение появлялось, при этом советник не работал вообще никакой. А на днях вот с оптимизацией... потом всё заработало после закрытия всех программ.
Может ли это быть конфликт между программами? Заметил, что баг был всегда, когда был открыт браузер Опера.
В этой теме выяснилась интересная вещь про быстродействие команды Comment() в MT4 и MT5. В МТ5 эта команда работает в ~2000 раз (!!!) медленнее, чем в MT4.
Вот тестировочный код, который работает на двух платформах:
Это разве ОК?
В этой теме выяснилась интересная вещь про быстродействие команды Comment() в MT4 и MT5. В МТ5 эта команда работает в ~2000 раз (!!!) медленнее, чем в MT4.
Вот тестировочный код, который работает на двух платформах:
Это разве ОК?
Да, все верно и правильно.
В МТ4 функция Comment просто меняет внутреннее текстовое поле комментария без попыток отобразить его на чарте. То есть, коммент когда-нибудь на очередной штатной отрисовке чарта покажется, но само изменение коммента не вызывает перерисовки чарта. Если быстро менять коммент, то его изменения просто не увидите на чарте.
В МТ5 функция Comment явным образом вызывает перерисовку чарта, так как в приоритет ставится именно отображение коммента на чарте. Иначе функция бесполезна.
Разница как раз в этом.
Если в МТ4 после вызова Comment поставить принудительно ChartRedraw(), то поведение все равно не будет как в МТ5. ChartRedraw() в Метатрейдер 4 игнорирует значение коммента и сам решается, надо ли обновить чарт с последнего кадра. Конечно, при отсутствии сотен котировок в секунду, которые вызывают инвалидацию данных чарта, ChartRedraw решает "зачем отрисовать неизменный график" и пропускает отрисовку кадра.
В Метатрейдер 5 тоже действует такая же система, но гораздо больше случаев, когда отдается приоритет безусловной отрисовке.
Терминалы являются графическими приложениями, могут обеспечивать сотни кадров в секунду и работают в режиме экономного отображения ради повышения производительности.
Отсюда дополнительные выводы при проведении бенчмарков:
рекомендуется не миксовать read/write команды, а делать раздельно массовые read и массовые write.
по сути некоторые тесты могут вылиться в тестирование графической карты, а не алгоритмов или функций. тест на ноутбуке и стационарном компьютере могут показать кратно разные результаты просто из-за 3-5 кратно медленной видеокарты
Эти ошибки постоянно совершаются всеми подряд.
Да, все верно и правильно.
Спасибо большое за развернутый ответ. Приблизительно так и думал. Все логично.
Индикаторы перестали правильно работать. Смещаются вправо при формировании новых баров без расчёта на новых данных. Заявка #1899266.
Поддерживаю! Идет сдвиг индикатора вправо.
Вышел новый билд (1689) с исправлением.
Спасибо, сейчас залью.
Спасибо, сейчас залью.