Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 683

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вы их ни разу не инициализировали ни в начале ни еще где то, Вы их просто обьявили
я же писал перед использованием, т.е. если у Вас переменные SredRazmax, SredRazmin, Sredn являются суммами значений массивов, то чтобы корректно посчитать сумму, нужно переменную обнулить и в дальнейшем складывать эл-ты массива и сохранять в эту переменную
т.е.
ну и второе, в чем у Вас возникнет вопрос, в индикаторе каждый тик будет вызываться OnCalculate() и значит Вы постоянно будет считать вершины ЗигЗага на каждом тике, т.е. примерно 40-60 раз в секунду.
Спасибо, но я пробовал их обнулять и пробовал вместо OnCalculate() использовать OnStart, все равно прыгают значения и мне непонятно если ww=0 (значение массива постоянно отображается) , то почему прыгают значения в средней, как сделать, чтобы не учитывался каждый тик, а учитывались только значения из массива?
Спасибо, но я пробовал их обнулять и пробовал вместо OnCalculate() использовать OnStart
думаю, что не смогу объяснить Вам почему так происходит, дело в том, что OnStart() используется в скриптах, а OnCalculate() в индикаторах, Вам нужно разобраться чем скрипты от индикаторов отличаются в MQL
не совсем понятно какая задача у Вас стоит? Вы хотите вывести значения чего? в коде Вы складываете цены на которых вершины ЗигЗага находятся на всем графике, в выводе пишите "Средний размах" и выводите значение (SredRazmax-SredRazmin)/nn, а расчет ведете по всем барам
зачем Вам индикатор если Вы не используете индикаторные буфера для рисования? в индикаторе буфера привязаны к барам и их значения будут сдвигаться при появлении нового бара
думаю, что не смогу объяснить Вам почему так происходит, дело в том, что OnStart() используется в скриптах, а OnCalculate() в индикаторах, Вам нужно разобраться чем скрипты от индикаторов отличаются в MQL
не совсем понятно какая задача у Вас стоит? Вы хотите вывести значения чего? в коде Вы складываете цены на которых вершины ЗигЗага находятся на всем графике, в выводе пишите "Средний размах" и выводите значение (SredRazmax-SredRazmin)/nn, а расчет ведете по всем барам
зачем Вам индикатор если Вы не используете индикаторные буфера для рисования? в индикаторе буфера привязаны к барам и их значения будут сдвигаться при появлении нового бара
Честно говоря я это просто упростил задачу(изначально формула выглядит немного по другому), думал получится понять почему прыгают значения среднего, если нулевое значение в массиве остается постоянным. У меня два цикла, один на заполнение массива, а другой на расчет среднего, там же ограничение nn, а вывести я вообщето хотел и график - это стандартный зиг заг, но через iCustom у меня рисует черти что, и среднее... От нулевой вершины, если она больше предыдущей отнять предыдущую и от предыдущей отнят предпредыдущую(она будет со знаком минус, следовательно ее надо умножать на минус 1) и все это суммируется и делится на задаваемое количество вершин nn. Мы получаем средний размах вершин. В дальнейшем хотел получить и другие средние по зигзагу, но у меня возникла загвоздка с "прыганьем" значений.
Вот так примерно было изначально:
Честно говоря я это просто упростил задачу(изначально формула выглядит немного по другому), думал получится понять почему прыгают значения среднего, если нулевое значение в массиве остается постоянным. У меня два цикла, один на заполнение массива, а другой на расчет среднего, там же ограничение nn, а вывести я вообщето хотел и график - это стандартный зиг заг, но через iCustom у меня рисует черти что, и среднее... От нулевой вершины, если она больше предыдущей отнять предыдущую и от предыдущей отнят предпредыдущую(она будет со знаком минус, следовательно ее надо умножать на минус 1) и все это суммируется и делится на задаваемое количество вершин nn. Мы получаем средний размах вершин. В дальнейшем хотел получить и другие средние по зигзагу, но у меня возникла загвоздка с "прыганьем" значений.
Вот так примерно было изначально:
задачу, в принципе не совсем я понял, поздно уже, спать охота, вот подправил по своему видению, считает, есть у меня сомнения, как будет себя индикатор вести на нулевом баре (не проверял), но рисует и по Вашей формуле комментарий выводит
Помогите решить такую задачу? (Если возможно.)
При определенных условиях советник выдаёт Alert. Можно ли, чтобы вместе с Alert и окно вызвавшее его, становилось активным?
Помогите решить такую задачу? (Если возможно.)
При определенных условиях советник выдаёт Alert. Можно ли, чтобы вместе с Alert и окно вызвавшее его, становилось активным?
задачу, в принципе не совсем я понял, поздно уже, спать охота, вот подправил по своему видению, считает, есть у меня сомнения, как будет себя индикатор вести на нулевом баре (не проверял), но рисует и по Вашей формуле комментарий выводит
Да, спасибо Вам что уделяете мне время, у Вас действительно рисует, я наверное что то неправильно делал. Но вот не выводит в коменте массив(ведь там только вершины должны быть?) и считает неправильно с минусом и число..., у зигзага размах между вершинами не такой. Идея в том, чтобы от большей последней(которая только сформировалась) вершина отнять предыдущую меньшую, а от предыдущей меньшей отнять еще более предыдущую, которая больше и число будет со знаком минус, его мы умножаем на (-1) и так далее, а все это складывается nn раз и делится на nn, получаем средний вылет. Примерно на 4 часовках это будет 1,69(от до) на USDJPY. В дальнейшем я хотел посчитать количество баров среднее между вершинами. Попробую теперь разобраться в вашем коде, что я делал не так, почему у меня не рисовал и почему неправильно считает может получится...
Да, спасибо Вам что уделяете мне время, у Вас действительно рисует, я наверное что то неправильно делал. Но вот не выводит в коменте массив(ведь там только вершины должны быть?) и считает неправильно с минусом и число..., у зигзага размах между вершинами не такой. Идея в том, чтобы от большей последней(которая только сформировалась) вершина отнять предыдущую меньшую, а от предыдущей меньшей отнять еще более предыдущую, которая больше и число будет со знаком минус, его мы умножаем на (-1) и так далее, а все это складывается nn раз и делится на nn, получаем средний вылет. Примерно на 4 часовках это будет 1,69(от до) на USDJPY. В дальнейшем я хотел посчитать количество баров среднее между вершинами. Попробую теперь разобраться в вашем коде, что я делал не так, почему у меня не рисовал и почему неправильно считает может получится...
Вершины в комменте не будет выводить, т.к. индикаторный буфер HZZ[] содержит скопированные значения индикаторного буфера ZigZag, иначе не сумеем нарисовать, я специально разнес на 2 условия обнаружения вершины вверх и вниз:
Вы можете теперь самостоятельно выполнить там расчеты, текущая вершина ЗЗ это переменная zz, предыдущая вершина в переменной lastzz , если есть необходимость знать несколько вершин ЗЗ, тогда нужно заводить еще массив для хранения этих данных, новый индикаторный буфер, скорее всего Вам усложнит все, т.к. при появлении нового бара, все массивы привязанные к индикаторным буферам "сползают" вместе с графиком
ЗЫ: код мой пример, и думаю, что там нужно цикл до 1-го бара производить, а не до 0, будет пересчитывать постоянно значения SredRazmax, проверять не могу сейчас, нет терминала в ПК
Вершины в комменте не будет выводить, т.к. индикаторный буфер HZZ[] содержит скопированные значения индикаторного буфера ZigZag, иначе не сумеем нарисовать, я специально разнес на 2 условия обнаружения вершины вверх и вниз:
Вы можете теперь самостоятельно выполнить там расчеты, текущая вершина ЗЗ это переменная zz, предыдущая вершина в переменной lastzz , если есть необходимость знать несколько вершин ЗЗ, тогда нужно заводить еще массив для хранения этих данных, новый индикаторный буфер, скорее всего Вам усложнит все, т.к. при появлении нового бара, все массивы привязанные к индикаторным буферам "сползают" вместе с графиком
ЗЫ: код мой пример, и думаю, что там нужно цикл до 1-го бара производить, а не до 0, будет пересчитывать постоянно значения SredRazmax, проверять не могу сейчас, нет терминала в ПК