Вот пример:
int start() { int local_var=5; static int static_var=10; //---- Print("Local: ",local_var," Static: ",static_var); local_var++; static_var++; //---- }
При последовательных вызовах будут следующие значения:
2006.06.30 23:13:22 TestVars EURUSD,M1: Local: 5 Static: 10 2006.06.30 23:13:28 TestVars EURUSD,M1: Local: 5 Static: 11
Можно поступить даже проще, описав переменные на глобальном уровне - вне всяких функций.
По поводу ZigZag - нашу реализацию я сам лично написал 3 года назад еще для МТ3, но теперь уже не помню деталей. ArraySetAsSeries в версии для МТ4 явно лишние - добавлены были по ошибке, видимо.
Обычно в языках переменные, объявленные в процедуре или функции, после ее завершения выгружаются из памяти. В MQL4 есть особые процедуры init(), deinit() и start(). Меня интересует конкретно start().
Если в ней объявляются переменные, то, поскольку start() запускается каждый новый тик, эти переменные на каждом тике должны создаваться заново и будут иметь каждый раз нулевое начальное значение. Это так ? Если нет, то объясните ситуацию с переменными, которые обявляются в start().
Да, будут создаваться заново и иметь нулевое значение (если не объявлено обратное)
По поводу Зигзага - можно почитать здесь - http://forum.viac.ru/viewtopic.php?t=2141
Алгоритм можно оптимизировать, в принципе.
По поводу ZigZag - нашу реализацию я сам лично написал 3 года назад еще для МТ3, но теперь уже не помню деталей. ArraySetAsSeries в версии для МТ4 явно лишние - добавлены были по ошибке, видимо.
Нет Ренат, в тот момент в языке MQL-4 еще не была введена функция IndicatorBuffers() , а потому и нельзя было использовать индесные массивы для служебного пользования. Конечно, если я все праавильно помню :)
По поводу ZigZag'а хотелось бы тогда понять заинтересована ли MetaQuotes в том, чтобы он был доведен до ума ? Или он прилагается для того, чтобы юзеры могли попрактиковаться сами ? Ведь в список индикаторов реализованных системно он не вошел.
2 Rosh
Алгоритм можно оптимизировать, в принципе.
Спасибо за линк. Можно также реализовать и другие алгоритмы. Вопросов на самом деле два. Нужно ли переписать ZigZag так, чтобы он работал правильно и экономно, вообще ? И нужно ли это MetaQuotes, в частности ?
Посмотрел линк, понял, что Вы его уже сделали правильным. 1.5 года назад. :-)
Вот только не увидел где его скачать. Или на том форуме надо зарегистрироваться для этого ?
А вообще можно любые свои индикаторы опубликовать в разделе CodeBase сайта "MQL4: automated forex trading" - там они доступны всем пользователям прямо из MetaEditor'а.
По поводу ZigZag'а хотелось бы тогда понять заинтересована ли MetaQuotes в том, чтобы он был доведен до ума ? Или он прилагается для того, чтобы юзеры могли попрактиковаться сами ? Ведь в список индикаторов реализованных системно он не вошел.
2 Rosh
Алгоритм можно оптимизировать, в принципе.
Спасибо за линк. Можно также реализовать и другие алгоритмы. Вопросов на самом деле два. Нужно ли переписать ZigZag так, чтобы он работал правильно и экономно, вообще ? И нужно ли это MetaQuotes, в частности ?
Посмотрел линк, понял, что Вы его уже сделали правильным. 1.5 года назад. :-)
Вот только не увидел где его скачать. Или на том форуме надо зарегистрироваться для этого ?
Чтобы видеть вложения на том форуме - нужно зарегистрироваться. Тот правильный Zigzag и текущий из стандартной поставки - работают одинаково, они практически близнецы. Я не стал отвечать в этой ветке, так как ответы можно было найти самомму, хотя бы здесь -
"Вопрос о ZigZag."
и здесь - "[] сила - Zigzag побежден!"
"Вопрос о ZigZag."
и здесь - "[] сила - Zigzag побежден!"
Спасибо, кое что из этого я видел, а что не видел - прочитал.
Проблему вижу только в одном. Для Zigzagа можно придумать много разных алгоритмов и многие это делали. Я тоже написал для себя подходящий Zigzag. А здесь, кроме нас с Вами, этим занимался еще и Quark.
Алгоритм из стандартной поставки ничем не хуже других, но у него есть, с моей точки зрения, один существенный недостаток. Zigzag потому и Zigzag, что за минимумом обязательно следует максимум. А этот Zigzag может нарисовать несколько минимумов или максимумов подряд. Но это ИМХО. Не знаю как к этому отнесутся другие.
Renat, спасибо за приглашение.
Меня, в общем-то, интересовало другое. Хотелось чтобы эта мелочь (Zigzag) соответствовал общему уровню качества MetaQuotes. И не устраивает в этом Zigzagе меня только два момента:
1. Он рисует максимумы и минимумы просто в воздухе, а не по High или Low.
2. Вместо свингов вверх-вниз-вверх ... от рисует ломаные. Минимум, который болше, чем предыдущий максимум - это выглядит оригинально.
Если MetaQuotes считает, что это соответствует идее или алгоритму Zigzagа, тогда нет проблем.
Если же это (или что-то еще) надо исправить, то поставьте задачу.
Скачал и посмотрел Ваш ZigZag. Фактически это тот ZigZag, который идет сейчас в стандартной поставке.
Я нашел единственное отличие. Известная Вам строчка
if ((curlow==0)&&(curhigh==0)) continue;
в Вашем варианте закомментирвана.
Однако, мне так и не удалось найти различий, к которым это приводило бы на графике.
Таким образом, мои два вопроса так и остаются:
1. Максимумы и минимумы висят в воздухе, а не по High или Low.
2. Вместо свингов вверх-вниз-вверх - ломаные. Минимум, который больше, чем предыдущий максимум - можно ли считать это правильным алгоритмом ?
Может быть Вы скажете что-нибудь по этому поводу ?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
однако разработчики так и не отозвались. Надеюсь в этот раз мне повезет больше.
Обычно в языках переменные, объявленные в процедуре или функции, после ее завершения выгружаются из памяти. В MQL4 есть особые процедуры init(), deinit() и start(). Меня интересует конкретно start().
Если в ней объявляются переменные, то, поскольку start() запускается каждый новый тик, эти переменные на каждом тике должны создаваться заново и будут иметь каждый раз нулевое начальное значение. Это так ? Если нет, то объясните ситуацию с переменными, которые обявляются в start().
Хотелось бы также чтобы тот, кто писал исходник индикатора ZigZag из стандартной поставки, кое-что пояснил в этом индикаторе.
Вопрос первый. Вот кусок из init()
Зачем здесь присутствует ArraySetAsSeries ? Разве буферы индикаторов не имеют нужную сортировку изначально ?
По ZigZag'у есть еще много вопросов. Разработчики могут конечно оставить их и без внимания, однако, этот индикатор за время своего существования вызвал так много нареканий и реализован так "странно", что может быть пора уже разобраться с ним и довести его до нормального состояния. Хотя бы и силами участников этого форума, если разработчикам заниматься этим нет возможности. Для этого достаточно вступить в диалог.
Если бы ZigZag не шел в стандартной поставке, тогда ладно. А так неудобно как-то перед юзерами во всем мире. Он же идет как образец - вот так надо программировать на MQL. :-(