Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Оказывается дело в этой функции - она врет иногда
И вот где-где же брать нормальную функцию, которая не врет и во всех условиях работает корректно!?!?!
Поменял на эту и все нормально работает
Поторопился работает, но не на всех зумах - хрень.
Вы смотрели код? Из комментария очевидно - нет.
Затык показал визуально в чём. Есть идея, сейчас проверю.Я не смотрел код из-за отсутствия времени и интереса, поэтому и попросил чётко сформулировать проблему.
Из Вашей визуализации ничего не понял.
Эх, не хотите Вы внимательно читать мое первое сообщение. А я писал:
"Левый бар всегда рисуется от центра, правый как угодно. Поэтому начало координат в нуле (слева)."
Если Вы посчитаете пиксели, то поймете что ширина между барами в данном максимальном масштабе всегда 32, а левый бар начинается от центральной линии, а по сути это и есть временное начало. Т.е. размер тела свечи 23 (центральная линия + по 11 пикселей по бокам). У левого бара 11 пикселей - это как раз от центра, а значит от начала времени бара. Поэтому урезанным может быть только самый правый бар. О чем я и писал. С другими масштабами вся та же логика.
Поэтому всегда необходимо делать начало отсчета с левой свечи. Номер левого бара можно узнать с помощью идентификатора CHART_FIRST_VISIBLE_BAR.
Что сложного?
Ваша задача легко решается средствами MQL5. В чем затык? Можно поконкретней?
Ещё и ещё раз перечитываю Ваш комментарий в поисках зерна истинны, и до конца не понимаю. Вы предлагаете замерить на каждом зумме растояние между барами, и ширину каждого бара?
Т.е. на максимальном зумме, мы должны найти (32+23)*ЧИСЛО_НУЖНЫХ_БАРОВ+11+1?
Ещё и ещё раз перечитываю Ваш комментарий в поисках зерна истинны, и до конца не понимаю. Вы предлагаете замерить на каждом зумме растояние между барами, и ширину каждого бара?
Т.е. на максимальном зумме, мы должны найти (32+23)*ЧИСЛО_НУЖНЫХ_БАРОВ+11+1?
Да не надо ничего замерять.
Я лишь этим подсчетом хотел вам показать, что следующее мое утверждение верно:
Ширина бара на каждом из 6 масштабов величина фиксированная (1,2,4,8,16,32). Узнать ее просто: 2 в степени "номер масштаба" (int от 0 до 5)
Левый бар всегда рисуется от центра, правый как угодно. Поэтому начало счёта баров и пикселей необходимо вести с левого бара, который ВСЕГДА рисуется по центру свечи, что означает от времени бара.
Таким образом, зная номер первого левого бара (CHART_FIRST_VISIBLE_BAR) можно узнать с какого по какой пиксель находиться любой бар, находящийся правее.
ЗЫ: Наверное правильнее было бы термин "ширина бара" заменить на "расстояние между барами"
Важное дополнение:
Это с точки зрения MQL5, и это совсем не очевидно. ))
Т.е. один бар на графике включает в себя две половинки соседних двух свечей.
это наглядно видно из этой гифки:
Да не надо ничего замерять.
Я лишь этим подсчетом хотел вам показать, что следующее мое утверждение верно:
Ширина бара на каждом из 6 масштабов величина фиксированная (1,2,4,8,16,32). Узнать ее просто: 2 в степени "номер масштаба" (int от 0 до 5)
Левый бар всегда рисуется от центра, правый как угодно. Поэтому начало счёта баров и пикселей необходимо вести с левого бара, который ВСЕГДА рисуется по центру свечи, что означает от времени бара.
Таким образом, зная номер первого левого бара (CHART_FIRST_VISIBLE_BAR) можно узнать с какого по какой пиксель находиться любой бар, находящийся правее.
ЗЫ: Наверное правильнее было бы термин "ширина бара" заменить на "расстояние между барами"
Я не понимаю, ширина бара что это есть? С учетом расстояния между барами или как?
В общем, если бы был кусок кода, то было бы понятней, а его нет, и используется двоякая терминология, поэтому мне сложно понять глубину Ваших мыслей....
Важное дополнение:
Это с точки зрения MQL5, и это совсем не очевидно. ))
Т.е. один бар на графике включает в себя две половинки соседних двух свечей.
это наглядно видно из этой гифки:
Да это понятно, поэтому первый бар в коде сдвигается, что б он был полностью виден. Другое дело, что половинка с права и половинка с лева не составляет один бар - от этого сложности, как я понимаю.
Я не понимаю, ширина бара что это есть? С учетом расстояния между барами или как?
В общем, если бы был кусок кода, то было бы понятней, а его нет, и используется двоякая терминология, поэтому мне сложно понять глубину Ваших мыслей....
Да это понятно, поэтому первый бар в коде сдвигается, что б он был полностью виден. Другое дело, что половинка с права и половинка с лева не составляет один бар - от этого сложности, как я понимаю.
В данном случае не существует какой-то глубины моих мыслей, а лишь банальные документированные вещи, которые умещаются на одной странице справки. Читайте первоисточники.
Катапультируюсь с этой темы.В данном случае не существует какой-то глубины моих мыслей, а лишь банальные элементарные вещи, которые умещаются на одной странице справки. Читайте первоисточники.
Катапультируюсь с этой темы.Не торопитесь катапультироваться - куда лучше получить удовольствие от помощи другому, чем считать всех идиотами.
Вы такую конструкцию предлагаете, я правильно понял?
Не торопитесь катапультироваться - куда лучше получить удовольствие от помощи другому, чем считать всех идиотами.
Вы такую конструкцию предлагаете, я правильно понял?
А Вы можете расшифровать pp, Shift_Start,Shift_Stop, GetBarSize(0)?
А Вы можете расшифровать pp, Shift_Start,Shift_Stop?
pp - ширина для скрина
Shift_Start - номер бара начала скриншота по функции iBarShift умноженная на -1
Shift_Stop - номер бара окончания скриншота по функции iBarShift умноженная на -1
Принтанул вот эти переменные:
получил такую строчку
Смущает столь огромный номер первого бара - это от правой части (нулевого индекса) графика или как? Просто Вы пишите, что это номер видимого бара, и это не понятно...