Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вобщем первый индикатор текущие значения расчитывает на основании предыдущих. В тайм серии это слева на право (по ходу чартов), то есть из прошлого в будущее, поскольку бар с большим номером дальше в прошлом.
Вы хотите сделать наоборот ? То есть текущие значения на основании будущих ? Ну, на истории нарисует красиво, а смысл ? Потому выше и спрашивали про подготовку на продажу ;) - самому торговать - только депо сливать.
Успехов.
ЗЫ пока писал ошибку заметили :).
Понятно, то есть диагноз - моя неопытность :))) то есть как я понял не реально его считать с обратной стороны так как рисоваться будет не верно? но по сути ведь у нас для правой стороны все предыдущие бары уже есть так почему нельзя сделать аналогичный расчет?
Понятно, то есть диагноз - моя неопытность :))) то есть как я понял не реально его считать с обратной стороны так как рисоваться будет не верно? но по сути ведь у нас для правой стороны все предыдущие бары уже есть так почему нельзя сделать аналогичный расчет?
Почему нельзя ? Можно. С небольшими оговорками в целесообразности. Чуть ниже. Компьютер то он все воспримет. А вот смысл ?
Давайте по-частям.
Пусть нужно расчитать значения 100 (сотни) баров индюка.
Оригинальный алгоритм для вычисления значений берет абсолютно точные значения из прошлого - они у нас есть. Для расчета 100 бара возьмем 101, 99 - 100 соответственно... и так далее для расчета нулевого возьмем первый. Подчеркиваю все эти значения есть.
Теперь Ваш алгоритм - для расчета 100 бара берем 99, 99 - 98 и так далее.. А что будем брать для расчета нулевого ? значения из будущего ? Их у нас нет. Можно ввести что-попало, что тогда получим ?
И по ходу расчетов в вашем индикаторе ошибка, полученная при расчете нулевого бара, передастся на первый, с первого бара будет использованиа при расчете второго и так далее по цепочке. Это, правда, приводит к получению более красивых картинок, поскольку индикатор "знает" куда двинется цена в будущем :). Но ценности для торговли не представляет.
Или для вычисления нулевого бара используем прогнозируемые значения в будущем. Но зачем тогда индикатор, если есть прогноз ?
Разве, что тока на продажу, да и то без исходников.
Успехов.
Понятно, то есть диагноз - моя неопытность :))) то есть как я понял не реально его считать с обратной стороны так как рисоваться будет не верно? но по сути ведь у нас для правой стороны все предыдущие бары уже есть так почему нельзя сделать аналогичный расчет?
Почему нельзя ? Можно. С небольшими оговорками в целесообразности. Чуть ниже. Компьютер то он все воспримет. А вот смысл ?
Давайте по-частям.
Пусть нужно расчитать значения 100 (сотни) баров индюка.
Оригинальный алгоритм для вычисления значений берет абсолютно точные значения из прошлого - они у нас есть. Для расчета 100 бара возьмем 101, 99 - 100 соответственно... и так далее для расчета нулевого возьмем первый. Подчеркиваю все эти значения есть.
Теперь Ваш алгоритм - для расчета 100 бара берем 99, 99 - 98 и так далее.. А что будем брать для расчета нулевого ? значения из будущего ? Их у нас нет. Можно ввести что-попало, что тогда получим ?
И по ходу расчетов в вашем индикаторе ошибка, полученная при расчете нулевого бара, передастся на первый, с первого бара будет использованиа при расчете второго и так далее по цепочке. Это, правда, приводит к получению более красивых картинок, поскольку индикатор "знает" куда двинется цена в будущем :). Но ценности для торговли не представляет.
Или для вычисления нулевого бара используем прогнозируемые значения в будущем. Но зачем тогда индикатор, если есть прогноз ?
Разве, что тока на продажу, да и то без исходников.
Успехов.
Спасибо за наставление, Владислав, приятно, когда люди не отказывают в помощи новичкам :)
Я вот тут маленько как говориться "покумекал" :-) понял что брал данные не с прошлых баров +1 а с -1 от нулевого. Вот получилось вот так:
Рисует почти как оригинал, единственное пока разбираюсь что почему то некоторые бары не совпадают по цвету, а где то кажется такое чувство что сдвинуто на 1 бар. Может быть проблема в том что данные в истории другие все же сохраняются не такие как при расчете прошлых значений с запоминанием в цикле?
Да, это собственно и не наставления - так обратил Ваше внимание на не столь очевидные вещи. Всего-то.
Теперь по поводу разницы в работе алгоритмов - ничего удивительного - по разному вычисляются величины _haOpen .
_haOpen = (ExtMapBuffer3[_i + 1] + ExtMapBuffer4[_i + 1]) / 2;
в оригинале и
_haOpen = (Open[_i + 1] + Close[_i + 1]) / 2;
у Вас.
В оригинале берется не цена открытия бара, а значение индикатора - то есть расчитанная величина.
Отличия могут быть как незначительными, так и весьма существенными.
И потом, возьмите себе за правило объявлять переменные с разу с инициализацией, например так
double _haOpen=0, _haHigh=0, _haLow=0, _haClose=0;
В дальнейшем это позволит избежать многих часов поиска неочевидных ошибок.
Успехов.
Да, это собственно и не наставления - так обратил Ваше внимание на не столь очевидные вещи. Всего-то.
Теперь по поводу разницы в работе алгоритмов - ничего удивительного - по разному вычисляются величины _haOpen .
_haOpen = (ExtMapBuffer3[_i + 1] + ExtMapBuffer4[_i + 1]) / 2;
в оригинале и
_haOpen = (Open[_i + 1] + Close[_i + 1]) / 2;
у Вас.
В оригинале берется не цена открытия бара, а значение индикатора - то есть расчитанная величина.
Отличия могут быть как незначительными, так и весьма существенными.
И потом, возьмите себе за правило объявлять переменные с разу с инициализацией, например так
double _haOpen=0, _haHigh=0, _haLow=0, _haClose=0;
В дальнейшем это позволит избежать многих часов поиска неочевидных ошибок.
Успехов.
Собственно, вопрос: а что нужно сделать и зачем ? Оригинальный алгоритм абсолютно корректен. Считает из прошлого в будущее. Вперед не заглядывает. Значит его можно использовать для торговли - можно собрать статистику и принять решение. А что Вам хочется получить ? Для чего другой порядок расчета ? Кстати, я Вам настоятельно рекомендую избегать алгоритмов расчета из будущего в прошлое - там можно допустить неочевидную ошибку и по истории все будет в порядке, а вот с прогнозом текущей ситуации будет беда....
Успехов.
Собственно, вопрос: а что нужно сделать и зачем ? Оригинальный алгоритм абсолютно корректен. Считает из прошлого в будущее. Вперед не заглядывает. Значит его можно использовать для торговли - можно собрать статистику и принять решение. А что Вам хочется получить ? Для чего другой порядок расчета ? Кстати, я Вам настоятельно рекомендую избегать алгоритмов расчета из будущего в прошлое - там можно допустить неочевидную ошибку и по истории все будет в порядке, а вот с прогнозом текущей ситуации будет беда....
Успехов.
Хочу сделать мультитаймфреймовый Хейкен Аши, но в одном скрипте а не с вызовом оригинального скрипта в конструкцию:
Данная конструкция в общем то понятна и логична. Но ее расчет идет справа налево, и это понятно так как в таком случае удобно определить расхождение по времени баров между например Н1 (текущий график) и Н4, с которого мы берем данные, потому что если попытаться сделать наоборот под алгоритм расчета Хейкен Аши, то получиться, что определить начало для Н1 и Н4 сложно, а если например использовать такой вариант что для общего цикла Н1 брать количество баров для расчет равное:
А для Н4 расчет:
То количество баров для Н4 не совсем стыкуется с Н1, точнее не стыкуются бары в начале. В итоге получается опять масленница :))))
Делал я такой индюк :).
Есть несколько вариантов.
1. Использовать функции iOpen() iHigh() iLow() iClose() вместо Open[], High[], Low[], Прямо в оригинальном коде индикатора.
2 Оформить его отдельной функцией, в которую передаете массивы котировок и в качестве таковых подать ему на вход котировки со старшего т\ф. Их можно также получить используя вышеназванные функции.
При прорисовке на младшем т\ф воспользуйтесь функцией iBarShift() - получите начало отсчета бара старшего т\ф относительно младшего.
Идея в аттаче. Там тока идет вызов С-шных функций, но они по названиям понятны - я старался максимально близко к МКЛ называть. С-шную библиотеку само собой не прикладываю ;).
Успехов.
ЗЫ Да, сам алгоритм несколько отличался от оригинального потому назван НА2МА - там результат еще раз сглаживался - интересно получается попробуйте. Если не ошибаюсь, такой алгоритм уже есть в кодебейсе.Делал я такой индюк :).
Есть несколько вариантов.
1. Использовать функции iOpen() iHigh() iLow() iClose() вместо Open[], High[], Low[], Прямо в оригинальном коде индикатора.
2 Оформить его отдельной функцией, в которую передаете массивы котировок и в качестве таковых подать ему на вход котировки со старшего т\ф. Их можно также получить используя вышеназванные функции.
При прорисовке на младшем т\ф воспользуйтесь функцией iBarShift() - получите начало отсчета бара старшего т\ф относительно младшего.
Идея в аттаче. Там тока идет вызов С-шных функций, но они по названиям понятны - я старался максимально близко к МКЛ называть. С-шную библиотеку само собой не прикладываю ;).
Успехов.
ЗЫ Да, сам алгоритм несколько отличался от оригинального потому назван НА2МА - там результат еще раз сглаживался - интересно получается попробуйте. Если не ошибаюсь, такой алгоритм уже есть в кодебейсе.У нас с Вами идея прям одинаковая!!!!!! насколько я понял вы там тоже сделали усреднение через MA обычную, потом по T3, получились два разных фильтра и далее сравнивали где они оба показывают вверх то общий индикатор выдает вверх синюю гистограмму где вниз там красную это насколько я понял! так вот у меня аналогичная идея!!!!!!! Я уже знаю как ее сделать в плане усреднения Хейкена с использованием различных алгоритмов это не сложно в общем то, но как и большинство наверно малоопытных людей попался на проблеме расчет баров :)))