Бета-тестирование MetaTrader 5 началось! - страница 122

 
betmen >>:

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

Как следствие не проверилось условие OnDeinit и в результате осталась открытая позиция, или не поменялись глобальные переменные, да мало ли что должен поправить советник/индикатор при выгрузке его из памяти. :-(

Еще в MetaTrader 4 вы не могли закрыть символ в окне MarketWatch, если по нему есть открытые позиции.

 

Вертикальный масштаб / Вертикальное позиционирование

Вопросы к разработчикам:

1) Нельзя ли дать возможность удобно изменять вертикальный масштаб (без прыжков графика) как в сторону уменьшения, так и в сторону увеличения?

    Например колесом мыши с "Shift"-ом или "Ctrl"-ом...

    Или оставить как в MT4 - при помощи загадочного "Фиксировать масштаб" и вертикальной шкалы...  

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

 
Rosh >>:

Еще в MetaTrader 4 вы не могли закрыть символ в окне MarketWatch, если по нему есть открытые позиции.

Некорректно описал ситуацию, исправлюсь... :-)


График если на него поставить эксперта, а потом закрыть сам график (не удалять из MarketWatch, а просто закрыть) то эксперт выгрузится вместе с графиком, но при этом не будет сгенерировано сообщение OnDeinit, что в общем то соответствует описанию в справке, но черевато осложнениями что я писал выше.

 
betmen >>:

Почему не предусмотрена генерация события OnDeinit при закрытии инструмента?


Событие Deinit генерируется для экспертов и индикаторов в следующих случаях:

·

перед переинициализацией в связи со сменой символа или периода графика, к которому прикреплена mql5-программа;

·

перед переинициализацией в связи со сменой входных параметров;

·

перед выгрузкой mql5-программы.


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

Как следствие не проверилось условие OnDeinit и в результате осталась открытая позиция, или не поменялись глобальные переменные, да мало ли что должен поправить советник/индикатор при выгрузке его из памяти. :-(



Не понял смыслы фразы "Почему не предусмотрена генерация события OnDeinit при закрытии инструмента?".


Вот возможнеы причины вызова OnDeinit (насколько я помню в MQL4 их было меньше):

Константа

Значение

Описание

REASON_REMOVE

1

Программа удалена с графика

REASON_RECOMPILE

2

Программа перекомпилирована

REASON_CHARTCHANGE

3

Символ или период графика был изменен

REASON_CHARTCLOSE

4

График закрыт

REASON_PARAMETERS

5

Входные параметры были изменены пользователем

REASON_ACCOUNT

6

Активирован другой счет

REASON_TEMPLATE

7

Применен другой шаблон графика

REASON_INITFAILED

8

Признак того, что обработчик OnInit() вернул ненулевое значение

вот описание из справки:


Deinit

Перед деинициализацией глобальных переменных и выгрузкой программы (эксперт или пользовательский индикатор) клиентский терминал посылает программе событие Deinit. Событие Deinit также генерируется при завершении работы клиентского терминала, при закрытии графика, непосредственно перед сменой финансового инструмента и/или периода графика, при удачной перекомпиляции программы, при смене входных параметров, а также при смене счета.

Причину деинициализации можно получить из параметра, переданного в функцию OnDeinit(). Выполнение функции OnDeinit() ограничивается 2.5 секундами. Если за это время функция не закончила свою работу, то ее выполнение завершается принудительно. Для скриптов событие Deinit не генерируется.


Как видно из справки у советника есть 2,5 секунды на все разборки при выходе.

А если я правильно понял вопрос то отловить и обработать нужно именно "REASON_CHARTCLOSE" (для большей уверенности еще REASON_REMOVE и REASON_CHARTCHANGE).


PS

На мой взгляд вполне достаточно того что есть. Осталось определить как эксперт узнают о том что ОС прикрывает терминал (но кажется в MQL4 была такая возможность)...

 

Exposure.

Хорошая весчь! нужная...


Поэтому сразу масса предложений.

1. включение диаграммы сделать триггерным, без этих лонг, шорт, скрыть.

просто показать и скрыть, а режим и "сортировкой" можно выбрать,

тем более с наличием только лонга, лонг и покажет при открытии...

2. Наверное где-то и принято именно так волюмы обозначать, но например так: 2М1, М33, 5К6, К15

в нынешнем виде 2.100000М выглядит некузяво...

Либо приводите полно обычное значение, 2100000, а ещё лучше 2 100 000, либо примите примеры что привёл.

3. Привести значение разрядов цены к их полным значениям, если пять знаков, значит 1.12300, а не 1.123 как сейчас.

 

Справочник MQL5 / Основы языка / Функции / Функции обработки событий

Можете сами проверить...

REASON_CHARTCLOSE

4

График закрыт


4-ая причина не отрабатыват

Файлы:
 
betmen >>:

Справочник MQL5 / Основы языка / Функции / Функции обработки событий

Можете сами проверить...

REASON_CHARTCLOSE

4

График закрыт


4-ая причина не отрабатыват



Ага, не пашет. В MT4 все работает нормально.

Это чисто термина косяк - описание есть, работоспособности нет.


PS

Надеяться будем в следующий билд ошибка не попадет...

 

Разработчики пожалуйста подправте SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE))

Всегда возвращает ноль, на всех парах.

 
А какой последний билд. У меня 219 от 9.11 и перестал обновляться. Раньше обновлялся даже не спрашивая.
 
SHOOTER777 >>:
А какой последний билд. У меня 219 от 9.11 и перестал обновляться. Раньше обновлялся даже не спрашивая.

221 вроде. Может самостоятельно залить новую версию?