- Основные понятия календаря
- Получение списка и описаний доступных стран
- Запрос видов событий по странам и валютам
- Получение описания вида события по идентификатору
- Получение записей о событиях по странам или валютам
- Получение записей о событиях конкретного вида
- Чтение записи о событии по идентификатору
- Отслеживание изменений событий по стране или валюте
- Отслеживание изменений событий по типу
- Фильтрация событий по множеству условий
- Перенос базы календаря в тестер
- Торговля по календарю
Получение списка и описаний доступных стран
Получить полный список стран, события по которым транслируются в календаре, можно с помощью функции CalendarCountries.
int CalendarCountries(MqlCalendarCountry &countries[])
Функция заполняет переданный по ссылке массив countries структурами MqlCalendarCountry. Массив может быть динамическим или фиксированного достаточного размера.
В случае успеха функция возвращает количество полученных с сервера описаний стран или 0 при ошибке. Среди возможных кодов ошибок в _LastError могут встретиться, в частности, 5401 (ERR_CALENDAR_TIMEOUT, превышение лимита запроса по времени) или 5400 (ERR_CALENDAR_MORE_DATA, если размер фиксированного массива недостаточен для получения описаний всех стран). В последнем случае система скопирует только то, что уместилось.
Напишем простой скрипт CalendarCountries.mq5, который получает полный список стран и выводит его в журнал.
void OnStart()
|
Вот пример результата.
CalendarCountries(countries)=23 / ok
|
Важно отметить, что идентификатор 0 (код "WW" и псевдо-валюта "ALL") соответствует общемировым событиям (касающихся многих стран, например, встречи G7, G20), а валюта "EUR" связана с несколькими странами Евросоюза, доступными в календаре (как видно, представлена не вся зона Евро). Также и сам Евросоюз имеет обобщающий идентификатор 999.
Если вас интересует конкретная страна, можно проверить её наличие по цифровому коду согласно стандарту ISO 3166-1. В частности, в журнале выше эти коды выведены в первом столбце (поле id).
Получить описание одной страны по её идентификатору, заданному в параметре id, позволяет функция CalendarCountryById.
bool CalendarCountryById(const long id, MqlCalendarCountry &country)
В случае успеха функция вернет true и заполнит поля структуры country.
Если страна не найдена, получим false, а в _LastError — код ошибки 5402 (ERR_CALENDAR_NO_DATA).
Пример использования данной функции смотрите в разделе Получение записей о событиях по странам или валютам.