Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Может кто знает в чём ошибка?
Индикатор работает правильно, но отображается больше баров,
чем сделано в настройке.
Код не глядел, но предположу, что после появления каждого нового бара, не учитывается то, что и линии индикатора тоже автоматически сдвигаются влево (если смотреть на график). Другими словами нужно после появления нового бара сдвинуть линии индикатора вправо (если смотреть на график).
Последний штрих..
Оказался не последний ....
Нужна ещё одна оптимизация.
Доделаю и оттестирую...
Раз пошла такая пьянка, то держите тиковый индикатор - индикатор открытого интереса (запускать на реальном счёте подключённом к бирже).
Обнаружилась серьёзная проблема:
Дублирование тиков с разным стартовым временем :(
start_time разное, а тики копируются повторно, если
у них одинаковое время
Завтра подробно опишу.
Самая последняя сборка
Что-то не спится, решил написать что происходит.
(Полный код индикатора в посте выше.)
Тики с биржи приходят в терминал не строго по временным отрезкам,
а блоками (см. скриншот) Блок 1, Блок 2 и т.д
Терминал их "складирует" и выводит в таблицу, как он их получает с биржи (поблочно).
В обоих блоках могут быть сделки с одинаковым временем.
Если мы вызываем CopyTicks() НЕ в реальном времени (скажкем, на следующий день или через несколько секунд),
то функция CopyTicks() будет возвращать точные данные.
А в реальном времени происходит следующее:
Если start_time = (23:49:58.114), то мы получаем Блок 1 полностью (обведено красным).
Затем, мы ждём изменение во времени, чтобы получить Блок 2 (обведено зелёным).
Чтобы избежать дублирование Блока 1 (OnBookEvent может очень быстро сработать)
введена проверка, что время изменилось
if(start_time==ulong(ticks[copied-1].time_msc)) return;
Когда start_time = (23:49:58.596), мы должны были бы получить Блок 2,
но функция CopyTicks() возвращает и Блок 2 и все тики со временем (23:49:58.114),
если в Блоке 2 есть хотя бы один тик с этим же временем(23:49:58.114).
Вот такие очень грустные новости.... :(
Если разработчики не пофиксят это, то получать Ленту сделок в реальном времени - невозможно.
А почему Вы думаете, что тики при запросе по времени скачиваются от заданного времени и ВГЛУБЬ истории? На самом деле, при запросе тиков по времени, тики скачиваются от заданного времени и в БУДУЩЕЕ. Например:
Входные данные (запрос 20000 тиков), время 2016.08.25 20-00-00:
Получаем:
То есть тики получены от запрошенного времени 2016.08.25 20:00:00 в сторону БУДУЩЕГО (последний тик имеет время 2016.08.26 00:02:08)
А почему Вы думаете, что тики при запросе по времени скачиваются от заданного времени и ВГЛУБЬ истории? На самом деле, при запросе тиков по времени, тики скачиваются от заданного времени и в БУДУЩЕЕ. Например:
Входные данные (запрос 20000 тиков), время 2016.08.25 20-00-00:
Получаем:
То есть тики получены от запрошенного времени 2016.08.25 20:00:00 в сторону БУДУЩЕГО (последний тик имеет время 2016.08.26 00:02:08)
Я не думаю, что в глубь, а вижу, что "прихватываются" из глубины.
Зачем думать?
Запустите индикатор и сами всё увидите!
И Вы вообще читаете, что написано?