Название темы пока не придумал.

Тема в разделе "Зиг-Заг. Системы с использованием ZigZag.", создана пользователем nen, 17 май 2009.

  1. Petr Gvozdik

    Petr Gvozdik Активный пользователь

    NEN, добрый день!
    Я всетаки поступил так,

    if (TrendLineType == 1) {
    nbar[x][0]=-1; nbar[x][1]=-1; nbar[x][2]=-1;
    }

    Поступил так, из соображений незнания алгоритма.
    С уважением,
    Петр
     
  2. nen

    nen Профи форума

    <b>Diver</b>, в какой строке? (В каком месте программы?)

    У меня часто алгоритм запутанный. Это по разным причинам. Иногда от лени. Но часто из-за желания оптимизировать по скорости.

    В строке 1314 есть такое:

    <b>nbar[x][0]=-1; nbar[x][1]=-1; nbar[x][2]=-1;</b>

    Но, заметь, там стоит условие: <b>if (y)</b>

    Это условие для тех зигзагов, которые не выводятся на график. На график выводится всего 4 зигзага. Остальные зигзаги находятся в памяти в массивах. Эти остальные зигзаги, если они со старших таймфреймов, не приведены к данным текущего таймфрейма. Значения <b>nbar[][]</b> для этих зигзагов рассчитываюся в конце функции <b>ZigZag_()</b>, как для всех остальных зигзагов. Но там значения <b>nbar[][]</b> привязаны к своим таймфреймам. Поэтому этим переменным в 1314 строке присваивается значение -1 для пересчет и приведения к данным текущего таймфрейма. .... и т.д.

    Можно делать алгоритмы более понятными. Создавать множество функций. Но при этом пострадает скорость вычисления. А в мультизигзагах используется алгоритм стандартного зигзага, обладающего свойством пожирания компьютерных ресурсов. Заметь, все мультизигзаги почти не тормозят компьютер. Хотя в MZZ9 производится расчет ДЕВЯТИ! зигзагов на 9 таймфреймах в реальном времени. И все это работает быстро.
     
  3. Petr Gvozdik

    Petr Gvozdik Активный пользователь

    NEN, добрый вечер!

    Это в самом начале

    //+------------------------------------------------------------------+
    //| Преобразование зигзага со старшего таймфрейма на текущий. Начало.|
    //+------------------------------------------------------------------+
    int ZigZagDT (double& LB[], double& HB[], double& LBG[], double& HBG[], int x)
    {
    int i=0, j, jl, jh, ext3=0, end, k;
    double el=-1, eh=-1;
    datetime t1, t2;
    int ni; // номер бара
    int jc; // счетчик экстремумов зигзага
    if (TrendLineType == 1) {
    nbar[x][0]=-1; nbar[x][1]=-1; nbar[x][2]=-1;
    }

    С уважением,
    Петр
     
  4. nen

    nen Профи форума

    <b>Diver</b>, там лучше оставить как сейчас.
    Условие if (TrendLineType == 1) в данном месте может в дальнейшем к некорректным расчетам привести.
    В этом месте присваивается переменным nbar[][] начальное, дорасчетное, значение.
     
  5. Petr Gvozdik

    Petr Gvozdik Активный пользователь

    Возможно, алгоритма не знаю.
    Исходил из того, что при параметрах 1-2 и 1-0, трендовые со старших TF не выводятся на младшие.
     
  6. nen

    nen Профи форума

    <b>Diver</b>, сейчас вроде трендовые со старших тф выводятся на текущем тф.
    В списке объектов есть объекты вида #0_1_2_15 - это названия трендовых. Последняя цифра в данном случае - 15 - означает таймфрейм, по данным которого построена трендовая. И в списке объектов сейчас выводится 4 или 5 комплектов таких наименований. То есть с 4-5-и таймфреймов.
     
  7. Petr Gvozdik

    Petr Gvozdik Активный пользователь

    Когда я задаю
    TrendLineType = 2
    или
    TrendLineType = 0

    трендовые старших TF не выводятся
     
  8. nen

    nen Профи форума

    <b>Diver</b>, ага, заметил. Странным образом выводятся. Частично со тарших идет вывод, с тех старших, зигзаги которых не выводятся на график.

    Сейчас поищу, в чем дело.
     
  9. Petr Gvozdik

    Petr Gvozdik Активный пользователь

    ok
    Буду ждать

    С уважением,
    Петр
     
  10. nen

    nen Профи форума

    <b>nen</b>, в функции ZigZagDT () необходимо строчки вида:

    if (TrendLineType==1) nbar[x][jc]=jh;

    записать так:

    nbar[x][jc]=jh;

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

    Спасибо за замечание.
    Вот исправленная версия.
     

    Вложения:

  11. Petr Gvozdik

    Petr Gvozdik Активный пользователь

    NEN, спасибо!
    Буду тестить, но есть желание добавить возможностей.

    С уважением,
    Петр
     
  12. nen

    nen Профи форума

    Возможности будут добавлены. Но без объяснения, как с ними работать. Было бы интересно посмотреть кто какое применение этим возможностям придумает.

    И добаления будут происходить медленно. Очень медленно. Потому что идет осмысление, что и как добавить.
     
  13. Petr Gvozdik

    Petr Gvozdik Активный пользователь

    Осмыслю, опишу.

    Петр
     
  14. nen

    nen Профи форума

    Diver, твой вариант правильный. Я ошибся. Завтра вечером все исправлю..
     
  15. nen

    nen Профи форума

    В этой версии должно все выводиться правильно.
    Дополнительно исправил небольшие ошибки.
     

    Вложения:

  16. Sergey

    Sergey Активный пользователь

    Евгений подскажи, что могло произойти с индикатором.
    Настроек не менял.
    Он самопроизвольно перешёл в этот режим.
    Отображаются линии со всех старших таймфреймов.
    Индикатор установлен из твоего предыдущего сообщения.
    20090710_gbpusd_15m.gif
     
  17. nen

    nen Профи форума

    Индикатор настроен так, что выводятся линии со всех старших тф, если хватает глубины истории на текущем тф.
    "Лишние" линии можно отключить в настройках. Это делается установкой 0 вместо 1 для соответствующего тф, например, в <b>zzVisible</b>.
     
  18. Sergey

    Sergey Активный пользователь

    Евгений, понял. Спасибо.
    Индикатор только приступил изучать.
    Впервые с ним оказался в таком узле трендовых.
    Будет очень интересно наблюдать дальнейшее развитие этой ситуации.
     
  19. nen

    nen Профи форума

    К сожалению, все не так просто.
    Механизация - индикаторы - упрощает что-то. Но...

    Ставим любой индикатор с настройками по умолчанию.
    При долгом наблюдении начинаем замечать какие-то закономерности.
    Делаем другие настройки. Закономерности исчезают.

    Кто сказал, что настройки по умолчанию это то, что нам нужно?
    А какие настройки правильные?

    Где та золотая середина?

    Ручные построения также не решают проблему. Не всегда решают.

    Лучше когда вручную были найдены закономерности. А потом эти закономерности запрограммировать.
    Камнем преткновения является алгоритм поиска НУЖНЫХ (ПРАВИЛЬНЫХ) экстремумов.
     
  20. Vladlv

    Vladlv Новичок

    Хотел поинтересоваться.
    А не планируете ли Вы ввести графическое управление Зиг-Загом.
    Быстро изменить параметры Зиг-Зага и посмотреть варианты формаций на графике это экономит время и убирает манипуляции с окном свойств индикатора.

    Я просто обратил внимание , что используя Зиг-Заг по одной и той же валюте, происходит следующее: На одном и том же таймфрейме в одно время действительны одни параметры, а спустя какое то время работают другие. И из трех параметров я выбрал один который изменяю, для подбора формы заг-зага. Это ExtBackstep. Я прекрасно понимаю, что наверное этого недостаточно для полноценного выбора нужной формы зиг-зага, но пока так...
     

Поделиться этой страницей