double _haOpenOld, _haCloseOld; for (_i = 0; _i < _limit; _i++) { _haOpen = (_haOpenOld + _haCloseOld) / 2; _haClose = (Open[i] + High[i] + Low[i] + Close[i]) / 4; .... _haOpenOld = _haOpen; _haCloseOld = _haClose; }А чему равны _haOpen? = (_haOpenOld? + _haCloseOld?) при первом своем использовании в цикле, и куда это потом тянется? Явно ерунда выходит... Дальше не смотрел
Приветствую!!!
Ребят, вот есть такой индикатор, делающий хорошее усреднение цены, хорошо всем известный как Heiken Ashi. Стал я значит разбираться что у него внутрях, появились кое какие свои идеи его применения, но смутило и заинтересовала следующая особенность:
_limit = Bars - _countedBars;
То есть как видно из кода сам индикатор расчитывается справа налево, то есть от максимально доступного количества баров в истории до текущего нулевого, причем в момент когда цикл находится на текущем баре например 100-ом, то индикатор использует для расчета данные бара 101, так как запоминает их значения в промежуточных буферах, не используемых для вывода на экран. Смысл в том, что у меня есть необходимость сделать наоборот расчет справа налево, вроде как должно получиться нечто подобное:
_limit = Bars - _countedBars - 1; double _haOpenOld, _haCloseOld; for (_i = 0; _i < _limit; _i++) { _haOpen = (_haOpenOld + _haCloseOld) / 2;
В итоге получил очень странный результат! Думал по началу что разницы нет, но результаты получились совсем другие, то есть гистограммы рисуются, причем судя по графику правильно, но совсем по другому не как в первом варианте в классическом :-) Вот тут то я и завис собственно говоря. Я если честно запутался, может кто объяснит мне в чем собака порылась? :)))
Во втором примере очевидная ошибка - использование переменных без инициализации.
double _haOpenOld, _haCloseOld; for (_i = 0; _i < _limit; _i++) { _haOpen = (_haOpenOld + _haCloseOld) / 2;// при i=0 здесь будет мусор
Вобщем первый индикатор текущие значения расчитывает на основании предыдущих. В тайм серии это слева на право (по ходу чартов), то есть из прошлого в будущее, поскольку бар с большим номером дальше в прошлом.
Вы хотите сделать наоборот ? То есть текущие значения на основании будущих ? Ну, на истории нарисует красиво, а смысл ? Потому выше и спрашивали про подготовку на продажу ;) - самому торговать - только депо сливать.
Успехов.
ЗЫ пока писал ошибку заметили :).
double _haOpenOld, _haCloseOld; for (_i = 0; _i < _limit; _i++) { _haOpen = (_haOpenOld + _haCloseOld) / 2; _haClose = (Open[i] + High[i] + Low[i] + Close[i]) / 4; .... _haOpenOld = _haOpen; _haCloseOld = _haClose; }А чему равны _haOpen? = (_haOpenOld? + _haCloseOld?) при первом своем использовании в цикле, и куда это потом тянется? Явно ерунда выходит... Дальше не смотрел
точно. логично! А чему тогда интересно равны значения:
ExtMapBuffer3[_i + 1] = ?
ExtMapBuffer4[_i + 1] = ?
Конечно согласен, что если я обрежу расчет индикатора до 300 баров, то он возьмет данные с 301 бара так? А если я на всю историю рассчитаю к примеру, то выходит что первые бары и далее по порядку опять будут неверны?
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Приветствую!!!
Ребят, вот есть такой индикатор, делающий хорошее усреднение цены, хорошо всем известный как Heiken Ashi. Стал я значит разбираться что у него внутрях, появились кое какие свои идеи его применения, но смутило и заинтересовала следующая особенность:
То есть как видно из кода сам индикатор расчитывается справа налево, то есть от максимально доступного количества баров в истории до текущего нулевого, причем в момент когда цикл находится на текущем баре например 100-ом, то индикатор использует для расчета данные бара 101, так как запоминает их значения в промежуточных буферах, не используемых для вывода на экран. Смысл в том, что у меня есть необходимость сделать наоборот расчет справа налево, вроде как должно получиться нечто подобное:
В итоге получил очень странный результат! Думал по началу что разницы нет, но результаты получились совсем другие, то есть гистограммы рисуются, причем судя по графику правильно, но совсем по другому не как в первом варианте в классическом :-) Вот тут то я и завис собственно говоря. Я если честно запутался, может кто объяснит мне в чем собака порылась? :)))