[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 82
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Спасибо, но мне не подойдет. Мне не нужно смещение. Выше я написал. Допустим для первой свечи буфер[1]=Hight[1], для третьей буфер[3]=Hight[3], а для второй надо рассчитать: буфер[2]=MathAbs(Higth[1]-Hight[3])/2 и получим то, что я хотел на рисунке.
wolf05632:
ЗЫ: как сделать так, чтоб индюк работал, т.е. производил расчеты (именно РАБОТАЛ, а не был виден) только на определенном таймфрейме (н1)?
А чем Вам Мой вариант не понравился? :)) Куда проще и меньше расчётов. Или Вам нужно, чтобы в буфере оставались значения на каждом баре?
Пробовал, спасибо, но че-то не получилось. НА графике ниче не показывало. Мож что-то недопонял? Единственное, я понял главное: элементы у буфера должны идти последовательно (1,2,3...), т.е. без пропусков (1,3,5...) и КАЖДОМУ! элементу буфера должно быть присвоено значение! :-)
Roman, спасибо за ответ..... К сожалению, так и не понял один момент. В Учебнике, https://book.mql4.com/ru/basics/expressions, в разделе "Приведение типов. Вариант 4.1. Вычисляется результат целого типа
и Вариант 4.2. Аналогичная ситуация возникает и в случае, если искать результат в виде значения действительного типа", приведена одна и та же формула, но в одном случае тип переменной F обозначен как int
а во втором примере переменная уже как double
К сожалению так и не понял логику преобразования. Если в первом варианте вообщем-то понятно почему почему переменной F присваивается int (т.е. согласно правилу неявного приведения типов), то вот почему во втором варианте присвоили double.... совершенно меня запутало.
Пожалуйста, поясните, что я здесь возможно упустил в объяснениях?
Заранее спасибо.
Пробовал, спасибо, но че-то не получилось. НА графике ниче не показывало. Мож что-то недопонял?
Вы полностью код скопировали или только то, что было в функции start()? Это важно!
Единственное, я понял главное: элементы у буфера должны идти последовательно (1,2,3...), т.е. без пропусков (1,3,5...) и КАЖДОМУ! элементу буфера должно быть присвоено значение! :-)
Roman, спасибо за ответ..... К сожалению, так и не понял один момент. В Учебнике, https://book.mql4.com/ru/basics/expressions, в разделе "Приведение типов. Вариант 4.1. Вычисляется результат целого типа
и Вариант 4.2. Аналогичная ситуация возникает и в случае, если искать результат в виде значения действительного типа", приведена одна и та же формула, но в одном случае тип переменной F обозначен как int
а во втором примере переменная уже как double
К сожалению так и не понял логику преобразования. Если в первом варианте вообщем-то понятно почему почему переменной F присваивается int (т.е. согласно правилу неявного приведения типов), то вот почему во втором варианте присвоили double.... совершенно меня запутало.
Пожалуйста, поясните, что я здесь возможно упустил в объяснениях?
Заранее спасибо.
n
Тип интеджер входит в тип дабл, тип переменных дабл - имеет более широкие границы, поэтому и нельзя, чтобы переменные в выражении "имели возможность" быть разных типов, а результат был переменной, имеющей более узкий диапазон принимаемых значений, в данном случае - тип интеджер. Т.е. если хотя бы одна переменная в выражении имеет тип дабл, то результат также должен и может быть в диапазоне дабле, в противном случае будет ошибка при компиляции - несоответствие типов.
Подробнее - см. здесь.
Тип интеджер входит в тип дабл, тип переменных дабл - имеет более широкие границы, поэтому и нельзя, чтобы переменные в выражении "имели возможность" быть разных типов, а результат был переменной, имеющей более узкий диапазон принимаемых значений, в данном случае - тип интеджер. Т.е. если хотя бы одна переменная в выражении имеет тип дабл, то результат также должен и может быть в диапазоне дабле, в противном случае будет ошибка при компиляции - несоответствие типов.
Подробнее - см. здесь.
Я частенько использую неявное приведение типов. Правда скобки приходится использовать лишние.
Ребята, что означает #INF - это выход за допустимые пределы диапазона double? см. вторую строчку сверху (там считается произведение double TWR, а именно предыдущее ее значение умножается на последующее). Как правильно считать ТАКИЕ значения, принимаемые переменной TWR?
Если почитать данный раздел учебника по-внимательнее, то Вы поймёте, что сначала нужно смотреть на выражение, которое находится левее операции присваивания "=":
Согласно правилу:
переменная A типа double находится левее, а значит значение выражения A+Y будет число типа double.
А дальше уже нужно обратить внимание на тип переменной, к которой присваивается выражение.
В первом случае: "сначала тип выражения A+Y будет приведен к типу int (в соответствии с правилом вычисления целых чисел), а затем этот результат станет значением целой переменной F".
Во втором случае: "целевой тип переменной F (слева от знака операции присвоения), в данном случае - тип double, совпадает с типом double выражения A+Y, поэтому целевого преобразования типов не происходит".
Verstehen? :)))
Ребята, что означает #INF - это выход за допустимые пределы диапазона double? см. вторую строчку сверху (там считается произведение double TWR, а именно предыдущее ее значение умножается на последующее). Как правильно считать ТАКИЕ значения, принимаемые переменной TWR?
Вообще INFINITY (сокращённо INF) - это бесконечность! :)) Да, получается, что double не хватает больше сил (памяти) хранить такое громадное число.
А как правильно считать, могу лишь догадываться... Создать Свой тип, условно: хранить в дополнительной переменной разрядность, а double умножать на 10^n, где n - и есть степень разрядности. Но в таком случае резко теряется точность, да и у Вас вижу точность всё хуже и хуже...
Но может будет проще поменять логику расчётов? :))) Или может где-то кроется ошибка.