Инициализация эксперта при тестировании - страница 2

 


Спасибо, видимо я совершенно неправильно пользовался поиском.


Правильно ли я понял что я вряд ли смогу иметь доступ ко всей имеющейся тайм-серии из функции init() на момент "до начала тестирования" ?

Дело все в том, что мне надо оптимизировать некие коэффициенты, которые рассчитываются один раз за весь период работы советника, я думал что это можно сделать через функцию init() но теперь получается мне нужно искать другие способы, например те же глобальные переменные ?

Простите за возможно гулпые вопросы, пользуюсь всеми доступными средствами как умею и на форум с вопросами лезу только тогда когда совсем не получается. Я с такими вещами просто пока еще не сталкивался в силу ограниченности своего опыта.


Заранее благодарен за ответ.

 
Loknar:

Правильно ли я понял что я вряд ли смогу иметь доступ ко всей имеющейся тайм-серии из функции init() на момент "до начала тестирования" ?
Дело все в том, что мне надо оптимизировать некие коэффициенты, которые рассчитываются один раз за весь период работы советника, я думал что это можно сделать через функцию init()

А что, коэффициенты должны оптимизироваться на "будущей" истории?

Надо начинать тестирование, например, за год до начала торговли.
Для этого в старте проверяйте сколько прошло времени с начала истории и когда информации будет достаточно считайте коэффициенты и начинайте торговлю.
 
komposter:
А что, коэффициенты должны оптимизироваться на "будущей" истории?

Надо начинать тестирование, например, за год до начала торговли.
Для этого в старте проверяйте сколько прошло времени с начала истории и когда информации будет достаточно считайте коэффициенты и начинайте торговлю.


Правильно ли я Вас понял, что те Shift бары, которые используются в функции init() должны быть указаны руками таким образом, чтобы быть обязательно больше, нежели самый первый бар, который я выберу в качестве начала оптимизации (тестирования) ? Вот начало кода одной из "разовых функций" :

void Norm(int input1, int shift1) {
   for (int X2=shift1;X2<BarsPattern+shift1;X2++) NormArray[X2] = BulkInput(input1, X2);

Т.е. тут я должен буду учесть что параметр shift1 равен Bars-за-период-тестирования + 1 ? А BarsPattern должен быть равен не

BarsPattern=Bars-NotCounted;
А какому-то фиксированному заранее известному значению так ?
 
Loknar:

Правильно ли я Вас понял, что те Shift бары, которые используются в функции init() должны быть указаны руками таким образом, чтобы быть обязательно больше, нежели самый первый бар, который я выберу в качестве начала оптимизации (тестирования) ?

Не совсем понял вопрос. Мне проще объяснить так:
bool initialized = false;
 
int start()
{
   if ( Bars < Необходимое_для_расчетов_количество_баров ) return(0);
 
   if ( !initialized )
   {
      разовый_расчет_и_сбор_статистики();
      initialized = true;
   }
 
   код_эксперта();
}
 
komposter:
Не совсем понял вопрос. Мне проще объяснить так:


Оригинальный формат объяснения, спасибо :)


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