Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Часто выкладываешь исходный код? Узнай, как это делать правильно!
Murad Ismayilov
1816
Murad Ismayilov 2012.09.08 04:12 

Сегодня столкнулся с этой проблемой, когда отлаживал советник, подстраивающийся на рынок последнего года на M5.

Пока рынок в пятницу работал, "вживую", все было нормально. Но уже в субботу остается только тестер! В тестере советник работать отказался - мало исторических данных. Отладка показала, что переменная Bars, как и функция iBars в тестере возвращают значение 1000.

Кто подскажет, как этим бороться? Это "фича" тестера или где-то регулируется в настройках?

IgorM М
4801
IgorM М 2012.09.08 04:15  
wmlab:Кто подскажет, как этим бороться? Это "фича" тестера или где-то регулируется в настройках?


по видимому здесь нужно побольше баров забить, ну и естественно история должна быть полностью подгружена:

Murad Ismayilov
1816
Murad Ismayilov 2012.09.08 04:20  

Вот мои настройки:

Но эти настройки касаются "живых" графиков! А в графике тестера баров только 1000.

IgorM М
4801
IgorM М 2012.09.08 04:33  
wmlab:

Вот мои настройки:

Но эти настройки касаются "живых" графиков! А в графике тестера баров только 1000.

создал эксперт:

extern int N = 25000;
int start(){
   datetime t = Time[N];
   double   C = Close[N];
   Comment("Время N баров назад = ",TimeToStr(t)," , Close[",N,"] = ",DoubleToStr(C,Digits));
return(0);
}

в тестере, в режиме визуализации выводит: Время N баров назад = 1970.01.01 00:00, Close[25000] = 0.00000

тогда нужно самостоятельно из .hst данные брать, вот https://www.mql5.com/en/code/9231

Murad Ismayilov
1816
Murad Ismayilov 2012.09.08 05:16  

Вопрос остается в силе. Набросал тест:

int start()
{
   int ib = iBars(NULL, 0);
   Print ("iBars = ", ib);
   for (int index = 250; index <= 1500; index += 250)
   {
      double cl = iClose(NULL, 0, index);
      Print ("iClose(", index, ") = ", cl);  
   }
   
   return(0);
}

Результат:

Баров в тестере только... 1001

PS. Насколько я понял из документации, это нормальное поведение тестера MT4 - советник получает на старте окно в 1000 баров, которое будет расти по мере моделирования последующих баров. Вопрос - можно это стартовое окно увеличить через настройки? Если нет, придется отказаться в тестере от работы с графиком напрямую и читать котировки из файла, например, csv. Это нежелательно, конечно.

ilunga
744
ilunga 2012.09.08 06:34  
wmlab:

Вопрос остается в силе. Набросал тест:

Результат:

Баров в тестере только... 1001

PS. Насколько я понял из документации, это нормальное поведение тестера MT4 - советник получает на старте окно в 1000 баров, которое будет расти по мере моделирования последующих баров. Вопрос - можно это стартовое окно увеличить через настройки? Если нет, придется отказаться в тестере от работы с графиком напрямую и читать котировки из файла, например, csv. Это нежелательно, конечно.

Больше вроде сделать нельзя

Но чтобы не мучиться с чтением котировок вы можете сделать заплатку

запускать тестирование с нужного вам момента (условно говоря с 2005 года), а в начале эксперта в OnTick добавить условие, что если дата меньше 2010 года, то выход. Тогда сначала будет накоплена история, а уже потом начнет работу советник

Victor Nikolaev
Модератор
14085
Victor Nikolaev 2012.09.08 08:04  
wmlab:

Вопрос остается в силе. Набросал тест:

Результат:

Баров в тестере только... 1001

PS. Насколько я понял из документации, это нормальное поведение тестера MT4 - советник получает на старте окно в 1000 баров, которое будет расти по мере моделирования последующих баров. Вопрос - можно это стартовое окно увеличить через настройки? Если нет, придется отказаться в тестере от работы с графиком напрямую и читать котировки из файла, например, csv. Это нежелательно, конечно.


Максимальное число баров при запуске советника в тестере 1001 бар (если конечно есть в истории такое количество). Разработчики сочли что этого достаточно.

При формировании новых баров их количество увеличивается

Murad Ismayilov
1816
Murad Ismayilov 2012.09.08 08:46  
Vinin:


Максимальное число баров при запуске советника в тестере 1001 бар (если конечно есть в истории такое количество). Разработчики сочли что этого достаточно.

При формировании новых баров их количество увеличивается

Вроде картина с тестером прояснилась, спасибо!
VNN
129
VNN 2012.09.09 05:52  
Vinin:


Максимальное число баров при запуске советника в тестере 1001 бар (если конечно есть в истории такое количество). Разработчики сочли что этого достаточно.

При формировании новых баров их количество увеличивается

1001 бар для начала сойдёт. Тем более, если нужно можно и подсобрать изтории... если она качественная.

Сейчас с сервера Metaquotes грузится история с пропуском с января по август этого года.

Ihor Herasko
8470
Ihor Herasko 2012.09.09 11:59  

Если изначально нужно большее количество баров, то можно сделать так:

1. Указать в коде советника дату начала работы.

2. Запустить тестирование с даты, расположенной намного раньше, чем желаемое начало теста (количество нужных баров можно посчитать). Если не требуется визуализация, то все...

3. При визуализации в начале тестирования нажать кнопку "Пропустить до", где указать дату начала тестирования, равную той, которая записана в коде эксперта.

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий