Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я уже ответил, что бары открываются независимо от прихода котировок. Если нет котировки, цена нового бара будет ценой закрытия предыдущего. Факт нового бара будет зафиксирован независимо от прихода котировок, самими счетчиками, которые работают на таймере.
Конкретный таймфрейм не имеет значения, потому что это просто счетчик, который достигает своей величины и устанавливается событие нового бара этого таймфрейма. Это просто метод синхронизации с появлением новых баров разных таймфреймов. СИНХРОНИЗАЦИИ.
Инструмент тоже значения не имеет. Если котировки из одного сервера, то значит, время появления новых баров у них одно. Поэтому, не важно какой инструмент, пока эти инструменты из одной точки земного шара.
Я закончу то, что сказал и займусь другим вещами. Хорошего по-немногу.)
с уважением.
P.S. формирование нового бара начинается с прихода нового тика, что и является ценой открытия нового бара. в вашем алгоритме идет расчет по таймеру что никак не связано с приходом нового тика, отсюда и разногласия. по сути ваш алгоритм выдает не факт открытия нового бара, а начало времени после которого можно ждать приход первой котировки в баре.
Это у вас, в вашем алгоритме считается, что бар открыт. На самом же деле - физически - в терминале его ещё нету. Это уже полная несогласованность с реалиями сервера.
Конкретный тф тоже имеет значение.
Равно, как и инструмент - это знают все, кто хоть раз приближался к мультивалютным программам.
Жаль, что вы не хотите собственноручно прийти к выводу, к которому вас ведём - наглядно, и на конкретно-осязаемом примере.
Для события нового бара нет разницы какой символ. Новые бары разных символов появляются синхронно (для каждого таймфрейма).
В таймере для каждого таймфрейма есть свой счетчик. Когда счетчик достигает значения своего таймфрейма, он обнуляется и устанавливается событие нового бара этого таймфрейма.
Дальше, обращение к функции возвращает событие нового бара один раз за время текущего бара.
На этом всем спасибо и до свидания.
Для события нового бара нет разницы какой символ. Новые бары разных символов появляются синхронно (для каждого таймфрейма).
В таймере для каждого таймфрейма есть свой счетчик. Когда счетчик достигает значения своего таймфрейма, он обнуляется и устанавливается событие нового бара этого таймфрейма.
Дальше, обращение к функции возвращает событие нового бара один раз за время текущего бара.
На этом разжевывать я закончил.
Всем спасибо и до свидания.
Не вы разжёвываете - ваша логика понятна. Но, к сожалению, она ошибочна. Нужно получать данные от торгового окружения - в итоге от сервера.
И если нет новой котировки на сервере, то и нет открытия нового бара в терминале.
Ваш же алгоритм, работая в таймере, будет "штамповать" новые бары при закрытом рынке. Но их же нету на сервере и, соответственно - в терминале.
И, уж поверьте, разница в приходе котировок по разным символам даёт разницу и в открытии нового бара - начало построения нового бара активизируется лишь с приходом тика (котировки), соответствующей времени этого бара. Если тик пришёл спустя 4 минуты 15 секунд после закрытия последнего бара на М1, то три бара будут пропущены, так как нет котировки, по которой их строить.
Я вам дал подсказку.
вы заблуждаетесь.
с уважением.
P.S. формирование нового бара начинается с прихода нового тика, что и является ценой открытия нового бара. в вашем алгоритме идет расчет по таймеру что никак не связано с приходом нового тика, отсюда и разногласия. по сути ваш алгоритм выдает не факт открытия нового бара, а время после которого можно ждать приход первой котировки в баре.
Да по таймеру. Новый бар возникает и без котировки. Нас интересует именно событие появления бара, а котировку мы можем зафиксировать в ОnTick();
Бар в любом случае появится. Если это выходные и баров нет, то не страшно. Функция не собьется и к моменту начало сессии будет по прежнему синхронизирована с приходом баров.
Не вы разжёвываете - ваша логика понятна. Но, к сожалению, она ошибочна. Нужно получать данные от торгового окружения - в итоге от сервера.
И если нет новой котировки на сервере, то и нет открытия нового бара в терминале.
Ваш же алгоритм, работая в таймере, будет "штамповать" новые бары при закрытом рынке. Но их же нету на сервере и, соответственно - в терминале.
И, уж поверьте, разница в приходе котировок по разным символам даёт разницу и в открытии нового бара - начало построения нового бара активизируется лишь с приходом тика (котировки), соответствующей времени этого бара. Если тик пришёл спустя 4 минуты 15 секунд после закрытия последнего бара на М1, то три бара будут пропущены, так как нет котировки, по которой их строить.
Я вам дал подсказку.
Да по таймеру. Новый бар возникает и без котировки. Нас интересует именно событие появления бара, а котировку мы можем зафиксировать в ОnTick();
Бар в любом случае появится. Если это выходные и баров нет, то не страшно. Функция не собьется и к моменту начало сессии будет по прежнему синхронизирована с приходом баров.
с уважением.
Artyom Trishkin:
И, уж поверьте, разница в приходе котировок по разным символам даёт разницу и в открытии нового бара - начало построения нового бара активизируется лишь с приходом тика (котировки), соответствующей времени этого бара. Если тик пришёл спустя 4 минуты 15 секунд после закрытия последнего бара на М1, то три бара будут пропущены, так как нет котировки, по которой их строить.
Вот насчет этого вопроса, - по моему, вы не правы. Проверьте пожалуйста в сервисдеске. Пусть они точно ответят на вопрос: формируются ли новые бары в платформе независимо от прихода котировок, или нет. Если нет, то на событии нового бара проверять была ли на нем котировка. Если была, - но новый бар сформировался. Можно и так. Много менять не нужно.
допустим вы хотите по событию начала нового бара брать показания индикатора на 1 и 2 барах. исходя из логики вашего алгоритма вы получите начала нового бара раньше чем придет котировка и бар появиться на графике, как следствие при попытке считать показания индикатора вы получите значения не 1 и 2 баров как положено при приходе котировки, а значения 1 и 2 баров которые при приходе новой котировки сдвинутся на 1 бар и будут, 2 и 3 баром. что явно скажется на работе самого советника.
с уважением.
Возможно. Добавьте проверку прихода котировки на каждом событии нового бара и все. Работайте не с событием нового бара, а с событием бара и котировки, например.
с уважением.
Котировки получайте из OnTick(). Можете связать событие открытия нового бара с подтверждением прихода котировки. Я бы так делать не стал. Но это личное дело каждого.
Я же знаю как получать котировки :)
В мультивалютной программе - в таймере в цикле по нужным символам. А открытие нового бара (физическое, а не виртуальное - ошибочное - как у вас) контролируется по времени последней котировки и сравнения этого времени с временем нулевого бара символа.
Вы же делаете наобум - виртуальный бар, которого может и не быть. В выходные их нет, но у вас они якобы есть - это самое простое, что можно привести в качестве примера.
И, понимаете, что это вы один так бы делать не стали. Остальные делают так, как правильно и надёжно. Но это, конечно же, только ваше личное дело.
Хотел рассказать как правильно и показать большую разницу в простоте написания на ООП, и сложных изворотах в процедурном стиле при решении одной и той же задачи.
Но вы наверное больше знаете, и не нужно оно вам. Не смею больше выглядеть перед вами чего-то знающим. Извините.