Нужен Зигзаг, чтобы использовал 1 массив - страница 2

 
sergeev >>:

Правильное пишет Sanyooooook - что вам мешает использовать iCustom от стандартного ZigZag?




Это самое лучшее - использование iCustom. Но лучше не использовать стандартный зигзаг. В нем много ошибок. По крайней мере, во всех версиях стандартного зигзага, с которыми приходилось разбираться, ошибки были.
 
nen >>:


Это самое лучшее - использование iCustom. Но лучше не использовать стандартный зигзаг. В нем много ошибок. По крайней мере, во всех версиях стандартного зигзага, с которыми приходилось разбираться, ошибки были.

какие именно ошибки?

 

В версиях 2005-2006 годов индикатор:

1) иногда рисовал переломы не привязанные к барам - в воздухе.

2) при подкачке истории бывало индикатор уходил в свободный полет - полностью отвязывался от баров и рисовал хаотичные линии

3) это не ошибка, а просто не было оптимизации (и сейчас нет) - огромная нагрузка на процессор.

Те индикаторы со стандартным алгоритмом, которые я выложил чуть выше лишены этих недостатков.

 

Кажись, припоминаю насчет оптимизации, nen. Кто-то на ониксе предложил пересчитывать ЗЗ только тогда, когда нулевой бар (или нулевой луч?) выходит за пределы, в которых он был раньше.

 
Mathemat >>:

Кажись, припоминаю насчет оптимизации, nen. Кто-то на ониксе предложил пересчитывать ЗЗ только тогда, когда нулевой бар (или нулевой луч?) выходит за пределы, в которых он был раньше.


Мы устроили мозговой штурм по этому поводу. Эту идею подал mikmed. Но это часть оптимизации. Другую часть надо смотреть в статьях Николая Косицына.

Плюс к этому. После подкачки истории более 2-х баров необходимо делать полный пересчет индикатора.

Про пункты 1) и 2) из предыдущего поста - необходимо четко понимать, что ошибки построения могут вылиться в ошибки при принятии решения.

 
Mathemat >>:

Все 7 буферов канального - графические, т.е. отрисовываются?

Именно. Конечно можно сразу писать под мт5... но пока надо под мт4.


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

 

Для стандартного алгоритма необходимо два буфера. Чтобы использовать только один буфер, необходимо в качестве второго - вспомогательного буфера использовать обычный массив. Алгоритм обслуживания этого массива необходимо организовывать самостоятельно. В последних версиях мультизигзагов используются небуферные массивы для вычисления зигзага. В приаттаченном индикаторе вычисляется одновременно 9 зигзагов, если индикатор выведен на m1. Но на график выводятся только 4 зигзага - те, которые в индикаторных буферах находятся. Для каждого из 9-ти зигзагов используется по два массива. Плюс там еще и дополнительные массивы используются, в том числе, временные. 

Расчет 9-ти зигзагов сделан для того, чтобы можно было использовать данные с различных таймфреймов одновременно для различных графических построений.

.

Сделать можно однобуферный. Просто придется немного потрудиться над этим. Потрудиться тому, кому этот зигзаг нужен.

Файлы:
mzz9.mq4  35 kb
 
nen, спасибо еще раз - теперь ясно "куда копать".
 
Подскажите, кто знает... ну а вы, nen, особенно
что делает этот кусок кода
if (Period()==10080)
{
    if (el < 0 && eh < 0)   tdelta = Time[j] < t1;
    else                    tdelta = Time[j] + t3 < t1;
}
подскажите, пожалуйста.
 
На недельном графике ищется бар, по времени соответствующий бару с месячного графика. Если этот недельный бар будет начинаться в прошлом месяце, то мы не всегда сможем найти необходимый нам экстремум. Так как поиск этого экстремума будет закончен в прошлом месяце (по времени начала недельного бара). А фактически экстремум может быть не на первой неделе месяца, а на какой-то другой. Получим некорректное построение. 

Этот участок кода как раз и решает задачу корректировки времени экстремума на недельном графике.

Но в MZZ9 не решена чрезвычайно редкая ситуация, когда оба экстремума зигзага будут на одном месячном баре. Сейчас уже есть алгоритм, который решает и эту задачу, но в MZZ9 этот алгоритм не встроен.
Причина обращения: