Ошибки, баги, вопросы - страница 2585
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
просто думаю: а вдруг будет нужен собственный хэндл...
были такие задачи, но не помню что-то
В Init_Sync такая необходимость есть.
пост 25786
Методом случайного тыка, определил нормальное копирование в mql-овский string, строку типа const wchar_t*
С таким параметром в функции memcpy, в mql стали поступать ровные строки, и без утечек.
То есть вместо 2 байт sizeof(wchar_t), использовал 3 байта.
Но что интересно самописная литеральная строка, корректно передаётся с sizeof(wchar_t).mql-овский string начал корректно принимать указатель на строку const wchar_t*
Разве это нормально?
Методом случайного тыка, определил нормальное копирование в mql-овский string, строку типа const wchar_t*
С таким параметром в функции memcpy, в mql стали поступать ровные строки, и без утечек.
То есть вместо 2 байт sizeof(wchar_t), использовал 3 байта.
Но что интересно самописная литеральная строка, корректно передаётся с sizeof(wchar_t).mql-овский string начал корректно принимать указатель на строку const wchar_t*
Разве это нормально?
Почему используется memcpy, вместо нормального wcscpy ?
Почему используется memcpy, вместо нормального wcscpy ?
memcpy использовался как показано в примере статьи Рената.
Используя другие функции копирования, вызывают так же проблемы.
Поведение с этими функциями описаны в этом посте и в этом
Уже перепробованы все возможные функции копирования.
void OnInit()
{
datetime first_date;
SeriesInfoInteger(_Symbol,_Period,SERIES_FIRSTDATE,first_date);
int bars=Bars(_Symbol,_Period);
Print("First date ",first_date," - ",bars," bars");
datetime time[];
CopyTime(_Symbol,PERIOD_M15,D'2015.01.01',100000,time);
Print("rows=",100000," =? ",ArraySize(time));
Print("Load data from ",D'2015.01.01'," =? ",time[0]," to ",time[ArraySize(time)-1],", rows=",100000," =? ",ArraySize(time));
//---
}
void OnTick(){
}
считывает около 37 тыс бар. При запуске в терминале считывает все 100000 бар.
Попробовал добавить код подкачки данных с сервера по https://www.mql5.com/ru/docs/series/timeseries_access#synchronized
Но ничего не изменилось.
Как в тестере считать эти 100000 бар?
Как считать эти 100000 бар?
Для начала прочитайте статью https://www.mql5.com/ru/articles/239
Для начала прочитайте статью https://www.mql5.com/ru/articles/239
Прочитал. Но ответа, почему CopyTime в тестере считало 30 тыс бар вместо 100 тыс бар не увидел. При этом в терминале все считывает правильно.
История по используемым инструментам закачивается тестером из клиентского терминала (не с торгового сервера!) автоматически при первом обращении к данному инструменту.
Агент тестирования закачивает только недостающую историю с небольшим запасом, чтобы обеспечить необходимые данные на истории для расчета индикаторов на момент начала тестирования. Минимальный объем истории при скачивании с торгового сервера для таймфреймов D1 и меньше составляет один год. Таким образом, если запускается тестирование на интервале 2010.11.01-2010.12.01 (тестирование на интервале в один месяц) с периодом M15 (каждый бар равен 15 минутам), то у терминала будет запрошена история по инструменту за весь 2010 год. Для таймфреймов Weekly будет запрошена история в 100 баров, что составляет примерно два года (в году 52 недели). Для тестирования на месячном таймфрейме Monthly агент запросит историю за 8 лет (12 месяцев * 8 лет = 96 месяцев).
Резюме
В настройках тестирования поставьте месячный таймфрейм
История по используемым инструментам закачивается тестером из клиентского терминала (не с торгового сервера!) автоматически при первом обращении к данному инструменту.
Агент тестирования закачивает только недостающую историю с небольшим запасом, чтобы обеспечить необходимые данные на истории для расчета индикаторов на момент начала тестирования. Минимальный объем истории при скачивании с торгового сервера для таймфреймов D1 и меньше составляет один год. Таким образом, если запускается тестирование на интервале 2010.11.01-2010.12.01 (тестирование на интервале в один месяц) с периодом M15 (каждый бар равен 15 минутам), то у терминала будет запрошена история по инструменту за весь 2010 год. Для таймфреймов Weekly будет запрошена история в 100 баров, что составляет примерно два года (в году 52 недели). Для тестирования на месячном таймфрейме Monthly агент запросит историю за 8 лет (12 месяцев * 8 лет = 96 месяцев).
Резюме
В настройках тестирования поставьте месячный таймфрейм
Понятно - экономия ресурсов.
А что делать если нужно тестирование на М15 проводить, но данные нужны за несколько лет (чтобы нейросеть обучать)? В своих файлах бары хранить?
memcpy использовался как показано в примере статьи Рената.
Используя другие функции копирования, вызывают так же проблемы.
Поведение с этими функциями описаны в этом посте и в этом
Уже перепробованы все возможные функции копирования.
Что знаете о совместном доступе к данным из нескольких потоков?