Добрый день. Хочу при тестинге с помощью функции IsTradeAllowed определять закрыт ли рынок или нет в конкретный день.
Однако, у меня для любого дня эта функция возвращает единицу ??
Например, такой код :
datetime Sun=D'2021.11.14 01:01'; // Это воскресенье !
bool rc= IsTradeAllowed(Symbol(), Sun);
printf ("rc=%d",rc);
- В результате печатает единицу
Подскажите пож-ста.
Функция IsTradeAllowed проверяет разрешена ли опция автоторговли.
Для проверки торговых сессий инструмента нужно писать доп.проверки, например:
bool CheckSession(string symbol) { bool check=true; int index=0; datetime begin=0; datetime end=0; datetime time=now_time%(24*60*60); while(check) { check=SymbolInfoSessionTrade(symbol,(ENUM_DAY_OF_WEEK)str_time.day_of_week,index,begin,end); if(check) if(time>=begin && time<=end) return(true); index++; } return(false); }
Без претензий на универсальность... возможно кто-то даст более совершенный пример...
Насчет IsTradeAllowed понял, правда по-моему в реалтайме она у меня работала - если рынок закрыт, то и автоторговля запрещается и ф-ция выдает 0
Но, судя по всему, предложенный Вами вариант мне не подходит - моя задача определить при тестинге, был ли рынок закрыт в конкретный будний день
( из-за праздников) , а в аргументах ф-ции SymbolInfoSessionTrade -только день недели, а не конкретная дата . Конечно, можно сделать массив праздников и их исключать, но может есть другое более красивое решение ?
Насчет IsTradeAllowed понял, правда по-моему в реалтайме она у меня работала - если рынок закрыт, то и автоторговля запрещается и ф-ция выдает 0
Но, судя по всему, предложенный Вами вариант мне не подходит - моя задача определить при тестинге, был ли рынок закрыт в конкретный будний день
( из-за праздников) , а в аргументах ф-ции SymbolInfoSessionTrade -только день недели, а не конкретная дата . Конечно, можно сделать массив праздников и их исключать, но может есть другое более красивое решение ?
Задавался тоже таким вопросом, видимо проще составить список праздников.
Иногда еще список критических новостей даже делали тоже массивом из файла.
Конкретнее, именно при тестинге ( не в реалтайме) мне нужно узнать, был ли в предыдущий рабочий день закрыт рынок ( из-за праздника).Судя по всему, придется делать массив праздников - встроенные функции не помогут.
Если вчера был будний день, но не было котировок (или сессия была короче, чем обычно), значит был праздник.
Но надежнее с календарем, конечно.
можно делать БИТОВУЮ КАРТУ по минуткам на год вперёд.
прямо 1 января - берём календарь, 1440 минут в день, умножаем на 365 = 65 килобайт :-)
заполняем еденичками, потом нолями отмечаем сб/вск. Потом всемирные праздники, потом национальную для США индейку, японский день банкира и швейцарский день труда..и т.д.
расписания праздников в общем известны, и наверное можно брать готовое с какой-нить wikipedia
Добрый день. Хочу при тестинге с помощью функции IsTradeAllowed определять закрыт ли рынок или нет в конкретный день.
Однако, у меня для любого дня эта функция возвращает единицу ??
Например, такой код :
datetime Sun=D'2021.11.14 01:01'; // Это воскресенье !
bool rc= IsTradeAllowed(Symbol(), Sun);
printf ("rc=%d",rc);
- В результате печатает единицу
Подскажите пож-ста.
https://docs.mql4.com/ru/check/istradeallowed
IsTradeAllowed
Возвращает информацию о возможности торговли при помощи экспертов.
- docs.mql4.com
можно делать БИТОВУЮ КАРТУ по минуткам на год вперёд.
прямо 1 января - берём календарь, 1440 минут в день, умножаем на 365 = 65 килобайт :-)
заполняем еденичками, потом нолями отмечаем сб/вск. Потом всемирные праздники, потом национальную для США индейку, японский день банкира и швейцарский день труда..и т.д.
расписания праздников в общем известны, и наверное можно брать готовое с какой-нить wikipedia
Также смотрим и на каждый день заполняем продолжительность клиринга. Осталось всего ничего - предвидеть стоп-торги на ФОРТС.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день. Хочу при тестинге с помощью функции IsTradeAllowed определять закрыт ли рынок или нет в конкретный день.
Однако, у меня для любого дня эта функция возвращает единицу ??
Например, такой код :
datetime Sun=D'2021.11.14 01:01'; // Это воскресенье !
bool rc= IsTradeAllowed(Symbol(), Sun);
printf ("rc=%d",rc);
- В результате печатает единицу
Подскажите пож-ста.