И еще приходиться идти на различные ухищрения, что бы получить тики за конкретный бар. Смотрите сами, что пришлось наваять.
Тиковая история то загружается, то нет. Индикатор может показать всю историю, а может последний день. Брокер Открытие, билд 1210.
И еще приходиться идти на различные ухищрения, что бы получить тики за конкретный бар. Смотрите сами, что пришлось наваять.
Григорий!
Вы в этом индикаторе всё делаете не правильно.
Например:
CopyRates(Symbol(),PERIOD_D1,DaysT-1,1,rt);
rt[0].time - возвращает не правильное время.
Думается, что нужно идти другим путём.
Функция CopyTicks(), при не указанных параметрах from и to, вернёт:
Если параметры from и count не указаны, то в массив ticks_array[] будут записаны все доступные тики, но не более 2000. Параметр flags позволяет задать тип требуемых тиков.
Поэтому, если Вы хотите получить все доступные 2000 тиков по инструменту, просто не указывайте эти параметры.
В структуре MqlTick, есть поле времени, значит у Вас есть ВСЯ исчерпывающая информация.
Если в истории инструмента тиков больше 2000, то нужно делать так.
Берем дату начала жизни фьючерса и от этой даты "забираем" кусочками тики по 2000.
Последний в этом кусочке тик, будет иметь время, которое затем вновь поставите в функцию CopyTiks()
Так, Вы получите всю историю по тикам в инструменте
Я все перепробовал. Мой вариант рабочий. Мне надо получить историю с конкретного дня или с начала. Так вот если передать дату начала на которую нет истории, то скопируться доступные тики и загрузиться вся история. По идее ваш вариант правильный, но по факту он дает последние 2000 тиков.
Вся проблема в том, что индикатор то работает, то нет. Надо несколько раз закидывать его на график, чтобы получить ожидаемый результат. Кстати при большой тиковой истории индикатор будет очень медленно работать. Надо думать как его переделать.
Я Вам написал как нужно сделать.
Проблему c Bars() ещё не исправили
Используйте только CopyTicks()
На Metaquotes-Demo запускаю много раз скрипт
void OnStart( void ) { MqlTick Ticks[]; const int Amount = CopyTicks(Symbol(), Ticks, COPY_TICKS_INFO, D'28.03.2016 01:17' * 1000, 10); if (Amount > 0) Print((string)Amount + ": " + (string)Ticks[0].time + " - " + (string)Ticks[Amount - 1].time); return; }
Результат все время один и тот же - не скачивает тики, откуда идет запрос.
10: 2016.03.28 08:32:44 - 2016.03.28 08:32:54
RefreshRates нет. ChartRedraw не помогает. Как только перезагрузил терминал, все стало нормально
10: 2016.03.28 01:17:02 - 2016.03.28 01:17:05
Как CopyTicks насильно заставить работать так, как она работает после перезагрузки терминала?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Тиковая история то загружается, то нет. Индикатор может показать всю историю, а может последний день. Брокер Открытие, билд 1210.
И еще приходиться идти на различные ухищрения, что бы получить тики за конкретный бар. Смотрите сами, что пришлось наваять.