АвторСообщение



Пост N: 9
Зарегистрирован: 29.05.08
ссылка на сообщение  Отправлено: 11.05.09 03:38. Заголовок: Неясности с функцией start()


Здравствуйте.

Возникла неясность при программировании пользовательского индикатора. Раньше этим не занимался (индикаторами), поэтому взял, Сергей, в подспорье Ваш учебник и сразу озадачился:

Согласно http://book.mql4.com/ru/programm/special


 цитата:

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


Если свести все это в список, то получатся следующие события, приводящие (или, которые, по идее, должны бы приводить) к вызову ф-ции start():

1. Поступление очередного тика
2. Прикрепление индикатора к графику
3. Изменение размеров окна
4. Переход пользователем от одного окна финансового инструмента к другому
5. Открытие клиентского терминала
6. Смена символа
7. Смена периода текущего графика

плюс не упомянуто

8. Изменение вертикального или горизонтального масштабов
9. Добавление отдельного окна любого лругого индикатора
10. Команда "Обновление" через меню "Графики" или правую кнопку
11. Перекомпиляция


У меня не получилось зафиксировать ее вызов при обстоятельствах, выделенных жирным.
Да и п.4 требует пояснения, что имеется ввиду под переходом? Касается это любой смены активного окна или же именно от(к) окна(у) с индикатором?

Код для проверки взял очень простой:

 цитата:
 
#property indicator_chart_window

string sFunc;
int i;

int init()
{fReport("init(); ");return(0);}

int deinit()
{fReport("deinit(); ");return(0);}

int start()
{fReport("start(); ");return(0);}

void fReport(string psSpecFunc)
{
i++;
Print(psSpecFunc, i, ": ", WindowPriceMin(), " ... ", WindowPriceMax());
}



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

Сергей, будьте добры, прокомментируйте, а то сумбур какой-то в голове :)


P.S. Если кто-то вдруг подскажет индикатор суб-разделителей периодов, буду очень признателен.
Ну, типа, на ТФ M1 нанести шкалу с 15-, 30- и 60-минутными делениями разной величины. Для читабельности.
.


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 3 [только новые]


Автор




Пост N: 400
Зарегистрирован: 21.05.06
Откуда: Украина, Днепропетровск
ссылка на сообщение  Отправлено: 12.05.09 01:24. Заголовок: На момент, когда это..


На момент, когда это было написано, всё написанное работало. Причём, этот список был избыточным. Специальным функциям уделялось особое внимание. Всё написанное было опробовано и и согласовано с разработчиками. Так получилось, что учебник стал на тот момент наиболее полным источником свойств спец. функций. Эта ситуация сохраняется и до сих пор. Посмотрите, например, в MeteEditor-е раздел Справочник MQL4 - Основы языка - Функции - Специальные функции. Там не указано и половины свойств спец. функций.

С тех пор появилось много новых билдов. Я не отслеживаю изменения, касающиеся специальных функций.
Могу только сказать, что вопрос поднимался неоднократно. Например, Возникали проблемы с вызовом спец. функций при переключении между счетами - при неустановленных обстоятельствах не вызывались некоторые спец.функции; в других случаях в зацикленном start() становятся доступны переменные окружения нового счёта (!) в то время, когда счёт ещё старый. Кстати, эта ситуация, насколько я знаю, так и не исправлена.

На ранней стадии запуска проекта МТ4 разработчики живо реагировали на все замечания и ошибки, исправляли их. В последнее время МТ4 потерял актуальность. По этой причине можно предположить, что некоторые ошибки уже не будут исправляться.

МТ5 будет иметь принципиально другую архитектуру ещё и потому, что некоторые ошибки МТ4 носят концептуальный характер. Так случилось, например, с графикой. Давно известно, что все граф. объекты "съезжают" при изменени таймфрейма. Однако, исправить это в МТ4 не представляется возможным.
--
Я уже некоторое время не пишу ничего серьёзного на MQL4. Жду МТ5.
Однако, в случае необходимости я проверяю нужное мне свойство или принятое правило и пишу код согласно текущим условиям :)
Это лучшее, что я могу посоветовать в подобной ситуации.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 10
Зарегистрирован: 29.05.08
ссылка на сообщение  Отправлено: 12.05.09 11:52. Заголовок: Да. К сожалению ситу..


Да. К сожалению ситуация, описанная Вами, имеет место, как в непонятках, так и в отношении к ним (вернее - пренебрежении) разработчиков...

Я руководствуюсь именно высказанным Вами в последнем абзаце. Но, увы, не писАть я не могу - торгую плотно, каждый день, и постоянно возникают потребности в новом функционале. Да и алгоритмы при этом отрабатываются. В моем случае (т.е. при недостатке опыта практического написания) это весьма полезно.

Жаль, что по MT5 нет информации. Во-первых просто любопытно. Во-вторых - очень тревожит процесс перехода.



Спасибо: 0 
ПрофильЦитата Ответить
Автор




Пост N: 401
Зарегистрирован: 21.05.06
Откуда: Украина, Днепропетровск
ссылка на сообщение  Отправлено: 12.05.09 16:44. Заголовок: babay пишет: .. тор..


babay пишет:

 цитата:
.. торгую плотно, каждый день, и постоянно возникают потребности в новом функционале. Да и алгоритмы при этом отрабатываются.


Вы используете AutoGraf 4?

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 1
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет