Ошибки, баги, вопросы - страница 2586

 
Slava:

Для начала прочитайте статью https://www.mql5.com/ru/articles/239

Прочитал. Но ответа, почему CopyTime(_Symbol,PERIOD_M15,D'2015.01.01',100000,time); в тестере считало 30 тыс бар вместо 100 тыс бар не увидел. При этом в терминале все считывает правильно.
 
elibrarius:
Прочитал. Но ответа, почему CopyTime в тестере считало 30 тыс бар вместо 100 тыс бар не увидел. При этом в терминале все считывает правильно.

История по используемым инструментам закачивается тестером из клиентского терминала (не с торгового сервера!) автоматически при первом обращении к данному инструменту.

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


Резюме

В настройках тестирования поставьте месячный таймфрейм

 
Slava:

История по используемым инструментам закачивается тестером из клиентского терминала (не с торгового сервера!) автоматически при первом обращении к данному инструменту.

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


Резюме

В настройках тестирования поставьте месячный таймфрейм

Понятно - экономия ресурсов.

А что делать если нужно тестирование на М15 проводить, но данные нужны за несколько лет (чтобы нейросеть обучать)? В своих файлах бары хранить?

 
Roman:

memcpy использовался как показано в примере статьи Рената.
Используя другие функции копирования, вызывают так же проблемы.
Поведение с этими функциями описаны в этом посте  и в этом
Уже перепробованы все возможные функции копирования.

Что знаете о совместном доступе к данным из нескольких потоков?

 
Ilyas:

Что знаете о совместном доступе к данным из нескольких потоков?

В коде используется  lock_guard
Но если его закомментировать, то не каких изменений не наблюдается.

recursive_mutex mtx;
const wchar_t* data;
bool success ;
                
while (condition)
{
        
   if (DataAvailable())
   {
      lock_guard<recursive_mutex> locker(mtx);
      success = ReadData();
   }
        
   if (success)
   {
      lock_guard<recursive_mutex> locker(mtx);
      data = getData();
                
      memcpy(out, data, wcslen(data) * (sizeof(char)*3));
   }
        
   Sleep(1);
}
Всё же начало течь, ну это понятно почему, из за не правильного sizeof
Файлы:
222.PNG  13 kb
 
elibrarius:

Понятно - экономия ресурсов.

А что делать если нужно тестирование на М15 проводить, но данные нужны за несколько лет (чтобы нейросеть обучать)? В своих файлах бары хранить?

нужно просто подождать:

input int InpBars = 100000;

void OnTick()
{  int bars = Bars(_Symbol, _Period);
   if(bars < InpBars) return;

}
 
elibrarius:

Понятно - экономия ресурсов.

А что делать если нужно тестирование на М15 проводить, но данные нужны за несколько лет (чтобы нейросеть обучать)? В своих файлах бары хранить?

Какие проблемы? Вы можете обращаться к данным любого таймфрейма.
 
Slava:
Какие проблемы? Вы можете обращаться к данным любого таймфрейма.

Если тестирование запущу на М15, т.к. торговля в тестере будет на М15, то 100000 бар из истории я не смогу считать. А нужно тестировать торговлю именно на М15.

Если запускать на Мonthly, чтобы иметь историю на 8 лет, то не смогу торговать чаще чем раз в месяц.

 
elibrarius:

Если тестирование запущу на М15, т.к. торговля в тестере будет на М15, то 100000 бар из истории я не смогу считать. А нужно тестировать торговлю именно на М15.

Если запускать на Мonthly, чтобы иметь историю на 8 лет, то не смогу торговать чаще чем раз в месяц.

Почему?

 
Alexey Viktorov:

Почему?

По ценам открытия тестирую. Тик будет приходить раз в месяц.
Если по всем реальным тикам запускать, то можно с сильной пределкой и усложнением кода. Так же будет перерасход ресурсов. Думаю что проще с файлов бары считывать.
Причина обращения: