Как задать количество доступных баров истории в тестере стратегий ?

 

Всех приветствую.

Столкнулся с такой проблемой - при запуске в тестере стратегий  функции запроса данных часто возвращают ошибку.

Стал проверять, выяснилось следующее. Использую функцию:

SeriesInfoInteger(Symbol(),0,SERIES_BARS_COUNT);

Если ставлю тестер на последний месяц, получаю  7216

Если ставлю тестер на год, получаю  6217
 

Дальнейшая загрузка данных в классы-таймсерии - позволяет загрузить только указанное количество баров.  

При  этом запрос этой же функции при реальном запуске советника возвращает 90134, и с сервера можно подгрузить все эти бары.

Вопрос: как задать в тестере стратегий количество используемых данных (мне нужно, чтобы при запуске теста за последний год можно было бы использовать данные хотя бы за последние 14-15 месяцев) ?

И если можно, то что я делаю не так ?  

 

Что, никто не сталкивался с подобным явлением ?

Хреново.

Придется делать класс-хранилище данных, чтобы в любой момент иметь "под рукой" историю котировок.. 

 
Laryx: Что, никто не сталкивался с подобным явлением ?
 Да была пара обсуждений. Результатов не помню. Воспользуйтесь поиском.
 

Спасибо, Yedelkin, видимо, я плохо ищу - не смог найти.

Сейчас уже наполовину написал класс-хранилище данных таймсерий, с которым данной проблемы - не будет. 

 

Самим задать количетво баров для тестера нельзя. В Вашем случае можно учитывать описанное в статье Основы тестирования в MetaTrader 5

Агент тестирования закачивает только недостающую историю с небольшим запасом, чтобы обеспечить необходимые данные на истории для расчета индикаторов на момент начала тестирования. Минимальный объем истории при скачивании с торгового сервера для таймфреймов D1 и меньше составляет один год. Таким образом, если запускается тестирование на интервале  2010.11.01-2010.12.01 (тестирование на интервале в один месяц)  с периодом M15 (каждый бар равен 15 минутам), то у терминала будет запрошена история по инструменту за весь 2010 год. Для таймфреймов Weekly будет запрошена история в 100 баров, что составляет примерно два года (в году 52 недели). Для тестирования на месячном таймфрейме Monthly агент запросит историю за 8 лет (12 месяцев * 8 лет = 96 месяцев).

 

Я дополню Рашида.

Если запустить тестирование на недельках, то у Вас в запасе будет данных на 2 года. А так как в процессе тестирования Вы можете обращаться к данным любых таймфреймов, то, например, часовок у Вас будет аж 6000 баров перед началом тестирования

 

Всем привет! хотел с Вами посоветоваться по поводу архива котировок,есть расхождения в моих наблюдениях

может быть я неправ но мне кажеться так не может быть,если я не прав поправьте. Сдесь представлен график на 4 часа

Далее представлен график на 1 день.Посмотрите по внимательнее может такое быть нет? 

Файлы:
 
Rosh:

Самим задать количетво баров для тестера нельзя. В Вашем случае можно учитывать описанное в статье Основы тестирования в MetaTrader 5

Спасибо,  Rosh, за консультацию. Жаль, что тестер не использует всю, закачанную терминалом историю.

Ну, да голь на выдумку хитра.  

В настоящее время я заканчиваю написание класса - хранилища CMQLStore, который  будет выдавать таймсерии за любой промежуток времени, также предусматривается возможность подмены классов таймсерий Стандартной Библиотеки так, чтобы эти классы могли выбирать, запрашивать ли данные у сервера, или у Хранилища.

 
Laryx:

Спасибо,  Rosh, за консультацию. Жаль, что тестер не использует всю, закачанную терминалом историю.


"Жаль, что мы не услышали начальника транспортного цеха" (ц)

Как это не использует? Сколько укажете - столько и использует (нам лишнего не надо)

 
stringo:

"Жаль, что мы не услышали начальника транспортного цеха" (ц)

Как это не использует? Сколько укажете - столько и использует (нам лишнего не надо)

Ну не знаю... 

Ситуация проста. Есть советник. Он работает на часовом таймфрейме, и для определения SL и TP просматривает торговые сессии за несколько последних месяцев. Если его запускать на годовом периоде - ему нужны данные за полтора года.  Я столкнулся с тем, что в тестере стратегий запрос этих данных часто возвращает ошибку, хотя на сервере имеются данные за гораздо больший период, и терминал их уже давно все выкачал. 

Для решения проблемы и был написан специальный класс-хранилище  CMQLStore.

Сейчас этот класс  уже почти закончен, большая часть его методов оттестирована. После написания - советник сможет запрашивать данные как у терминала, так у этого класса, то есть, если терминал возвратит ошибку - есть возможность взять исторические данные из хранилища. Соответственно, пишем класс-потомка от CSeries Стандартной Библиотеки, переопределяем в нем метод Refresh - и советникам становится доступна вся история независимо от того, что возвращает терминал. 

 

Устанавливайте начало теста с того времени,с которого вам необходимо получать данные.

В коде отдельно устанавливайте дату начала торговли.

 К примеру

1.Начало тестирования 2010.01.01.

2.Начало торговли 2011.07.01.

 

Будут у вас подготовленные данные. 

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
Причина обращения: