I noticed backtesting seems to be limited to about 5 years (from 2017 onwards), even though all news events are dowloaded correcly (BIN file is 67mb). Is there a limit to how many events MT5 can handle in memory for backtesting?
mqtrader #: I noticed backtesting seems to be limited to about 5 years (from 2017 onwards), even though all news events are dowloaded correcly (BIN file is 67mb). Is there a limit to how many events MT5 can handle in memory for backtesting?
#property script_show_inputs#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/ru/code/32430inputbool inFromFile = false;
#define CALENDAR_FILENAME "Calendar.bin"// Название файла для чтения/записи Календаря.voidOnStart()
{
CALENDAR Calendar;
if (inFromFile)
Calendar.Load(CALENDAR_FILENAME);
else
{
Calendar.Set(NULL, CALENDAR_IMPORTANCE_NONE, 0, INT_MAX); // Взяли ВЕСЬ календарь.
Calendar.Save(CALENDAR_FILENAME); // > 65 MB.
}
Print(Calendar[0].ToString());
}
Результат.
2007.01.0623:30 USD 1 CFTC Crude Oil Non-Commercial Net Positions(cftc-crude-oil-non-commercial-net-positions), United States(US) | 2.2 K | | 19.8 K |
I just realized that the "Forecast" values start from 2017.05.05, which is why the backtest can only start from that date when running the example. Other values can be used prior to that date.
Thank you once more fxsaber for this very useful library!
Календарь событий прописан значительно вперед в будущее. Поэтому можно и в MT4 использовать напоминалку, предварительно (за месяц до этого, например) сохранив файл из данных MT5.
Для MT4 так и делаю.
Шаги для работы с календарем в MT4.
1. Запустить в MT5 скрипт, который сохранит календарь в Common-файл.
#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/ru/code/32430#define CALENDAR_FILENAME "Calendar.bin"// Название файла для чтения/записи Календаря.voidOnStart()
{
CALENDAR Calendar;
Calendar.Set(NULL, CALENDAR_IMPORTANCE_NONE, 0, INT_MAX); // Взяли ВЕСЬ календарь.
Calendar.Save(CALENDAR_FILENAME, true); // Записали календарь. > 65 MB.
}
2. Загрузить в MT4 календарь из Common-файла.
В качестве примера ниже напоминалка по важным событиям на валютах текущего символа, работающая в MT4.
#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/ru/code/32430#define CALENDAR_FILENAME "Calendar.bin"// Название файла для чтения/записи Календаря.intOnInit()
{
return(!EventSetTimer(1));
}
voidOnTimer()
{
static CALENDAR Calendar;
if (Calendar.GetAmount()) // Если календарь не пустой.
{
staticint Pos = 0;
Pos = Calendar.GetPosAfter(TimeCurrent(), Pos); // Нашли будущие события.Comment(Calendar.ToString(Pos, 5, true)); // Распечатали их.
}
elseif (Calendar.Load(CALENDAR_FILENAME, true)) // Загрузили календарь из файла.
{
string Currencies[2];
// Получили валюты текущего символа.
Currencies[0] = ::SymbolInfoString(_Symbol, SYMBOL_CURRENCY_BASE);
Currencies[1] = ::SymbolInfoString(_Symbol, SYMBOL_CURRENCY_PROFIT);
Calendar.FilterByCurrency(Currencies); // Оставили события по валютам символа.
Calendar.FilterByImportance(CALENDAR_IMPORTANCE_HIGH); // Оставили только важные события.
}
}
После запуска имеем на чарте обновляемую (обратный отсчет) напоминалку по важным событиям на валютах символа прямо в MT4.
Аналогично Календарь может работать и в MT4-Тестере.
Конечно такие труды надо разрабатывать и исправлять и описывать документацию, всем сообществом а не одному человеку. Но почему то администрация и сама не дает таких условии как и не вставляет ссылку на тот же ГитХаб, для правильной организации. Хотя есть же проекты, их использование, почти тот же ГитХаб.
Спасибо! за код, очень интересно читать такой код, честно: перегрузки шаблоны отсутствие комментариев )) чего стоит это творчество, 5 минут думал что это? экземпляр класса или массив с данными. В общем все для развития мозга.
CALENDAR Calendar;Calendar[i].time
Работы, конечно крутые, стоит только понять, как работает
Ваш код, сложно понять, но я так предполагаю что есть конечная сортировка, в коде, выше, но код вероятно в таком случае с ошибками. Не часто но при слиянии массивов конечный массив приходит с ошибками виде отсутствия сортировки, так как самые последние элементы в массиве должны иметь и более дальний период по времени.
This is not done. Contact a specialist.
I noticed backtesting seems to be limited to about 5 years (from 2017 onwards), even though all news events are dowloaded correcly (BIN file is 67mb). Is there a limit to how many events MT5 can handle in memory for backtesting?
Результат.
Первое событие в БД календаря - январь 2007 года.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: Calendar
fxsaber, 2020.12.12 14:18
Календарь событий прописан значительно вперед в будущее. Поэтому можно и в MT4 использовать напоминалку, предварительно (за месяц до этого, например) сохранив файл из данных MT5.
Для MT4 так и делаю.
Шаги для работы с календарем в MT4.
1. Запустить в MT5 скрипт, который сохранит календарь в Common-файл.
2. Загрузить в MT4 календарь из Common-файла.
В качестве примера ниже напоминалка по важным событиям на валютах текущего символа, работающая в MT4.
После запуска имеем на чарте обновляемую (обратный отсчет) напоминалку по важным событиям на валютах символа прямо в MT4.
Аналогично Календарь может работать и в MT4-Тестере.
I keep hitting an issue though, I do the standard download of the calendar file
then set a starttime and get events after this time in a loop for each currency.
Try to paste the sources so that they can be read.
Спасибо за сильные труды полезная вещь.
Конечно такие труды надо разрабатывать и исправлять и описывать документацию, всем сообществом а не одному человеку. Но почему то администрация и сама не дает таких условии как и не вставляет ссылку на тот же ГитХаб, для правильной организации. Хотя есть же проекты, их использование, почти тот же ГитХаб.
Спасибо! за код, очень интересно читать такой код, честно: перегрузки шаблоны отсутствие комментариев )) чего стоит это творчество, 5 минут думал что это? экземпляр класса или массив с данными. В общем все для развития мозга. Работы, конечно крутые, стоит только понять, как работаетНеплохо бы если функция сортировала по времени весь массив после слияния
Неплохо бы если функция сортировала по времени весь массив после слияния
Приведите пример, где так не происходит.
Приведите пример, где так не происходит.
Ваш код, сложно понять, но я так предполагаю что есть конечная сортировка, в коде, выше, но код вероятно в таком случае с ошибками. Не часто но при слиянии массивов конечный массив приходит с ошибками виде отсутствия сортировки, так как самые последние элементы в массиве должны иметь и более дальний период по времени.