Переменные up_buffer и down_buffer, а также futurebar у Вас на момент первого использования не инициализированы. Скорей всего равны нулю. Это так и задумывалось?
Убери это
if(realbar >= futurebar)
и поставь условие
if(rates_total > prev_calculated)
Дальше пойми что i-тый бар, это только-что сформированный бар у которого OHLC равны... Соответственно надо работать с i+1 баром, с завершённым баром.
Убери это
и поставь условие
Дальше пойми что i-тый бар, это только-что сформированный бар у которого OHLC равны... Соответственно надо работать с i+1 баром, с завершённым баром.
сделайте так
realbar = Bars; if(realbar > futurebar) { bulls_middleline[i] = (up_buffer + up) / 2; up_buffer = bulls_middleline[i]; bears_middleline[i] = (down_buffer + down) / 2; down_buffer = bears_middleline[i]; futurebar = Bars; }
сделайте так
Вот сам код, это пример для наглядности, но принцип работы тот же.
Мне важно синхронизировать с открытием бара, поскольку работаю с тиками и при появлении нового бара некоторые показатели обнуляються.
А вот и неугадал :-)
return(rates_total);
говорит о том что работа идёт по открытию баров. И что там синхронизовать ?
да, и переменные надо инициализовать..хотя-бы в OnInit
А вот и неугадал :-)
говорит о том что работа идёт по открытию баров. И что там синхронизовать ?
да, и переменные надо инициализовать..хотя-бы в OnInit
Что не угадал то?
Переменные я инициализирую по необходимости(когда требуется). Еще раз повторю, индикатор работает по принципу накопления \ передачи данных \ и обнуления вот для чего синхронизация, чтобы с нового бара обнулялись показатели и шли данные нового бара... Я понимаю что тут все жутко умные, но это ни как не помогает в решении задачи! Я дилетант и не скрываю этого, но основы понимаю, поэтому хотелось бы по существу.
Что не угадал то?
Переменные я инициализирую по необходимости(когда требуется). Еще раз повторю, индикатор работает по принципу накопления \ передачи данных \ и обнуления вот для чего синхронизация, чтобы с нового бара обнулялись показатели и шли данные нового бара... Я понимаю что тут все жутко умные, но это ни как не помогает в решении задачи! Я дилетант и не скрываю этого, но основы понимаю, поэтому хотелось бы по существу.
приведя код, неплохо было-бы пояснить что вы от него хотели и что именно не получили. Простыми словами типа "хотел нарисовать два уровня, один между high и open, другой ещё как-то там, а рисуется зелёная тыква". Получить ответ на несформулированный вопрос можно только на форуме телепатов :-)
и ещё раз про то "что не угадал" : в приведённом примере OnCalculate вызывается только при открытии нового бара (то есть не на тики). У вас каждый раз бар новый.Всегда. Переменные не инициализованы и при первом обращении могут содержать мусор.
ps. не злоупотребляйте болдом и оформительством текста - не очень удобно читать
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Вот сам код, это пример для наглядности, но принцип работы тот же.
Мне важно синхронизировать с открытием бара, поскольку работаю с тиками и при появлении нового бара некоторые показатели обнуляються.