Logo

Вход

Войти с помощью соц. сетей
X
 
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения
  • #1 Свернуть

    Помогите переделать индикатор Zig Zag MTF с мт4 на мт5

    У меня написан индикатор мультитаймфреймовый Zig Zag, который отлично работает на мт4 платформе. В мт5 есс-но он не скомпилировался т.к. там нет таких функций как в мт4 для получения данных из таймсерий рыночных данных (iTime, iHight и т.д.)
    В итоге я эти функции написал в библиотеке и проверил каждую в процессе написания. Внедрил в свой Zig Ziag, после чего очень удивился. Индикатор ничего не рисовал. С чего бы это вдруг я не понял. Ведь всё компилируется уже и функции эти я проверял и они работают на 100%). Кто-то на mql5 пишет уже какое-то время, думаю поймёт причину и подскажет. Индикатор, который под мт4 платформу полностью рабочий, и новый непонятно почему не рисующий с библиотекой для получения данных из таймсерий, которая ему нужна я прилагаю к сообщению.
    Странное то, что структуру кода индикатора то я не менял, а только заменил функций на библиотечных и всё..
  • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
  • #2 Свернуть

    Объем работы приличный
    я бы посоветовал в ф-цию расчета индикатора OnCalculate() добавить тела остальных расчетных ф-ций использующих массивы - таймсерии, в ф-ции OnCalculate они уже доступны без подкачки
    ЗЫ: и еще одна мысль посетила меня.... все вспомогательные ф-ции вызываются из OnCalculate(), попробуйте вызывать вспомогательные ф-ции с передачей в качестве параметров:
    MQL код:
    onst double &open[],
    const double &high[],
    сonst double &low[],
    onst double &close[]

    думаю должно получиться и работать без проблем

    Комментарий

    • #3 Свернуть

      Сообщение от скальпер Посмотреть сообщение
      В итоге я эти функции написал в библиотеке и проверил каждую в процессе написания.
      Как написал и проверил, так оно и работает...

      Сообщение от скальпер Посмотреть сообщение
      Внедрил в свой Zig Ziag, после чего очень удивился. Индикатор ничего не рисовал. С чего бы это вдруг я не понял.
      Ты еще больше удивишься, когда начнешь проверять ошибки функций работы с таймсериями. Вдруг окажется, что эти функции довольно "говорливые".

      Сообщение от скальпер Посмотреть сообщение
      Ведь всё компилируется уже
      Факт безошибочной компиляции не дает гарантии работоспособности кода.

      Сообщение от скальпер Посмотреть сообщение
      функции эти я проверял и они работают на 100%).
      Ну... Вероятно терминал все же "думает" по другому.
       

      Комментарий

      • #4 Свернуть

        ir0407, то что кривляться и насмехаться с кого-либо или с чего-либо проще, ежели высказать свою точку зрения аргументированно это понятно. Но всё же, можно и озвучиться свои мысли. Форум ведь для этого и создан. Если у меня что-то не так, чего я не обнаружил в процессе тестирования, то просьба подсказать. Хотя, я очень сомневаюсь, что там может быть что-то не так, но всё же..
         

        Комментарий

        • #5 Свернуть

          Сообщение от скальпер Посмотреть сообщение
          ir0407, то что кривляться и насмехаться с кого-либо или с чего-либо проще, ежели высказать свою точку зрения аргументированно это понятно. Но всё же, можно и озвучиться свои мысли.
          Дык я вроде и высказал свою мысль...
          Сообщение от ir0407 Посмотреть сообщение
          проверять ошибки функций работы с таймсериями.
          И как на мой взгляд это более чем понятно.

          Сообщение от скальпер Посмотреть сообщение
          Если у меня что-то не так, чего я не обнаружил в процессе тестирования, то просьба подсказать.
          Т.е., как я понял, подсказать - это выложить "на блюдечке с голубой каемочкой"? А как же "муки творчества", которые в разы увеличивают взаимопонимание с собственноручно написанным кодом? Весь твой код написан в лоб и с тем расчетом, что все запрашиваемые данные в терминале априори есть. Но это же далеко не так и уж тем более для МТФ.

          Сообщение от скальпер Посмотреть сообщение
          Хотя, я очень сомневаюсь, что там может быть что-то не так, но всё же..
          Гордыня - первый и самый главный враг программиста.
             

          Комментарий

          • #6 Свернуть

            Сообщение от ir0407 Посмотреть сообщение
            Дык я вроде и высказал свою мысль...
            Я и заметил..

            Сообщение от ir0407 Посмотреть сообщение
            И как на мой взгляд это более чем понятно.
            Смысл то понятен, но, опять-таки, не совсем очевиден.

            Сообщение от ir0407 Посмотреть сообщение
            Т.е., как я понял, подсказать - это выложить "на блюдечке с голубой каемочкой"? А как же "муки творчества", которые в разы увеличивают взаимопонимание с собственноручно написанным кодом? Весь твой код написан в лоб и с тем расчетом, что все запрашиваемые данные в терминале априори есть. Но это же далеко не так и уж тем более для МТФ.
            Да я же не спорю. И даже не упрекаю. Дело в том, что уже 3 дня бьюсь над ним периодами. И уже как-то подзамотался. Были же нормальные варианты доступа в 4-ке, а тут.. Как хочешь так и добирайся до данных. Можно, конечно, сделать как в 4-ке, что если бар отсутствует, то брать следующий, но, опять -таки, нет гарантии что следующий бар будет, ведь так?

            Сообщение от ir0407 Посмотреть сообщение
            Гордыня - первый и самый главный враг программиста.
            Нет ни какой гордыни, есть лишь усталость и измотанность в такие моменты..
               

            Комментарий

            • #7 Свернуть

              Сообщение от IgorM Посмотреть сообщение
              Объем работы приличный
              я бы посоветовал в ф-цию расчета индикатора OnCalculate() добавить тела остальных расчетных ф-ций использующих массивы - таймсерии, в ф-ции OnCalculate они уже доступны без подкачки
              ЗЫ: и еще одна мысль посетила меня.... все вспомогательные ф-ции вызываются из OnCalculate(), попробуйте вызывать вспомогательные ф-ции с передачей в качестве параметров:
              MQL код:
              onst double &open[],
              const double &high[],
              сonst double &low[],
              onst double &close[]

              думаю должно получиться и работать без проблем
              Я тоже об этом думал, и сделаю, как вариант, подобным образом один из вариантов индикатора, но это всё-равно не самый изящный вариант, т.к. будет передаваться пачка параметров постоянно. Да и библиотека всё-равно пригодится в дальнейшем для написания роботов, т.к. встроенных средств для получения данных из таймсерий уже нет. Поэтому придётся как-то решать этот вопрос. Поэтому я и задал вопрос на форуме.
                 

              Комментарий

              • #8 Свернуть

                Я вот специально передал все массивы таймсерий цен через параметры и заменил соответственно внутри функций все свои библиотечные функции на данные из этих таймсерий. Зиг-заг, которые рисовал прямые линии вниз (вертикальные) вообще перестал рисовать. Меня наводить всё это на мысль, что бибилотека моя, в данном случае, точно не при делах. Я т.к. с мтф зиг-загом не вышло сразу, решил обычный зиг-заг переписать. Он то и простой. Я вообще удивлён, что не рисуется ничего. Индикатор я прикрепил.
                   

                Комментарий

                • #9 Свернуть

                  Сообщение от скальпер Посмотреть сообщение
                  Дело в том, что уже 3 дня бьюсь над ним периодами. И уже как-то подзамотался. Были же нормальные варианты доступа в 4-ке, а тут..
                  А вот те, кто кодит на MQL5 считают, что нормальные варианты доступа именно в пятерке.

                  Сообщение от скальпер Посмотреть сообщение
                  Как хочешь так и добирайся до данных. Можно, конечно, сделать как в 4-ке, что если бар отсутствует, то брать следующий, но, опять -таки, нет гарантии что следующий бар будет, ведь так?
                  А может проще посмотреть как делают другие люди? Например тут.
                     

                  Комментарий

                  • #10 Свернуть

                    Сообщение от скальпер Посмотреть сообщение
                    У меня написан индикатор мультитаймфреймовый Zig Zag, который отлично работает на мт4 платформе. В мт5 есс-но он не скомпилировался т.к. там нет таких функций как в мт4 для получения данных из таймсерий рыночных данных (iTime, iHight и т.д.)
                    В итоге я эти функции написал в библиотеке и проверил каждую в процессе написания. Внедрил в свой Zig Ziag, после чего очень удивился. Индикатор ничего не рисовал. С чего бы это вдруг я не понял. Ведь всё компилируется уже и функции эти я проверял и они работают на 100%). Кто-то на mql5 пишет уже какое-то время, думаю поймёт причину и подскажет. Индикатор, который под мт4 платформу полностью рабочий, и новый непонятно почему не рисующий с библиотекой для получения данных из таймсерий, которая ему нужна я прилагаю к сообщению.
                    Странное то, что структуру кода индикатора то я не менял, а только заменил функций на библиотечных и всё..
                    этот индикатор сильно запаздывает. Нога появляется, когда цена уже исчерпала свое направление. Он вроде как сглаживает всплески, но та же простая средняя гораздо проще и нагляднее.
                    Как заработать на криптовалюте 38 % за 17 дней: полный отчёт

                    Комментарий

                    • #11 Свернуть

                      Сообщение от ir0407 Посмотреть сообщение
                      А вот те, кто кодит на MQL5 считают, что нормальные варианты доступа именно в пятерке.
                      Таким образом мы плавно соскачили с моей библиотеки на то, что мол другие думают? В этом варианте я не используюсь ничего нового. Просто перенёс индикатор и заменил таймсерии на те, что принимаете OnCalculate(). По существу есть что сказать? Реально я застрял и очень хочется понять причину.

                      Сообщение от ir0407 Посмотреть сообщение
                      А может проще посмотреть как делают другие люди? Например тут.
                      Смотрел. Но почему так работает, а у меня нет, не определил. Единственное, что там есть, так это подкачка истории. Но на 4-ке у меня этого тоже не было и работало. Какие-то объяснения должны быть этому или у них нормально, что с повышением версии всё посыпалось?
                         

                      Комментарий

                      • #12 Свернуть

                        Сообщение от alexisgor Посмотреть сообщение
                        этот индикатор сильно запаздывает. Нога появляется, когда цена уже исчерпала свое направление. Он вроде как сглаживает всплески, но та же простая средняя гораздо проще и нагляднее.
                        Почему? Рисует-то побарово, как обычно.
                           

                        Комментарий

                        • #13 Свернуть

                          Сообщение от скальпер Посмотреть сообщение
                          Таким образом мы плавно соскачили с моей библиотеки на то, что мол другие думают?
                          Пор твоей библиотеке...
                          1. Функции из либы тебе гарантированно должны возвращать запрошенные данные. У тебя этой гарантии нет.
                          2. Отладочный код в исходниках напрочь отсутствует. И посему, что ты там мог проверить и как - неизвестно и вызывает большие сомнения.
                          А про то, что другие думают - дык эта... Скока людей - стока и мнений. И твое мнение далеко не в первых рядах.

                          Сообщение от скальпер Посмотреть сообщение
                          В этом варианте я не используюсь ничего нового. Просто перенёс индикатор и заменил таймсерии на те, что принимаете OnCalculate(). По существу есть что сказать?
                          По существу... Ты пытаешься индикатор писанный для одной платформы "перенести" на другую практически путем копипастинга, т.е. тупой подменой некоторых встроенных функций на свои аналоги, которые писаны "по привычке" и не учитывают особенностей 5 платформы.

                          Сообщение от скальпер Посмотреть сообщение
                          Смотрел. Но почему так работает, а у меня нет, не определил.
                          Плохо смотрел.
                             

                          Комментарий

                          • #14 Свернуть

                            Сообщение от ir0407 Посмотреть сообщение
                            Пор твоей библиотеке...
                            1. Функции из либы тебе гарантированно должны возвращать запрошенные данные. У тебя этой гарантии нет.
                            Дай более канкретно. Я полностью согласен, что этот фактор я не учёл, хотя думал об этом. По факту гарантированно, как я понимаю, не вернёшь данные. Или есть вариант?
                            Я вижу это, на данный момент, проще. Использовать так как есть, но потом проверять в коде всегда факт получения данных. Если их нет, то ошибка.. и нужно как-то подгрузить данные. Как вопрос.
                            Это типа, если не брать мою библиотеку, а более наглядно будет примерно так:
                            MQL код:

                            double barsHighPrice[1];
                            int copied = CopyHigh(symbol, timeframe, shift, 1, barsHighPrice);
                            if (copied <= 0)
                            return -1; // Признак отсутствия котировки. Я думаю, тут каким-то enum'ом можно сделать для читабельности

                            Ну а дальше должна быть попытка докачки котировок, как понимаю. Хотя, можно это и в библиотеке реализовать, конечно, что бы в индикаторе было меньше писанины.
                            Вы об этом?

                            Сообщение от ir0407 Посмотреть сообщение
                            2. Отладочный код в исходниках напрочь отсутствует. И посему, что ты там мог проверить и как - неизвестно и вызывает большие сомнения.
                            Это понятно. Но как так вышло, что нарисовано вообще ничего? У меня же не абсолютно 0 котировок...

                            Сообщение от ir0407 Посмотреть сообщение
                            По существу... Ты пытаешься индикатор писанный для одной платформы "перенести" на другую практически путем копипастинга, т.е. тупой подменой некоторых встроенных функций на свои аналоги, которые писаны "по привычке" и не учитывают особенностей 5 платформы.
                            Ну так я же не на нинзютрейдер, cAlgo или мультичартс переношу, а на типа родственную. Хотя, какая-то она не такая получается. Были бы тестеры нормальные стратегий у других, уже перешёл бы.
                            Ведь, по сути, а почему не копипаст? Я же заменил функции на аналогичные. Если сделать проверки должно работать.

                            Сообщение от ir0407 Посмотреть сообщение
                            Плохо смотрел.
                            Сегодня изучу досканально. От и До.
                               

                            Комментарий

                            • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
                            • #15 Свернуть

                              Сообщение от скальпер Посмотреть сообщение
                              Вы об этом?
                              Об этом.
                              Сообщение от скальпер Посмотреть сообщение
                              Ну так я же не на нинзютрейдер, cAlgo или мультичартс переношу, а на типа родственную.
                              Они такие же родственные, как однояйцевые близнецы. С виду одинаковые, а характеры разные.
                              Сообщение от скальпер Посмотреть сообщение
                              Сегодня изучу досканально. От и До.
                              Как вариант начни с описания DRAW_ZIGZAG и DRAW_SECTION. Как работают, что им нужно и в чем у них разница.
                                 

                              Комментарий

                              Сейчас онлайн

                              working...
                              X