Обновление платформы MetaTrader 4 build 670: виртуальный хостинг, web-запросы и работа с сигналами из MQL-программ - страница 20

 
Не работает
return(TesterStatistics(STAT_RECOVERY_FACTOR));
всё время возвращает 0
 

поломалась привязка объектов типа OBJ_BUTTON,  другие как OBJ_EDIT, OBJ_RECTANGLE  работают как обычно

все объекты привязаны к верхнему правому углу, после update с 654 на 670 - все объекты типа BUTTON съехали влево

поправте пожалуйста

 
wlad:

поломалась привязка объектов типа OBJ_BUTTON,  другие как OBJ_EDIT, OBJ_RECTANGLE  работают как обычно

все объекты привязаны к верхнему правому углу, после update с 654 на 670 - все объекты типа BUTTON съехали влево

поправте пожалуйста


Это Вам нужно поправить привязку кнопок.

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

 
stringo:

Это Вам нужно поправить привязку кнопок.

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

да, но другие как OBJ_EDIT, OBJ_RECTANGLE привязываются левым углом.

нельзя ли зделать одинаково для всех типов, путаница получается

 
wlad:

да, но другие как OBJ_EDIT, OBJ_RECTANGLE привязываются левым углом.



Не совсем так. Если Вы укажете точку привязки объекта, отличную от умолчательной.

В пятёрке существуют 2 точки привязки - привязка к графику и якорь объекта, относительно которого объект рисуется. Но только не для объектов OBJ_BUTTON, у которой якорь объекта всегда соответствует привязке к графику. А OBJ_BUTTON пришёл в четвёрку из пятёрки

Подумаем, что можно сделать. Возможно для кнопки введём дополнительную привязку, как для OBJ_EDIT и OBJ_RECTANGLE.

 
ide92993:

Перехвалил разрабов из-за своей невнимательности к результатам выложенного выше советника для тестера. Оказывается, MT4-тестер неправильно вычисляет комиссию для всех USDXXX-символов, если в тестере в качестве валюты счета выбрана USD. Если в тестере выбрать отличную от USD-валюту (например, EUR или DKK) - комиссия будет вычисляться в тестере верно.


 

Это баг и очень серьезный. Но поскольку тестером, видимо, пользуются без понимания, что к чему, баг уже давно с седой бородой. Компетенция, однако...

Желающие могут портировать MQL4-код на MQL5 и проверить наличие подобного бага в MT5-тестере...

 

Что же касается всех XXXYYY, где XXX != USD. То комиссию для них вычисляет правильно (внимательно перебрал) , включая экзотику (NOKSGD и т.д.) и металлы. При этом вычисляет правильно для любых валют счета, выбранных в тестере.

 

Возможно, исправление разрабами этого бага в тестере сподвигнет их заодно наделить MT4-тестер штатной возможностью менять величину комиссии в тестере, как это сделали недавно со спредом. Правда, тогда MT4-тестер по возможностям вырвется в еще больший отрыв перед MT5-тестером... И еще раз напомню.

Небольшой анализ показал, что баг гораздо более глубокий. Короче, для любого символа XXXYYY комиссия вычисляется неверно, если в тестере в качестве валюты счета задать XXX-валюту. Например, для USDJPY задать USD, для AUDCAD задать AUD и т.д.

 

Уважаемые разработчики, стоит ли мне тут распинаться по поводу тестера? Может это нахрен никому не нужно, и, действительно, отрисовка каких-нибудь объектов - это и есть то, на что нужно реагировать. А тестер - побоку. Трейдерам, видимо, тоже поровну.

 

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

 
alsu:
Вопрос к Metaquotes. Не планируется ли в редакторе MetaEditor добавить функцию наложения логического условия по watch-переменным на точку останова?

Это можно организовать самому используя DebugBreak();
 
wlad:

да, но другие как OBJ_EDIT, OBJ_RECTANGLE привязываются левым углом.

нельзя ли зделать одинаково для всех типов, путаница получается



Да, как оказалось, мы сделали неоправданное исправление.

Объект OBJ_BUTTON пришёл из пятёрки. А в пятёрке изначально для всех объектов с заранее известными размерами (OBJ_CHART, OBJ_EDIT, OBJ_BUTTON, OBJ_RECTLABEL, OBJ_BITMAPLABEL) их отрисовка ведётся от верхнего левого угла. Именно по той причине, что вертикальный и горизонтальный размеры заранее известны

Приносим свои извинения за внесённую путаницу.

Поведение будет исправлено в следующем билде. Будет в точности, как в пятёрке.

 
ide92993:

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

SetCommissionAndSpread - любые комиссия и спред, даже отрицательные
 

WindowHandle

Возвращает системный дескриптор окна, содержащего указанный график.

int WindowHandle(
string symbol, // символ
string timeframe // период
);

Параметры

symbol

[in] Символ.

timeframe

[in] Период. Может быть одним из периодов графика. 0 означает период текущего графика.

Возвращаемое значение

Системный дескриптор окна (window handle), содержащего указанный график. Если график с symbol и timeframe на момент вызова функции не открыт, то возвращается 0.

Пример:

int win_handle=WindowHandle("USDX",PERIOD_H1);
if(win_handle!=0)
Print("Окно с USDX,H1 обнаружено. Массив будет скопирован.");


Ошибка описания типа параметра в функции "WindowHandle( )" в справке.